Anthropic not_found_error: meaning, cause, and fix

This 404 can mean a wrong resource path, missing access, or a retired Claude model ID. Check the exact identifier and endpoint before changing application logic.

By benchr Editorial Team · · · Verified against Anthropic's API error documentation, June 12, 2026

AnthropicHTTP 404severity: highmodel availability

Retired model IDs

Anthropic retired claude-sonnet-4-20250514 and claude-opus-4-20250514 on June 15, 2026, and retired means gone: a request that ran fine on June 14 now fails. claude-opus-4-1-20250805 followed on August 5, 2026. The tracker keeps the full list of dates.

Anthropic's recorded path sent Sonnet 4 traffic to claude-sonnet-4-6 at the same $3 input / $15 output per million tokens, with a 1M-token context window, and Opus 4 and 4.1 traffic to claude-opus-4-8, which drops the bill from $15/$75 to $5/$25. Anthropic now lists Sonnet 4.6 and Opus 4.8 as legacy but still available. For new code, benchr's editorial pick is Claude Sonnet 5 at $2 input / $10 output per 1M tokens, cheaper than Sonnet 4.6 on both sides, or Claude Opus 5 at the same $5/$25 as Opus 4.8. Anthropic's own guidance points most workloads at Opus 5. The Sonnet 4 guide and the Opus 4 and 4.1 guide cover both migrations step by step. Note that these dates govern the Claude API, AWS, and Microsoft Foundry; Bedrock and Vertex AI run separate schedules.

What the API says

{
  "type": "error",
  "error": {
    "type": "not_found_error",
    "message": "The requested resource could not be found."
  },
  "request_id": "req_..."
}

That sentence is all you get; the body never names the missing resource, which is why the model-ID check comes first. The SDKs raise typed exceptions (anthropic.NotFoundError in Python), and every response carries a request-id header starting with req_. Quote it when you contact support — it's the fastest path to someone seeing your exact request.

Check the endpoint, ID, and access

Before blaming a retirement, spend sixty seconds on the mundane: a typo in the model string, an endpoint path that's slightly off (/v1/message instead of /v1/messages), or a file or batch ID that was deleted or belongs to a different workspace. The API answers all of them with the same sentence, so the error text won't tell you which one you've got. Your config will.

Audit before October

One swap fixes today's failure; an hour of cleanup prevents the next one. The Console's usage export breaks traffic down by API key and model, which turns straggler-hunting into a filter: anything still calling a retired ID is your migration list, and so is Claude Sonnet 4.5, which Anthropic lists for retirement not sooner than September 29, 2026. Pin model IDs in config with an owner instead of scattering them across call sites, and subscribe to the deprecations feed so the next retirement lands in your reader, not your error logs.

# config.yaml
-  model: claude-sonnet-4-20250514    # retired June 15, 2026
+  model: claude-sonnet-5             # $2/$10, 1M context

# Confirm an ID exists before you ship it
curl https://api.anthropic.com/v1/models \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01"

If the ID you're about to deploy isn't in that list, you've found your 404 before production did.

Frequently asked

My code worked Friday and started 404ing Monday. What changed?

If the model was claude-sonnet-4-20250514 or claude-opus-4-20250514, the answer is June 15, 2026. Both retired that day, and retired IDs fail outright rather than redirecting. Swap to claude-sonnet-5 or claude-opus-5 and the calls come back; the recorded replacements, claude-sonnet-4-6 and claude-opus-4-8, also work but are now legacy.

Is the replacement more expensive?

No. claude-sonnet-5 bills $2/$10 per million tokens, below Sonnet 4's $3/$15, with a 1M-token context window; claude-sonnet-4-6, the recorded replacement, kept the $3/$15 price. claude-opus-5 and claude-opus-4-8 both bill $5/$25 against the $15/$75 that Opus 4 and 4.1 charged, roughly two-thirds cheaper.

Do Bedrock and Vertex dates match these?

No. June 15 and August 5 apply to the Claude API, AWS, and Microsoft Foundry. Amazon Bedrock and Google Vertex AI keep their own retirement schedules, so check those consoles separately.

Changelog

  • — Marked Opus 4.1 as retired (August 5, 2026), kept Anthropic's recorded replacements (Sonnet 4.6, Opus 4.8) as history, and pointed new code at benchr's current picks, Claude Sonnet 5 ($2/$10) and Claude Opus 5 ($5/$25). Added Sonnet 4.5's not-sooner-than September 29, 2026 retirement to the audit step.
  • — Published. Error body, retirement dates, and replacement pricing verified against Anthropic's API error and model-deprecation documentation.

Sources