Claude API 404 not_found_error: retired model ids (claude-3-5-sonnet, claude-3-7-sonnet, claude-sonnet-4, claude-opus-4)
Anthropic retires models on a published schedule: a model is deprecated with a named replacement and a date, and after that date requests to it return 404 not_found_error with nothing but the id in the message. Because the message does not say "retired", the error is often taken for a typo or a permissions problem. Several ids that were the default in tools and tutorials for most of 2025 are now past their date, including both Claude 3.5 Sonnet builds and Claude Sonnet 4.
Last verified September 18, 2026 against Anthropic: model deprecations, Anthropic: migration guide · 4 min read
| Provider | Claude API (api.anthropic.com); Bedrock and Vertex keep their own dates |
| HTTP status | 404 Not Found |
| Error type | not_found_error |
| Message | model: claude-3-5-sonnet-20241022 (the id you sent) |
| Most recent retirements | claude-opus-4-1-20250805 on August 5, 2026; claude-sonnet-4-20250514 and claude-opus-4-20250514 on June 15, 2026 |
| How common | claude-3-5-sonnet is in about 534,000 files on GitHub and claude-sonnet-4-20250514 in 338,000 (code search, September 17, 2026) |
| Notice given | At least 60 days, by email and on the deprecations page |
| Can you wait it out? | No. Retired means requests fail |
- Look the id up in the table below and rename to the replacement Anthropic lists.
- If you move to Claude Opus 4.7 or later, remove
temperature,top_pandtop_k; non-default values return 400. - Find every use: export the usage CSV from the Claude Console; it is broken down by key and model.
What the error looks like
{
"type": "error",
"error": {
"type": "not_found_error",
"message": "model: claude-3-5-sonnet-20241022"
}
}The message contains only the id. Retired ids, ids with a typo and ids your key cannot use all produce the same shape, so check the table first.
Retired ids and dates
| Retired id | Deprecated | Retired | Anthropic's replacement |
|---|---|---|---|
claude-opus-4-1-20250805 | June 5, 2026 | August 5, 2026 | claude-opus-4-8 |
claude-sonnet-4-20250514 | April 14, 2026 | June 15, 2026 | claude-sonnet-4-6 |
claude-opus-4-20250514 | April 14, 2026 | June 15, 2026 | claude-opus-4-8 |
claude-3-haiku-20240307 | February 19, 2026 | April 20, 2026 | claude-haiku-4-5-20251001 |
claude-3-7-sonnet-20250219 | October 28, 2025 | February 19, 2026 | claude-sonnet-4-6 |
claude-3-5-haiku-20241022 | December 19, 2025 | February 19, 2026 | claude-haiku-4-5-20251001 |
claude-3-5-sonnet-20241022, claude-3-5-sonnet-20240620 | August 13, 2025 | October 28, 2025 | claude-sonnet-4-6 |
claude-3-opus-20240229 | June 30, 2025 | January 5, 2026 | claude-opus-4-8 |
From Anthropic's deprecations page as of September 18, 2026. Claude 2, Claude 1 and Instant ids were retired earlier. Amazon Bedrock and Google Cloud set their own retirement dates for the same models, so a build that still works on Bedrock can be gone on the Claude API and the other way round.
Fix: rename, then check the parameters
import anthropic
client = anthropic.Anthropic()
msg = client.messages.create(
model="claude-sonnet-4-6", # was "claude-sonnet-4-20250514" or "claude-3-5-sonnet-20241022"
max_tokens=1024,
messages=[{"role": "user", "content": "Summarise this in one line: ..."}],
# no temperature / top_p / top_k: those return 400 on Claude Opus 4.7 and later
)Two changes beyond the id:
- Sampling parameters.
temperature,top_pandtop_kare deprecated from Claude Opus 4.7 on and return 400 when set to a non-default value. The Python SDK from v1.0 removes them from the request type. Anthropic's guidance is to steer behaviour through the prompt instead. - Behaviour. A replacement two generations newer answers differently: length, formatting, refusal boundaries, tool-call style. Run your evaluation set before switching production traffic.
To find every place a retired id is still used, export usage from the Claude Console (Usage, then Export). The CSV lists requests by API key and model, which catches the cron job nobody remembers.
Aliases without dates
Anthropic also serves alias ids without a date suffix, such as claude-sonnet-4-6. An alias follows the latest snapshot of that model, so it survives snapshot retirements but can change behaviour underneath you when a new snapshot ships. Pin the dated id for reproducibility, or the alias for longevity; both are legitimate, but know which one you chose.
Frequently asked questions
Is claude-3-5-sonnet available anywhere?
Not on the Claude API since October 28, 2025. Anthropic has said it intends to make past models available again at some point and has committed to preserving the weights, but there is no date.
My code uses claude-sonnet-4-6 already and still gets 404.
Then it is not this problem. Check the base URL and the key, and whether the request goes through a proxy that rewrites the model id.
Does Inference APIs serve Claude models?
No. We serve open-weight models only. This page exists because the error is common and the fix is not obvious from the message.
Something changed or wrong? Tell us and we will re-verify the entry.
