Rate Limiting

The API enforces per-key rate limits using a moving window algorithm. Each API key has its own usage plan with a single set of counters shared across all requests, regardless of scope or endpoint.

Default limits

WindowLimit
Per minute60 requests
Per hour1,000 requests
Per day10,000 requests

All requests made with the same API key count toward the same limits.

Rate limit headers

Every response from a rate-limited endpoint includes informational headers when a limit is exceeded:

HeaderDescription
X-RateLimit-LimitMaximum number of requests allowed in the current window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the current window resets
Retry-AfterSeconds to wait before retrying

429 Too Many Requests

When a rate limit is exceeded, the API returns 429 with a JSON body:

{
  "detail": "Rate limit exceeded"
}

The response includes Retry-After and X-RateLimit-* headers. Clients should back off and retry after the Retry-After period.

Best practices

Optimizing your usage

Follow these guidelines to stay within rate limits and build resilient integrations.