Claude api rate limits are enforced per organization, per model, along three axes: requests per minute (RPM), input tokens per minute (ITPM), and output tokens per minute (OTPM). Exceed any one of them and the API returns a 429 with a retry-after header telling you exactly how long to wait. Your ceilings depend on your usage tier, and — the part most developers miss — cached input tokens don’t count against your input limit at all, which changes how you should architect high-volume apps.
TL;DR: Limits are per model and per tier (Start, Build, Scale, Custom), measured in RPM, input TPM, and output TPM. A 429 carries a
retry-afterheader, and the official SDKs retry automatically. Cache reads don’t count toward input limits, so prompt caching effectively multiplies your quota. For bulk work, the Message Batches API has its own separate limits.
How Claude API Rate Limits Actually Work
Anthropic uses a token bucket algorithm: your capacity replenishes continuously up to the maximum rather than resetting on a fixed clock. That means a 1,000 RPM limit behaves more like “up to ~16 requests per second, sustained” — short bursts above that rate can trigger 429s even though your per-minute average looks fine. In my own testing, spiky cron-style traffic hits limits far more often than the same volume spread evenly.
Three separate meters run at once for every model:
- RPM — raw request count, regardless of size.
- ITPM — uncached input tokens plus cache writes. Cache reads are free against this meter on current models.
- OTPM — actual output tokens generated. Your
max_tokenssetting doesn’t count against it, only what the model really produces.
Limits are also per model, so Sonnet and Haiku traffic draw from independent pools — with one caveat: all Opus 4.x versions share a single combined bucket, while Sonnet 5 gets its own separate from Sonnet 4.x. These are API-side quotas, distinct from the message caps on claude.ai subscriptions, which I covered in Claude AI token limits explained.
The Usage Tier System
Organizations are placed into a tier automatically and move up as their API usage history grows. Older write-ups (and plenty of forum posts) refer to numbered tiers 1 through 4; the Console now labels them Start, Build, Scale, and Custom. Each tier pairs rate limits with a monthly spend cap:
| Tier | Monthly spend cap | How you get there |
|---|---|---|
| Start | $500 | Default for new organizations |
| Build | $1,000 | Automatic advancement with usage |
| Scale | $200,000 | Automatic advancement with usage |
| Custom | No cap | Arranged with Anthropic’s sales/account team |
You can see your current tier, limits, and remaining headroom on the Limits page of the Claude Console, and request an increase from the same screen. Hitting the spend cap pauses API usage until the next month — worth knowing before it surprises you in production. Spend planning goes hand in hand with this; the Claude API pricing guide covers what each token actually costs.
Rate Limits by Model and Tier
Here are the standard published limits at the entry (Start) tier, per the official rate limits documentation:
| Model (Start tier) | RPM | Input TPM | Output TPM |
|---|---|---|---|
| Claude Fable 5 | 1,000 | 500,000 | 100,000 |
| Claude Opus 4.x (combined) | 1,000 | 2,000,000 | 400,000 |
| Claude Sonnet 5 | 1,000 | 2,000,000 | 400,000 |
| Claude Sonnet 4.x (combined) | 1,000 | 2,000,000 | 400,000 |
| Claude Haiku 4.5 | 1,000 | 2,000,000 | 400,000 |
Higher tiers raise everything substantially. At Build, most models get 5,000 RPM / 5M input TPM / 1M output TPM (Fable 5: 2,000 / 1.5M / 300K). At Scale, that becomes 10,000 RPM / 10M input TPM / 2M output TPM (Fable 5: 4,000 / 4M / 800K). The Message Batches API runs on its own meters — 1,000 to 4,000 RPM depending on tier, up to 500,000 queued batch requests, and a maximum of 100,000 requests per batch. Fast mode on Opus also has dedicated limits separate from standard Opus traffic.
Handling 429 Errors and the retry-after Header
A rate-limited response tells you which limit you tripped and when to come back. The useful headers:
| Header | Meaning |
|---|---|
retry-after | Seconds to wait; earlier retries fail |
anthropic-ratelimit-requests-remaining | Requests left before a 429 |
anthropic-ratelimit-input-tokens-remaining | Input tokens left (rounded to nearest 1,000) |
anthropic-ratelimit-output-tokens-remaining | Output tokens left |
anthropic-ratelimit-*-reset | RFC 3339 time when each meter fully refills |
The official SDKs already retry 429s (plus 5xx and connection errors) twice with exponential backoff, honoring retry-after. For queue workers I usually add one explicit outer layer on top:
import time
import anthropic
client = anthropic.Anthropic(max_retries=4)
def create_with_backoff(**kwargs):
for attempt in range(5):
try:
return client.messages.create(**kwargs)
except anthropic.RateLimitError as e:
wait = float(e.response.headers.get("retry-after", 2 ** attempt))
time.sleep(wait)
raise RuntimeError("still rate limited after 5 attempts")
One more source of 429s: acceleration limits. If your traffic ramps sharply — say a launch-day spike — you can get throttled even below your printed quota. Anthropic’s guidance is to ramp gradually and keep usage patterns consistent. Setup details for the client itself are in the Claude API Python guide.
Strategies to Stay Under Your Limits
- Cache your prompts. Cache reads don’t count toward input TPM on current models. With a 2M ITPM limit and an 80% cache hit rate, you can effectively push 10M total input tokens a minute. Cache system prompts, tool definitions, and long documents.
- Move bulk work to the Batches API. Anything that doesn’t need a real-time answer — evaluations, backfills, nightly enrichment — belongs in Message Batches, which has separate, generous queue limits and costs less per token.
- Split traffic across models. Each model has its own pool. Routing lightweight classification to Haiku 4.5 keeps your Sonnet or Opus quota free for the hard requests.
- Smooth your burst profile. A client-side concurrency cap (a semaphore or queue) converts spikes into a steady stream the token bucket tolerates.
- Set workspace limits. Per-workspace caps stop one internal tool from starving the rest of your org.
- Request an increase. If you consistently run near the ceiling, use the request form on the Console Limits page — moving up a tier is routine for growing products.
What People Get Wrong About Rate Limits
- Treating
max_tokensas spend. Output limits count tokens actually generated, so there’s no rate-limit penalty for setting a generousmax_tokens. - Assuming one global limit. Limits are per model — a Sonnet 429 says nothing about your Haiku headroom.
- Retrying instantly in a loop. Retries before
retry-afterexpires fail and prolong the throttle. Honor the header. - Ignoring cache economics. Teams request tier increases when a cache breakpoint on their system prompt would have freed most of their input quota.
- Confusing API limits with claude.ai limits. Subscription message caps and API rate limits are completely separate systems.
FAQ
What are the Claude API rate limits for new accounts?
New organizations start on the Start tier: typically 1,000 requests per minute per model, 2,000,000 input tokens per minute and 400,000 output tokens per minute for most models (Fable 5 is lower at 500,000 input and 100,000 output), plus a $500 monthly spend cap.
How do I fix a 429 rate limit error from the Claude API?
Read the retry-after header and wait that many seconds before retrying. The official SDKs do this automatically with exponential backoff. Longer term, add prompt caching, smooth out traffic bursts, route bulk jobs to the Batches API, or request a tier increase in the Console.
Do cached tokens count against Claude rate limits?
Cache reads do not count toward input tokens per minute on current models, and they are billed at roughly 10% of the base input price. Cache writes and uncached input do count. This makes prompt caching the single most effective way to raise your effective throughput.
How do I move up a Claude API usage tier?
Advancement is automatic as your organization builds up API usage over time. You can check your current tier on the Console Limits page and submit a rate limit increase request there if you need more headroom than automatic progression provides. Custom tier limits are arranged with sales.
Does the Message Batches API share rate limits with the Messages API?
No. Batches have their own limits shared across all models: 1,000 to 4,000 requests per minute depending on tier, up to 500,000 batch requests in the processing queue, and at most 100,000 requests in a single batch. It is the standard escape valve for bulk workloads.
Next Steps
Rate limits define your throughput ceiling; cost defines whether you want to reach it. Once you know your tier, run your workload numbers through the Claude API cost calculator to see what full utilization would actually cost, and keep the Claude API hub bookmarked for the rest of the series.
