Rate limits

How the public API rate limits requests, which headers to read, and how to handle 429 responses.

Policy

Every /v1 endpoint is rate limited per API key. When you exceed the limit, requests return 429 Too Many Requests until the limit resets. The exact limits may change over time, so do not hard-code them: read the rate limit headers on each response to see your current budget, and design clients to back off on 429.The limit applies to requests, not files: one Assess call and one job-flow call count the same.

Rate limit headers

Every response includes the current limit and how many requests remain in the window:
RateLimit-Limit: 100
RateLimit-Remaining: 87
A rejected request additionally carries a Retry-After header with the number of seconds until the window resets.

Handling 429 responses

A rate-limited response uses the standard error envelope with code: rate_limited and a retryAfter field mirroring the header:
{
  "code": "rate_limited",
  "message": "Rate limit exceeded. Please retry later.",
  "retryAfter": 42
}
Wait retryAfter seconds before retrying rather than retrying immediately. For Assess, send an Idempotency-Key so a retried upload never creates a duplicate job. To reduce request volume while waiting for results, prefer ?wait=true long-polling on Get job over tight polling loops.
Pixel Systems - Rate limits