Core concepts
Rate limits
Each key has a per-second rate and a daily quota. The daily quota resets at 00:00 UTC. Both apply before permission checks, so throttling protects the platform regardless of scope.
When you exceed a limit you receive 429 Too Many Requests with a Retry-After header (seconds to wait, minimum 1). For per-second limits this is the time to the next window; for the daily quota it is the time to the next UTC midnight.
Response headers
| Header | When | Description |
|---|---|---|
| Retry-After | On 429 | Seconds to wait before retrying. |
| X-RateLimit-Limit | On success | Your per-second ceiling. |
| X-RateLimit-Remaining | On success | Per-second calls left in the current window. |
The X-RateLimit-* headers appear on successful responses only; a 429 carries just Retry-After. There is no remaining header for the daily quota. Retry on 429 with exponential backoff; honor Retry-After as the floor.
Throttled429 · limit
# HTTP/1.1 429 Too Many Requests
# Retry-After: 1
{
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests",
"traceId": "b1d2…"
}