Rate limits
How many requests a member can send, the headers that count them and what to do at the limit.
Overview
Each workspace member can make 2,500 requests an hour, counted across all of that member's keys, and no more than 10 in one second.
Rate limit headers
A 200 or 201 answer carries three headers, and so does a 403 ip-not-allowed on a read. No other error carries them.
| Header | Meaning |
|---|---|
X-RateLimit-Requests-Limit | Requests allowed per hour |
X-RateLimit-Requests-Remaining | Requests left in the current hour |
X-RateLimit-Requests-Reset | When the hour ends, in UTC epoch milliseconds |
curl -s -o /dev/null -D - https://attia.app/api/v1/jobs \ -H "Authorization: Bearer $ATTIA_API_KEY" | grep -i x-ratelimitx-ratelimit-requests-limit: 2500x-ratelimit-requests-remaining: 2487x-ratelimit-requests-reset: 1791637200000Over the limit
Over the limit, the API answers 429 with the code rate-limited and a Retry-After header in seconds. Wait that long before the next request.
HTTP/2 429content-type: application/problem+jsonretry-after: 37Stay under the limit
Page with the largest limit you can use, up to 100, and poll with updated_since instead of reading every item again. Pagination shows both.