Rate Limits
Rate limits are enforced per API key, on a rolling 60-second window, at a requests-per-minute (RPM) ceiling that depends on your org's plan:
| Plan | Requests / minute | Included tokens |
|---|---|---|
| Free | 10 | 1,000,000 lifetime, or 20,000/day once the lifetime pool is exhausted |
| Starter | 60 | 15,000,000 / month |
| Growth | 300 | 100,000,000 / month |
| Scale | 1,000 | Committed volume (contact sales) |
Exceeding the RPM ceiling returns:
HTTP/1.1 429 Too Many Requests
Retry-After: 12
{"detail": "Rate limit exceeded: max 10 requests per 60s"}
Retry-After is in seconds — wait at least that long before retrying. A reasonable client backs off with jitter rather than retrying at the exact instant Retry-After elapses, since every client that does that at once just recreates the burst.
Free tier quota
The Free plan's token allowance is a one-time 1,000,000-token pool, plus a 20,000-token daily allowance that kicks in once the lifetime pool runs out. A request is only blocked once both are exhausted:
HTTP/1.1 402 Payment Required
{"detail": "Free tier quota exhausted for today. Upgrade to continue, or try again after midnight UTC."}
Paid plans don't hit this — overage beyond the included monthly tokens is billed per-token rather than blocked. See the dashboard billing page for current overage rates per plan.
Design your client for 429s and 402s
Both are ordinary, expected responses under load or heavy usage — not exceptional failures. Retry 429s with backoff; for 402 on the Free plan, surface an upgrade prompt rather than retrying, since retrying won't succeed until the quota resets.