Rate Limits
Request limits per API key, how to read the rate-limit headers, and how to handle them gracefully.
Default Limits
| Plan | Requests / minute |
|---|---|
| Standard | 120 |
| Enterprise | 600 |
Limits apply per API key, not per organization — separate keys have separate budgets.
Rate Limit Headers
Every response includes headers describing your current limit status:
Response headers
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1738404600Handling 429s
Exceeding your limit returns an HTTP 429 Too Many Requests response. Respect the Retry-After header before retrying:
429 response
{
"success": false,
"data": null,
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after the interval in the Retry-After header."
}
}Back off exponentially
On a 429, wait at least the duration in
Retry-After, then back off exponentially on repeated limit hits rather than retrying immediately in a tight loop.Best Practices
- Batch reads where possible instead of polling individual records in a loop.
- Prefer webhooks over polling for anything event-driven.
- Cache list responses that don’t need to be real-time.