Fix

Anthropic 529 overloaded_error: what it means and the fix

The one Claude error that has nothing to do with you. What Anthropic’s docs say about it, the retry the SDK already does, and the structural fix: a second route and a fallback model before the error reaches your code.

The error

What the client prints

text
1HTTP 529
2{
3 "type": "error",
4 "error": {
5 "type": "overloaded_error",
6 "message": "Overloaded"
7 },
8 "request_id": "req_..."
9}
10
11# As Claude Code prints it:
12API Error: 529 Overloaded

What it means

Anthropic's API errors page (read 2026-10-31) lists 529 overloaded_error as "The API is temporarily overloaded" and adds that a 529 can occur when the API experiences high traffic across all users.

It is not a rate limit: those are 429 rate_limit_error and name the limit you crossed. It is not your balance: that is 402. The same page notes one related case: an organization whose usage rises sharply can see 429s from acceleration limits, which it advises avoiding by increasing traffic gradually.

During a stream the error can arrive after the 200: the same page points to the streaming error event for that shape, so a client that only checks the status code can miss it.

The retry rule

The official SDK retries transient failures, rate limits and 5xx errors included, with exponential backoff, twice by default, honouring retry-after when present (Anthropic's errors page, 2026-10-31). Raise max_retries and the same loop runs longer.

A 529 that lasts hours is a capacity event, and a retry loop on one host waits it out with you. The rate limits page says limits are maximums, not guaranteed minimums; nothing promises capacity.

The fix is a second place to send the request: another route for the same model, then another model, both tried before the error is yours to handle.

The structural fix

A key that fails over, with limits you set

A retry loop treats the symptom. On this key the next route is tried before the error reaches you, every limit is per key, and a failed request costs nothing. From the OpenAPI document, read 2026-10-31.

Failover before you see it
A route that fails with a 5xx or a 429 is retried on the next route for the same model. x-uplink-attempts on the answer counts the tries; the price is the model’s own either way.
Your own fallback list
models: [...] names up to 5 models tried in order once every route of the one before has failed before a byte was sent. Each bills at its own price when it answers.
Failed requests are not charged
A 429, 502 or 503 from this API charges nothing and carries retry-after: back off that long before trying again.
Limits per key, set by you
rpm from 1 to 100,000, tpm from 1 to 50,000,000 and concurrency from 1 to 10,000 on each key. Default: 600 requests a minute per key, 50 in flight per account.
A budget per key
budget_usd plus a daily, weekly or monthly spend limit. The key stops at its own line with a 402; the rest of the balance is untouched.
One request id
x-uplink-request-id on every answer, errors included. Quote it and we find the call.
Live

Claude route, right now

From GET https://api.relayswitch.io/v1/status, the public feed behind /status, generated 2026-11-02T06:09:46.865Z.

ServiceStateLast checkLatencyChecks todayFailures today
ClaudeOperationalNov 2, 2026, 6:07 AM UTC—70

Every hour the gateway counts the past hour’s real requests to this route: answered or failed. A request answered after a retry counts as answered.

The daily real-model check: 305 of 339 models answered as before, generated 2026-11-02T06:09:31.742Z. Every verdict is on /proof.

Live prices

The ids this page is about, per million tokens

The Claude ids on this key, in the Anthropic Messages format, with Anthropic’s list price beside ours where the catalog has it.

ModelInputOutputDeveloper list in / out
Claude Opus 5.5claude-opus-5-5$2.80$10.00$4.00 / $20.00
Claude Sonnet 5.5claude-sonnet-5-5$1.20$3.00$2.00 / $10.00
Claude Haiku 5.5claude-haiku-5-5$0.06$0.15$0.10 / $0.50

Read from the catalog at render. A request that fails over bills at the price of the model that answered.

The switch

Anthropic SDK: a base URL and a fallback model

python
1import anthropic
2import os
3
4client = anthropic.Anthropic(
5 base_url="https://api.relayswitch.io/v1",
6 api_key=os.environ["RELAYSWITCH_API_KEY"],
7)
8
9reply = client.messages.create(
10 model="claude-opus-5-5",
11 max_tokens=1024,
12 messages=[{"role": "user", "content": "Summarise the diff."}],
13 extra_body={"models": ["claude-sonnet-5-5"]}, # answers if every claude-opus-5-5 route fails
14)
15print(reply.model) # the model that answered; billed at its own price

base_url moves the SDK here; the request shape is the Messages API's own. models is this API's fallback list: up to 5 ids tried in order once every route of the one before has failed before a byte was sent. The answer names the model in model and x-uplink-model, and x-uplink-attempts says how many routes it took.

A key can carry fallback_models for every request that names none; the routing page has the key call.

FAQs

Questions

From what people ask about this error.

Open the console

A key in under a minute

Get a key

Or email hello@relayswitch.io

A key that does not stop at one host

Failover at the same price, limits and a budget per key, failed requests not charged. Card or crypto, no KYC, no subscription.