Claude rate limits: two systems that share one name

Two completely unrelated systems are both called the Claude rate limit. One is a plan allowance measured over hours and weeks. The other is throughput measured per minute. They have different errors, different fixes, and reading advice about the wrong one wastes an afternoon.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

On a subscription, a Claude rate limit is a usage window: a rolling 5-hour session limit, a weekly limit, and a model-scoped limit, all shared between Claude chat and Claude Code. On the API it is throughput: requests per minute, input tokens per minute, and output tokens per minute, set by your organisation usage tier and reported in response headers. A subscription limit means wait or change how you work. An API limit resolves in seconds and retries itself.

What you need to know
  • Subscription limits are measured in hours and weeks. API limits are measured per minute.
  • API capacity uses a token bucket: it replenishes continuously, it does not reset on the hour.
  • Cached input tokens do not count toward ITPM on most models, so caching raises effective throughput.
  • A 429 carries retry-after and is not your plan quota.
  • A stray ANTHROPIC_API_KEY silently moves you from one system to the other.

Two systems, one name

Which one applies to you is decided by how you authenticated, not by which product you opened. Claude Code signed in with a Claude subscription is on the first. Claude Code with an API key in the environment is on the second, and so is any application you build.

Subscription limitsAPI rate limits
UnitUsage over a windowRequests and tokens per minute
WindowsRolling 5 hours, plus a weekOne minute, continuously replenished
Set byYour planYour organisation usage tier
ErrorYou've hit your session limit429 with retry-after
Time to clearHours or daysSeconds
FixWait, change model defaults, or add capacityBack off, or request a higher tier
Shared with chatYesNo
Two meters that share one name: an allowance you wait out, and a bucket that refills every secondTWO METERS, ONE NAMEsubscriptionan allowance, counted over hoursfullhit your session limit5 hours, and a week on top of itit clears on the clock, not soonerAPIa bucket, refilled continuouslyrefills every seconda request429 with retry-aftercached input mostly does not countit clears in seconds, by itselfA 429 is not your plan quota, and a named cap with a reset time is not throughput.

The subscription side

Three caps run at once on a Claude subscription, and the same allowance covers Claude chat, Claude Code, and Cowork. They are enforced per account, so parallel sessions divide one pool rather than each getting their own.

The exact strings Claude Code prints, as of August 2026.

CapMessageDoes /model help?
SessionYou've hit your session limit · resets 3:45pmNo. Shared across all models
WeeklyYou've hit your weekly limit · resets Mon 12:00amNo. Shared across all models
ModelYou've hit your Opus limit · resets 3:45pmYes. Switch and keep working

The current session limit is rolling

This is the part people consistently misread. The five-hour limit is not a bucket that empties at a fixed clock time. It is a trailing measurement of what you consumed over the past five hours, so if you burned most of it between 09:00 and 11:00, capacity returns gradually through the early afternoon rather than all at once. Sitting and waiting for a reset moment is the wrong mental model; the message gives a time because that is when enough will have aged out, not because a counter flips.

The three commands worth knowing on a subscription.
/usage            # plan bars, plus attribution by skill, subagent, and MCP server
/status           # which credential is actually active
/usage-credits    # buy past the limit on Pro and Max, at standard API rates

The API side

The Claude API meters three things per model, per minute: requests (RPM), input tokens (ITPM), and output tokens (OTPM). Exceeding any one produces a 429 naming which limit you crossed, with a retry-after header giving the seconds to wait. Limits apply separately for each model, so you can drive several models up to their respective limits at once.

Standard Messages API limits by usage tier, August 2026. RPM / ITPM / OTPM.

ModelStartBuildScale
Claude Opus 51,000 / 2M / 400k5,000 / 5M / 1M10,000 / 10M / 2M
Claude Sonnet 51,000 / 2M / 400k5,000 / 5M / 1M10,000 / 10M / 2M
Claude Haiku 4.51,000 / 2M / 400k5,000 / 5M / 1M10,000 / 10M / 2M
Claude Fable 51,000 / 500k / 100k2,000 / 1.5M / 300k4,000 / 4M / 800k
  • Tiers are assigned automatically from usage history and account standing, and you move up over time. New organisations may start in an Evaluation tier with limits below the standard table while history is established.
  • Capacity is a token bucket. It replenishes continuously up to your maximum rather than resetting at fixed intervals, which is why a 60 RPM limit can be enforced as roughly one request per second and a burst still fails.
  • Acceleration limits are a separate cause of 429s. A sharp increase in an organisation's usage can trigger them even below the published numbers. Ramp traffic gradually.
  • Spend caps are not rate limits. Start is $500/month, Build $1,000, Scale $200,000. Hitting one pauses API usage until the next calendar month unless you request more.

