Skip to content

Rate Limits

  1. Per-IP — applied at the edge before auth. Default: 2000 req / 60s per IP.
  2. Per-key — applied after auth. Configurable per key (RPS / daily / monthly).

If either limit fires, the response is 429 with body:

{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests. Please retry after 42 seconds."
}
}

Every response (success or rate-limited) carries:

HeaderMeaning
X-RateLimit-LimitThe active limit for this scope
X-RateLimit-RemainingRequests left in the current window
X-RateLimit-ResetUnix timestamp when the window resets
Retry-AfterSeconds to wait (only on 429)
async function call() {
const r = await fetch(url, { headers: { "x-api-key": key } });
if (r.status === 429) {
const wait = Number(r.headers.get("Retry-After") ?? 1);
await new Promise((res) => setTimeout(res, wait * 1000));
return call();
}
return r.json();
}

Per-key limits are configured per plan. Contact support if your production load needs more.