Limits
| Endpoint category | Limit |
|---|---|
All read endpoints (/v1/scores, /v1/recommendations, /v1/discovery) | 60 requests per minute |
429 response until the window resets.
Rate limit headers
When a request is rate limited, the429 response includes headers to help you determine when to retry:
| Header | Description |
|---|---|
Retry-After | Seconds until the current window resets |
X-RateLimit-Limit | Maximum requests allowed per window |
X-RateLimit-Remaining | Requests remaining in the current window (always 0 on a 429) |
X-RateLimit-Reset | Unix timestamp (seconds) when the window resets |
Example 429 response
Handling rate limits
Respect the Retry-After header
Respect the Retry-After header
When you receive a
429, wait the number of seconds specified in Retry-After before retrying. Do not retry immediately.Use exponential backoff
Use exponential backoff
If you are making many requests in sequence, add exponential backoff with jitter. Start with a 1-second delay, double it on each retry, and add a random component to avoid thundering herd effects.
Reduce request frequency
Reduce request frequency
If you consistently hit rate limits, consider caching responses on your side. Assessment scores and recommendations change infrequently — polling once every 5-15 minutes is sufficient for most integrations.