Reading the headers

Every API response carries the limit, the remaining amount, and the reset time. Anything that shows you live Claude headroom is reading these, because there is no other source for the number.

The headers that matter. There are more, including Priority Tier variants.

HeaderMeaning
retry-afterSeconds to wait. Retrying earlier will fail
anthropic-ratelimit-requests-remainingRequests left before you are limited
anthropic-ratelimit-requests-resetWhen requests fully replenish, RFC 3339
anthropic-ratelimit-input-tokens-remainingInput tokens left, rounded to the nearest thousand
anthropic-ratelimit-output-tokens-remainingOutput tokens left, rounded to the nearest thousand
anthropic-ratelimit-tokens-remainingThe most restrictive limit currently in effect
Look at them yourself.
curl -sS -D - -o /dev/null https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-haiku-4-5","max_tokens":8,"messages":[{"role":"user","content":"hi"}]}' \
  | grep -i ratelimit

Cache-aware ITPM: the lever most people miss

Most providers count every token toward a combined per-minute limit. Anthropic does not. On most Claude models only uncached input tokens count toward ITPM, which makes prompt caching a throughput lever, not just a cost one.

Token fieldCounts toward ITPM?
input_tokens (after the last cache breakpoint)Yes
cache_creation_input_tokensYes
cache_read_input_tokensNo, on most models

The arithmetic Anthropic gives: with a 2,000,000 ITPM limit and an 80% cache hit rate you can effectively process 10,000,000 input tokens per minute, because the 8M read from cache do not count. Cached input is also billed at a reduced rate, so the same change moves both numbers.

Telling them apart in ten seconds

You seeSystemDo
A named cap and a reset timeSubscriptionWait, switch model if it names one, or add credits
429 plus retry-afterAPI throughputIt retries itself. Reduce concurrency if it persists
529 or OverloadedNeither. Service capacityCheck the status page; try another model
Credit balance is too lowNeither. BillingAdd credits, or sign in with a subscription
Billed per token on a subscriptionYou are on the API sideunset ANTHROPIC_API_KEY, then /login
The credential check, first, every time.
echo "${ANTHROPIC_API_KEY:-(unset)}"    # unset means subscription billing
claude
/status                               # confirm the active credential

Questions people ask

It depends which system you are on. A Claude subscription meters usage against a rolling 5-hour session limit and weekly limits. The Claude API meters throughput per minute as requests, input tokens, and output tokens, set by your organisation usage tier.

It is the rolling five-hour usage window on your subscription. It is a trailing measurement rather than a counter that resets, so headroom returns gradually as earlier usage ages past five hours.

Requests per minute, input tokens per minute, and output tokens per minute, applied separately per model and set by your usage tier. On the Start tier that is 1,000 RPM with 2M ITPM and 400k OTPM for Opus 5, Sonnet 5, and Haiku 4.5 as of August 2026.

Two common reasons. Capacity is a token bucket enforced over short intervals, so a burst can exceed a per-minute limit within a few seconds. Separately, a sharp increase in an organisation's usage can trigger acceleration limits below the published numbers.

On most models, no. Only uncached input tokens and cache-creation tokens count toward ITPM, so a high cache hit rate raises effective throughput considerably. Claude Haiku 3.5 is the exception and does count cache reads.

No. A session limit is your plan allowance over a five-hour window and clears in hours. A 429 is API throughput, clears in seconds, and is retried automatically.

On the API, tiers rise automatically with usage history, or you can use Request rate limit increase on the Rate limits page in the Console. On a subscription, upgrade the plan, turn on usage credits, or run a second account so parallel sessions stop dividing one pool.

Sources

Every figure above was read from these pages on August 2026. Vendors reprice without notice; if you find a stale number, tell us.

  1. Anthropic API rate limits tiers, header names, cache-aware ITPM
  2. Claude Code error reference exact session, weekly, 429 and 529 messages
  3. Claude Code: manage costs effectively which ceiling a developer hit, and concurrency controls
Try it

One meter for
both systems.

Continuum reads the live rate-limit signals and shows 5-hour and weekly headroom per account, with a burn rate, wherever you are.

free app · your subscriptions · local-first