Get API key
Guides / Rate limits

Rate limits

Each key is capped at 100 requests/second and 10,000 requests/day. Above this we return 429.

Caps

ScopeLimitWindow
Per key1001 second (sliding)
Per key10,00024 hours (calendar)
Per account1,0001 second (sliding, aggregate)

Response headers

Every authenticated response includes:

http
HTTP/1.1 200 OK
X-RateLimit-Limit-Second:     100
X-RateLimit-Remaining-Second: 87
X-RateLimit-Limit-Day:        10000
X-RateLimit-Remaining-Day:    9412
X-RateLimit-Reset-Day:        1716988860     # unix seconds (next UTC midnight)
# On 429:
# Retry-After: 1     # seconds until the relevant bucket replenishes

Backoff strategy

On 429, read the Retry-After header (seconds). If absent, use exponential backoff with jitter: min(2^n * 100ms, 30s) + rand(0, 250ms). Cap at 5 retries.

Node — fetch wrapper
async function callWithBackoff(req, { max = 5 } = {}) {
  for (let n = 0; n <= max; n++) {
    const r = await fetch(req);
    if (r.status !== 429 && r.status < 500) return r;

    const retryAfter = Number(r.headers.get('retry-after'));
    const delay = retryAfter
      ? retryAfter * 1000
      : Math.min(2 ** n * 100, 30_000) + Math.random() * 250;
    await new Promise(res => setTimeout(res, delay));
  }
  throw new Error('exhausted retries');
}