Skip to content

Conventions

Rate limits

Each API key may make 500 requests a minute. Every response says how many are left, and a 429 says exactly how long to wait.

Default limit
500 requests per minute, per key
Window
One minute

The limit

The limit applies per API key: two integrations with their own keys do not slow each other down. Use in the app does not count against it. 500 a minute is the default and may change; read the headers rather than hard-coding the number.

Requests without a valid key — no Authorization header, a malformed key, or a key that was revoked — count against separate, much smaller budgets per client address, so a broken integration is slowed down quickly. Fix the key rather than retrying: those requests answer 401 and then 429.

Rate-limit headers

Every response carries the state of the current window:

Response headers
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 497
X-RateLimit-Reset: 1791623520
X-Request-Id: 5f0c2e7a-9b4d-4a1c-8e3f-6d2b9a7c1e05
X-API-Version: 2026-10-10
HeaderMeaning
X-RateLimit-LimitRequests allowed in the window.
X-RateLimit-RemainingRequests left in the window.
X-RateLimit-ResetWhen the window resets, as a Unix timestamp in seconds.
Retry-AfterOn 429 only: seconds to wait.

When you go over

Requests over the limit are refused with 429 rate_limited and are not applied. Wait the number of seconds in Retry-After — also in details.retry_after — then carry on.

429 Too Many Requests
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 23
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1791623520

{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests.",
    "details": { "retry_after": 23 },
    "request_id": "5f0c2e7a-9b4d-4a1c-8e3f-6d2b9a7c1e05"
  }
}

Staying under the limit

  • Subscribe to webhooks instead of polling for changes.
  • Page with limit=100 — one request instead of two.
  • Ask for what changed: updated_at[gte]=<your last sync> on any list.
  • For bulk jobs, slow down when X-RateLimit-Remaining runs low, rather than waiting for the 429.
  • Honour Retry-After exactly. Hammering a 429 does not shorten the wait.

The error-handling client on the Errors page retries a 429 after Retry-After.