Skip to main content
Your organization has three per-minute budgets for each model: requests, input tokens and output tokens. Input and output are counted separately, so a large prompt and a long generation draw down different budgets. Every key in an organization draws on the same rate limits and the same credit balance, so adding keys separates attribution, not budget. Each budget refills continuously rather than resetting on a clock, and its capacity is set separately from its per-minute rate. So the remaining figures are not your limit minus what you have spent this minute. Read them as a balance rather than a countdown. Exhausting one returns 429 with code rate_limit_exceeded, and error.type names the budget that refused: requests, input_tokens or output_tokens.

Headers

The rate limit headers accompany any response where your budgets were consulted, which is every admitted request and every rate limit refusal. Retry 429 and 5xx with exponential backoff and jitter. Prefer the delay we advise, retry-after-ms first and then retry-after, over an interval of your own. Do not retry 400, 401, 402 or 404, and do not retry anything carrying x-should-retry: false: the answer will not change until you do something about it. Your current limits are on the Limits page. Get in touch to raise them.