Rate Limiting

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

Default limits

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

All rate-limited requests made with the same API key count toward the same limits. Health requests do not count.

Rate limit headers

A 429 Too Many Requests response includes these headers:

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.