Claude not_found_error 404 — Model Not Found Fix (2026) | AI Error Hub
Anthropic Claude Model Deprecation Severity: High HTTP 404

Claude not_found_error — 404 Model Not Found

The model, endpoint, or resource you referenced doesn't exist. Usually caused by a typo in the model ID, a deprecated model version, or calling a wrong URL. Fix by updating your model reference.

Error code: not_found_error HTTP: 404 Category: Model Deprecation Last tested: Nov 14, 2026
Quick Fix (TL;DR)

Verify your model ID exactly matches Anthropic's list. Correct: claude-sonnet-4-5. Wrong: claude-sonnet-4.5 (dots not hyphens), claude-3-sonnet (deprecated), claude-4-sonnet (wrong order).

See the official model list or query client.models.list() for available models.

The Error Message You're Seeing

Response body
HTTP/1.1 404 Not Found

{
  "type": "error",
  "error": {
    "type": "not_found_error",
    "message": "model: claude-3-opus-20240229 was deprecated on 2026-01-15"
  }
}

What Actually Causes This Error

48%
Deprecated model IDYou're using claude-3-opus-20240229 or claude-3-sonnet-20240229 — deprecated in 2026. Migrate to Claude 4.x.
27%
Typo in model IDModel names use hyphens, not dots: claude-sonnet-4-5 not claude-sonnet-4.5.
15%
Wrong endpoint URLCalling /v1/completions (deprecated) instead of /v1/messages.
7%
Bedrock/Vertex model ID mismatchBedrock uses anthropic.claude-sonnet-4-5-v1:0, Vertex uses claude-sonnet-4-5@20260915, not the direct API IDs.
3%
Referenced resource missingMessage ID or batch ID in retrieve calls doesn't exist.

Fixes That Work (Tested Nov 2026)

1Use Current Model IDs

Reference this table. Model IDs change; verify against the official docs.

ProviderCurrent Model IDs
Direct APIclaude-opus-4, claude-sonnet-4-5, claude-haiku-4-5
AWS Bedrockanthropic.claude-opus-4-v1:0, anthropic.claude-sonnet-4-5-v1:0
Google Vertexclaude-opus-4@YYYYMMDD, claude-sonnet-4-5@YYYYMMDD

2List Available Models Programmatically

Python · list models
from anthropic import Anthropic client = Anthropic() # List all models available to your account models = client.models.list() for model in models.data: print(f"{model.id} — {model.display_name}") # Get a specific model's metadata model_info = client.models.retrieve("claude-sonnet-4-5") print(model_info.display_name, model_info.created_at)

3Migrate From Deprecated Models

If you're on Claude 3.x models (opus-20240229, sonnet-20240229, haiku-20240307), plan migration to 4.x now. Deprecation timelines from Anthropic typically give 6 months notice, but returns become worse over time.

DeprecatedMigrate ToNotes
claude-3-opus-20240229claude-opus-4Higher quality, similar cost
claude-3-sonnet-20240229claude-sonnet-4-5Better for coding, longer context handling
claude-3-haiku-20240307claude-haiku-4-5Faster, same price band
claude-3-5-sonnet-*claude-sonnet-4-5Direct upgrade path

Preventing This Error Going Forward

  • Subscribe to Anthropic's deprecation notices. They email admins 6+ months before deprecations.
  • Externalize model IDs into config. Don't hardcode — use env vars or a config file so migrations are one-line changes.
  • Test model changes in staging first. New models can have subtly different behavior even at the same "level."
  • Log the model ID with every request. Makes migrations traceable.
  • Set up alerts on 404 spikes. Sudden 404s often mean a deprecation you missed.
SK
Tested by Sana K.
Researcher · AI Error Hub
Last verified: Nov 14, 2026 · SDK: anthropic-sdk-python 0.42

Frequently Asked Questions

Typically 6-12 months from deprecation announcement to actual removal. During deprecation, the model still works but Anthropic notifies via email and shows warnings in the console. After the sunset date, requests return 404.

No. Model IDs are strict. claude-3-opus-20240229 does NOT automatically route to claude-opus-4. You must explicitly update the model ID in your code.

URL safety and consistency across cloud providers. Bedrock, Vertex, and the direct API all use hyphens. This lets the same ID format work everywhere (with prefixes).

No official alias exists (Anthropic wants explicit version pins for reproducibility). You can implement your own indirection in code — an env var or config that you update centrally when new models release.

Message IDs expire after 30 days for standard retention. Batch IDs are retained longer but eventually expire. If retrieving old IDs, check the retention windows in Anthropic's batch docs.