rate_limit_error
The message
rate_limit_errorWhat it means
A 429 rate_limit_error means your organization hit a per-minute rate limit, its usage tier's monthly spend cap, or a Claude Code workspace limit. Only the first one clears by waiting.
What to do
Read the retry-after header and wait that many seconds; earlier retries fail. If there's no retry-after and error.details.error_code is enforced_spend_limit_reached, waiting won't help. That one is the monthly spend cap, and only a higher tier clears it.
A 429 from the Claude API isn't always the same problem. Anthropic's errors page gives the code three causes, and only one of them clears on its own: the per-minute rate limit. The other two are spend limits, and waiting does nothing for either.
- Status
- 429 rate_limit_error
- Fable 5.x, Start tier
- 500,000 input tokens per minute
- Opus 5, Start tier
- 2,000,000 input tokens per minute
- Shared bucket
- Claude Fable 5.1 and Claude Fable 5
- Spend-cap marker
- enforced_spend_limit_reached
Why Fable 5.1 hits it sooner
Rate limits are applied separately for each model, and the Fable numbers are set well below the rest. On the Start tier, Claude Fable 5.x gets 500,000 input tokens per minute where Claude Opus 5 and Claude Sonnet 5 get 2,000,000, and the output allowance is 100,000 against 400,000.
There's a footnote under that table doing most of the work.
Fable rate limit is a total limit that applies to combined traffic across Claude Fable 5.1 and Claude Fable 5.
So a service that kept the older model around for cheap calls is spending one budget twice, and swapping half the traffic back to Fable 5 buys nothing.
Which 429 you have
Start with the retry-after header. A rate limit 429 carries one, and the docs say it's the number of seconds to wait until you can retry the request, with earlier retries failing.
The spend-cap 429 has no retry-after at all. It sets error.details.error_code to enforced_spend_limit_reached, which is what the docs tell you to read, and usage pauses until 00:00 UTC on the first day of the next month unless you ask for a higher limit sooner. The SDKs' automatic retries keep failing the whole time.
What counts against the limit
Less than people assume. For most Claude models, only uncached input tokens count toward your ITPM rate limits, so tokens read from cache are free as far as the limiter is concerned (they're still billed, at the cache read rate).
Output works the other way round from what you'd expect from a token budget: OTPM is evaluated in real time as output tokens are produced, and the max_tokens parameter does not factor into OTPM rate limit calculations. Setting a generous max_tokens costs you nothing here.
When it isn't your limit at all
A sharp jump in usage can trigger acceleration limits, which also come back as 429s. The docs' answer is to ramp up traffic gradually and keep usage patterns consistent, which is a slower fix than raising a number in the Console.
A 529 overloaded_error is a different code and a different problem: the API is temporarily overloaded, across all users. The official SDKs already retry transient failures with exponential backoff, twice by default, honoring retry-after when it's there.