Rate limits
Requests per minute, per key. Tokens are not rate limited, credits are the limit there.
POST/v1/chat/completions
200plan
this minute
requests per key0 / 60
{ "error": { "message": "Rate limit: 60 requests per minute.", "code": "rate_limited" } }
Defaults by plan
| Plan | Requests / min |
|---|---|
| Pay as you go | 60 |
| Pro | 120 |
| Max | 600 |
Prepaid credits with no plan sit on Pay as you go. Plans are on the pricing page.
Per-key override
A key can carry its own rpm limit, set in Dashboard, API keys. It replaces the plan default for that key, in either direction: use it to cap a risky key below your plan, or to give one worker a bigger share. Requests are counted per key.
What counts
- Every
POST /v1/chat/completionscounts as one request, streaming or not, success or failure after auth. - The window is a sliding 60 seconds. It is not reset on the minute.
- Going over returns
429with coderate_limited, and the message states your limit. - The limit is enforced per gateway instance, so treat the number as approximate under heavy parallelism rather than exact.
Not rate limitedTypeNote
tokens per minuten/a
n/a
There is no token cap. Per-request output is capped by the model max.
/v1/modelspublic
public
No key, no limit applied.
Handling 429
Back off with jitter and retry. See errors for the policy. For bulk jobs, run a fixed worker pool sized to your limit instead of firing everything and retrying.