Integrations
Rate limits
Requests are throttled per authenticated plan (or per IP when anonymous). Throttling happens before any credits are charged, so a rate-limited request never costs you.
Per-plan limits
Your limits come from your active plan. A window shown as “unlimited” isn’t throttled.
Configurable defaults
These are the seeded defaults; limits are stored in the database and can be tuned without a redeploy. Treat them as current guidance rather than a hard contract.Anonymous limits
Calls on the free-try path (no key) are limited per IP: 40 requests/hour and 150 requests/day. Sign in with a key to lift these to your plan’s limits.
The 429 response
Over the limit, a request returns 429 Too Many Requests in the standard error shape, with a Retry-After header (seconds until the window resets) when known:
Retry-After: 42
{
"error": "RateLimitError",
"message": "Rate limit exceeded",
"request_id": "…",
"timestamp": "2026-07-04T…Z"
}Respect Retry-After and back off — see the retry snippet on the Errors page.
Rate-limit headers
On paths that run the rate-limit dependency, these headers describe your current window:
X-RateLimit-LimitThe limit for the active windowX-RateLimit-RemainingRequests left in the windowX-RateLimit-ResetWhen the window resetsX-RateLimit-Windowmin or dayBrowser visibility
OnlyRetry-After is exposed to cross-origin browser JavaScript (via CORS). The X-RateLimit-* headers are set but readable only same-origin or from non-browser clients.