REST API

Rate limits

Per-key limits keep the API healthy. Limits are enforced as rolling windows; clients should retry with backoff on 429s.

Default ceilings

WindowDefaultNotes
Per minute60 requestsAcross all endpoints.
Per day1,000 requestsAcross all endpoints.

These are starting points. Per-key limits are configurable for paid plans — contact support for higher quotas.

When you hit a limit

The API returns:

http
HTTP/1.1 429 Too Many Requests
Retry-After: 12

{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded. Retry after 12 seconds."
  }
}

The Retry-After header tells you how long to wait, in seconds.

js
async function withBackoff(fn, max = 5) {
  for (let i = 0; i < max; i++) {
    const res = await fn();
    if (res.status !== 429) return res;
    const wait = Number(res.headers.get("retry-after") ?? 1) * 1000;
    await new Promise((r) => setTimeout(r, wait));
  }
  throw new Error("Rate limit not cleared after retries");
}

Avoid retrying on 4xx other than 429 — those are caller errors.

Bulk operations

Instead of firing many requests in parallel, queue them and pace yourself. The API doesn't reward burstiness.