Rate limits
Limits are applied per client_id, across all of its tokens and source IPs.
| Endpoint | Limit |
|---|---|
POST /oauth/token |
10 requests per minute |
All /v1/* endpoints |
60 requests per minute |
A sync that fetches pages of 500 tasks stays well within these limits. If your use case needs more, contact support.
Headers
Section titled “Headers”Every /v1/* response reports your budget:
| Header | Meaning |
|---|---|
X-RateLimit-Limit |
Requests allowed in the current one-minute window. |
X-RateLimit-Remaining |
Requests left in the window. |
Retry-After |
Only on 429: seconds to wait before the next request. |
When you are throttled
Section titled “When you are throttled”A throttled request returns 429 with the standard error body:
{ "error": { "code": "rate_limited", "message": "Rate limit exceeded. Retry after 12 seconds.", "request_id": "req_01J8ZQ4K6M2V7T9B" }}Wait Retry-After seconds, then continue. Tips to stay under the limit:
- Cache the access token for its full lifetime.
- Use
limit=500when syncing to reduce the number of pages. - Filter by
location_id,mvaorvehicle_idinstead of downloading everything and filtering locally. - Spread scheduled jobs across the minute instead of starting them all at
:00.