API Error Code Decoder
401, 429, 529 - decode any Anthropic API error instantly.
- $19 Free
- 20 sec
- No signup
Enter or pick the status code
See the meaning and likely cause
Follow the fix
You get: What your API error code means and how to fix it.
Which error code?
100% client-side. No API key, no request, nothing sent anywhere.
What it means + the fix
429 - rate_limit_error
RetryableToo Many Requests. You exceeded a rate limit - requests per minute, tokens per minute, or a usage cap for the current window. This is a throttle, not a broken request.
Common causes
- Requests-per-minute limit for your usage tier was exceeded.
- Token-per-minute (input or output) ceiling was hit by large prompts.
- Too many requests in flight at once (parallel sessions).
The fix
- Wait for the window to reset - rate limits are time-based.
- Honor the retry-after header if present; it tells you exactly how long to wait.
- Retry with exponential backoff and jitter for scripted calls.
- Reduce parallelism and prompt size. See the Rate Limit Helper tool for full guidance.
Decode any Anthropic API error in seconds
Every Anthropic API error carries two useful pieces of information: an HTTP status code and an error type string like invalid_request_error or overloaded_error. Together they tell you exactly what went wrong and, crucially, whether the request is safe to retry. This decoder maps each code and type to its precise meaning, the common causes, and an ordered fix. It runs entirely in your browser - no API key, no request, nothing you enter is ever sent anywhere.
The most important split is retryable vs not. A 429, 500, or 529 is worth retrying with backoff - the request was fine, the timing or the server was not. A 400, 401, 403, 404, or 413 will fail identically no matter how many times you retry, because the request itself is wrong. Retrying a non-retryable error just wastes time and, on rate limits, can dig the hole deeper.
The status codes, precisely
- 400 invalid_request_error - your request is malformed or has a bad/missing field. Not retryable; fix the request.
- 401 authentication_error - your API key is missing, wrong, or revoked. Not retryable; fix the key.
- 403 permission_error - valid key, but no permission for that model/action. Not retryable; fix access.
- 404 not_found_error - the resource does not exist, usually a mistyped model name or wrong URL. Not retryable; fix the reference.
- 413 request_too_large - the request body exceeded the size limit. Not retryable; shrink or split it.
- 429 rate_limit_error - you hit a rate or usage limit. Retryable after a wait, with backoff.
- 500 api_error - a server-side error on Anthropic's end. Retryable with backoff.
- 529 overloaded_error - the service is temporarily at capacity. Retryable with backoff.
Retryable vs not - the one distinction that matters
Retry 429, 500, and 529 with exponential backoff and jitter. Do NOT retry 400, 401, 403, 404, or 413 - the request is wrong and will fail the same way every time. Fix the request, the key, the permission, the reference, or the size instead.
How to read the error body, not just the code
Anthropic errors return a JSON body with a type and a human-readable message. The status code tells you the category; the message usually names the exact problem. A 400 will typically tell you which field is invalid. A 404 will hint that the model name is unknown. Always read the message string, not just the number - it turns 'something is wrong' into 'max_tokens exceeds the model limit' or 'model not found'. The decoder above gives you the category and the common causes; the message narrows it to the specific one.
Building retries that behave
- Only retry the retryable codes: 429, 500, 529. Treat 4xx (except 429) as terminal.
- Use exponential backoff: wait 1s, then 2s, then 4s, doubling each attempt.
- Add jitter - a small random offset - so many clients do not retry in lockstep.
- Honor the retry-after header on a 429 when present; it beats your computed delay.
- Cap the number of attempts and surface the error rather than looping forever.
- Log the status and type so recurring failures are easy to diagnose later.
The auth and permission errors people trip on
401 and 403 look similar but mean different things. A 401 means the server does not know who you are - the key is missing, wrong, or revoked; fix it by confirming the key is set correctly and regenerating it if needed. A 403 means the server knows who you are but you are not allowed to do this - the key is valid but lacks access to that model, feature, or endpoint; fix it by checking your account's access, not the key itself. Confusing the two sends you fixing the wrong thing. Also: never hardcode or log your key, and never expose it behind an unauthenticated endpoint - load it from an environment variable and keep it server-side.
From decoding errors to shipping reliably
Once you can read a status code and instantly know 'retry this' or 'fix the request', API errors stop being blockers and become quick routing decisions. The developers who ship reliable things on the Anthropic API bake this in: correct retry logic for the three retryable codes, clear handling for the terminal ones, and never a raw key exposed to the client. The Claude Code Club curriculum covers building on the API the right way, from robust error handling to safe key management.
Frequently asked questions
Which Anthropic API errors are safe to retry?
429 (rate_limit_error), 500 (api_error), and 529 (overloaded_error) are retryable - use exponential backoff with jitter. The others (400, 401, 403, 404, 413) are terminal: the request itself is wrong and will fail identically every retry, so fix the cause instead.
What's the difference between 401 and 403?
401 (authentication_error) means the server does not know who you are - your key is missing, wrong, or revoked; fix the key. 403 (permission_error) means your key is valid but lacks access to that model or action; fix your account's permissions, not the key.
What does a 400 invalid_request_error mean?
Your request is malformed - a missing or misspelled required field, an out-of-range parameter (like max_tokens too high), or bad message structure. Read the error message body; a 400 almost always names the exact field that is wrong.
What is a 529 overloaded_error?
It means Anthropic's service is temporarily at capacity - a server-side condition, not a problem with your request. Wait and retry with jittered backoff; it usually clears within minutes. Check the status page if it persists.
I got a 404. Did the API break?
Almost always it is a mistyped model name or a wrong endpoint URL - the resource you referenced does not exist. Verify the model identifier matches a currently available model exactly, and check the URL against the current API reference.
Is this decoder sending my error anywhere?
No. It is a fully client-side lookup table. You never enter an API key, no request is made, and nothing you type leaves your browser. The HTTP status meanings shown are the standard, documented ones.
Liked this tool? The club is the next step.
Join Claude Code Club for $9/month. 650+ lessons, weekly updates, and the workflows behind every tool on this site.
- No experience needed
- Cancel anytime
- Updated weekly
