Rate limits
How many requests and tokens you can send per minute, and what happens past the limit.
Rate limits keep one client from slowing everyone else down. They apply to your organization, and an organization can set tighter limits on each of its workspaces. Your current limits are on the console's Capacity page.
What is counted
Each limit counts over a fixed one-minute window:
| Limit | Counts |
|---|---|
| Requests per minute (RPM) | Requests received |
| Input tokens per minute | Tokens sent to the model |
| Output tokens per minute | Tokens the model writes, its reasoning included |
A request is checked when it arrives, before the model has written anything. Input tokens are estimated from the size of the request. Output tokens are reserved at the request's limit (max_tokens, max_completion_tokens or max_output_tokens), or at a default when the request sets none. When the model server reports usage, token reservations are adjusted to that usage, excluding cache reads from input tokens. Without reported usage, a completed request keeps its estimated reservation; an interrupted stream releases the output reservation but keeps the input reservation. These adjustments do not refund the request count.
A max_tokens far above what you need reserves output tokens you will not use, and can hit the output limit early. Set it near the longest answer you expect, leaving room for the reasoning.
Headers
When an RPM limit applies, successful responses and rate_limit_exceeded errors carry these headers. Authentication errors and overloaded do not.
| Header | Meaning |
|---|---|
x-ratelimit-limit-requests | Requests allowed in the window |
x-ratelimit-remaining-requests | Requests left in the window |
x-ratelimit-reset-requests | When the window ends, in Unix seconds |
When you hit a limit
| Status | code | Meaning |
|---|---|---|
| 429 | rate_limit_exceeded | A per-minute limit is used up. retry-after gives the seconds until the window ends. |
| 429 | overloaded | The service is busy. Retry after a short wait; retry-after is usually 2. |
| 400 | token_limit_exceeded | This one request is larger than a per-minute token limit, so waiting will not help. Send less input or a lower max_tokens. |
| 402 | insufficient_credit | The organization has no credit left. |
| 402 | spend_limit_exceeded | The organization or workspace has reached its monthly spend limit. |
On the Messages API these gateway-generated errors carry rate_limit_error or invalid_request_error as their type, without a code. Model server validation errors can have a different error shape.
The model price is zero during this preview, but token limits still apply. Credit and spend checks are separate organization policies. If you receive a 402, contact the preview operator; testers do not have a spend-settings page.
Retrying
Retry 429s after the time in retry-after, and wait longer after each failure. The OpenAI and Anthropic SDKs already do this: by default they retry twice, honouring retry-after. Raise the count when you send many requests at once:
client = OpenAI(
base_url="https://raon-api.krafton.ai/v1",
api_key=os.environ["RAON_API_KEY"],
max_retries=5,
)To stay under the limits instead of retrying, cap how many requests your code runs in parallel.

