Skip to main content
Each API key has its own hourly request limit, set when you create the key: 1,000 requests an hour unless you choose another, up to 100,000. Past it, the API answers 429. The hour is a sliding window. For a key it is kept by the minute: a request counts until the minute it was made in is an hour old, so for 60 to 61 minutes. Without a key, a request counts for 3,600 seconds. Every request the key is allowed to make counts, whatever the endpoint and whatever its answer; one refused for a missing scope does not. A key’s rate_limit is in GET /api/v1/api-keys/, and a key with the admin scope can change it with PATCH /api/v1/api-keys/{id}/. A value outside 1 to 100,000 is refused with 400, naming rate_limit.

Headers

Every answer to a request with a key carries the state of its limit:

When you hit it

The API answers 429 Too Many Requests with a Retry-After header, in seconds:
Wait Retry-After seconds, then retry. The Python SDK waits and retries by itself, up to 3 times. See Errors for a retry loop.

Stay under it

  • Use webhooks instead of polling. One webhook per job replaces every status check.
  • Poll gently. If you poll, every 5 to 30 seconds is enough. The SDK starts at 2 seconds and backs off to 30.
  • Page with the largest page. Read results with limit=100.
  • Batch your input. One job with 50 profiles is one create request and one set of polls; 50 jobs are 50.