HTTP 429 with no retry-after
error_code enforced_spend_limit_reached
Checked against Anthropic docs on 2026-08-30: Start / Build / Scale monthly spend caps are $500 / $1,000 / $200,000. Once you hit the cap, requests still return HTTP 429 with type rate_limit_error, but there is no retry-after header. Retries keep failing until 00:00 UTC on the first day of next month.
Four facts you can quote on their own
Looks like a normal rate limit
The status is still 429 and error.type is still rate_limit_error, so many SDKs retry it as a per-minute throttle.
The split from a real rate-limit 429
A tier spend-cap 429 omits retry-after. Default SDK retries fail until 00:00 UTC on the 1st, or until you are moved to a higher tier.
Start / Build / Scale monthly caps
These three dollar figures are the documented monthly caps. Custom-tier orgs have no public cap; it is arranged with the account team.
Messages API error_code
Read error.details.error_code. If it is this string, stop retrying. A spend limit you set yourself returns HTTP 400 invalid_request_error instead.
This 429 is not “you sent too fast”
Anthropic splits limits into spend limits (how many dollars an organization may spend in a calendar month) and rate limits (RPM / ITPM / OTPM). Both can return HTTP 429 with error.type rate_limit_error. The discriminator is in details: when the tier monthly cap is hit, the Messages API sets error.details.error_code to enforced_spend_limit_reached and sends no retry-after. The documented sample message is “You have reached your API usage limits: your organization has crossed its monthly API usage threshold… You will regain access on 2026-09-01 at 00:00 UTC.” Access resumes at 00:00 UTC on the first day of the next month unless you get a higher tier first. A lower spend limit you configured on the Billing page is a different path: it returns HTTP 400 with type invalid_request_error, and the message starts with “You have reached your specified API usage limits”. Claude Code workspace limits are checked separately and can return a 429 that does include retry-after.
Why this is easy to confuse with weekly limits and rate-limit 429s
On 2026-06-26 Anthropic’s platform changelog collapsed usage tiers to Start / Build / Scale and published the $500 / $1,000 / $200,000 monthly caps. Agent workloads burn dollars faster than they burn per-minute tokens, so Start/Build orgs can hit the monthly cap long before RPM/ITPM. The wire still says 429, which collides with “You've hit your weekly limit” and with retry-after rate limits. Our existing 529 vs 429 vs weekly page treats 429 mainly as a backoff-able throttle. This page covers the third 429: the monthly dollar cap, where backoff does nothing.
Timeline
Anthropic changelog: usage tiers consolidated into three — Start, Build, and Scale. Sonnet and Haiku rate limits now match Opus at every tier; most orgs moved up, none received lower limits. Monthly spend caps apply per tier.
platform.claude.com/docs/en/api/rate-limits states: hitting the tier cap pauses usage until 00:00 UTC on the 1st; the 429 has no retry-after; error_code is enforced_spend_limit_reached.
Without a tier increase, access resumes at that instant. The sample JSON uses 2026-09-01 00:00 UTC as an example date; trust the timestamp in your own error body.
Confirmed vs common mix-ups
Confirmed
Anthropic docs fetched 2026-08-30 confirm: a tier spend-cap 429 still uses type rate_limit_error, omits retry-after, and sets error.details.error_code to enforced_spend_limit_reached on the Messages API. Caps are $500 / $1,000 / $200,000. A user-set spend limit returns HTTP 400.
Common mix-ups
“Every 429 clears if you wait a few dozen seconds” is true for retry-after rate limits and false for enforced_spend_limit_reached. Another mix-up: treating this as Claude Code’s weekly limit. Weekly limit is a subscription-period quota; the spend cap is a Console org’s monthly USD ceiling. The reset clocks are different.
What to do: client-side vs billing-side
Rate-limit 429: honour retry-after
type rate_limit_error plus a retry-after or anthropic-ratelimit-* header means RPM / ITPM / OTPM or an acceleration limit. Cut concurrency, respect the header, cache prompts. Recovery is usually minutes. Do not handle a spend-cap 429 this way.
enforced_spend_limit_reached: backoff will not help
Request a higher tier on the Rate limits page, or wait until 00:00 UTC on the 1st. A 400 from your own spend limit clears as soon as you raise or remove it on Billing. If the calendar month is already spent and the job cannot wait, you need a billing path that is not this Console organization.
Three-step check (works without switching vendors)
Step 1: HTTP 429 or 400? Step 2: is error.details.error_code enforced_spend_limit_reached, and is retry-after missing? Step 3: does the message name 00:00 UTC on the 1st? That is the tier cap. A 400 whose message starts with “You have reached your specified API usage limits” is the limit you set. Claude Code weekly quota is usually a product string such as “You've hit your weekly limit”, not this API error_code. Raise the tier or the Billing cap inside the same org first. This page does not describe bypassing Anthropic auth or spend controls.
This error is not QCode’s ledger
enforced_spend_limit_reached is tied to an Anthropic Console organization’s monthly tier, not to a reseller balance. QCode deducts a prepaid balance at official rate × a service multiplier on a different billing path. This page does not claim QCode never throttles. If your own Anthropic org is frozen until the 1st and the job cannot wait, routing through another already-provisioned API key is an engineering fallback, not a way around Anthropic’s rules.
FAQ
How do I tell enforced_spend_limit_reached from a normal 429?
Two checks: no retry-after, and error.details.error_code equals enforced_spend_limit_reached. If both match, treat it as a monthly cap, not a per-minute throttle.
What are the Start / Build / Scale monthly caps?
Docs fetched 2026-08-30 list Start $500, Build $1,000, Scale $200,000 USD per calendar month. Custom has no public cap. Trust the numbers on your Console Billing / Rate limits page.
Does a spend limit I set myself use this error_code?
No. A limit you set on the org or a workspace returns HTTP 400, type invalid_request_error, message starting with “You have reached your specified API usage limits”. Claude Code workspace overage can be a 429 with retry-after. Do not share one retry policy across the three.
Can I dodge the monthly cap by switching Claude models?
No. The cap is dollars per org per calendar month, not per model. Another Claude SKU still bills the same org. Continue only by raising the tier, waiting until the 1st, or sending traffic to an account outside this Console org.
What will SDK auto-retry do?
Official SDKs retry rate limits that carry retry-after. A spend-cap 429 has none, so retries fail until the resume time. Stop retrying when you see enforced_spend_limit_reached and open Billing / Rate limits.
Is this the same as Claude Code’s weekly limit?
No. Weekly limit is a subscription-period quota. enforced_spend_limit_reached is an API org’s monthly USD cap. One shows up in Claude Code / claude.ai; the other shows up on Console API keys. Reset clocks differ.
Sources
Cap amounts, missing retry-after, error_code enforced_spend_limit_reached, and the HTTP 400 for a user-set spend limit are from Anthropic’s rate-limits page at platform.claude.com/docs/en/api/rate-limits, fetched 2026-08-30. The sample sentence “You have reached your API usage limits: your organization has crossed its monthly API usage threshold” is the JSON example on that page. The Start / Build / Scale consolidation date is the 2026-06-26 entry on platform.claude.com/docs/en/release-notes/overview (fetched 2026-08-30). No unpublished internal config is cited.
When a Console org is capped, delivery does not have to wait for the 1st
This is Anthropic org billing, not a broken key. If you need a second billing path, prepaid credit at official rate × a service multiplier is one option.
Related
529 vs 429 vs Weekly Limit
The other two “quota-looking” failures: upstream overload, per-minute throttle, subscription weekly cap.
Claude usage limit reached
The 5-hour window and weekly quota in the subscription product — not this API dollar cap.
Claude weekly limit 2026
Weekly quota and the +50% boost timeline, so you do not mix it with the calendar-month reset.
Technical reading of Anthropic’s public docs, not an Anthropic statement. Tier, cap, and resume time are whatever your Claude Console and error body say. QCode does not bypass Anthropic authentication, abuse controls, or spend caps.