Rate Limits
The API enforces two independent, additive rate limits to resist abuse, enumeration, and accidental overload.
| Limit | Scope | Window | On exceed |
|---|---|---|---|
| 600 requests | per clientId | rolling 60 seconds | RATE_LIMITED (HTTP 429) |
| 2000 requests | per IP address | rolling 60 seconds | RATE_LIMITED (HTTP 429) |
The per-clientId limit is additional to and independent of the global
per-IP limit. A request must satisfy both to proceed. Before an app is
authenticated, the per-client limiter falls back to keying by IP.
Response when limited
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded.",
"retryAfterSeconds": 42
}
}Best practices
- Back off for at least
retryAfterSecondsbefore retrying. - Cache responses where appropriate rather than re-fetching unchanged data.
- Paginate efficiently — use the maximum
pageSize(100) for large lists. - Spread load — avoid bursts; smooth your request rate across the window.
Rate-limit rejections happen before authentication and consent checks, so a limited request never begins a data operation.