Claude Haiku 3 retired April 20, breaking production code
Anthropic retired `claude-3-haiku-20240307` on April 20, 2026, causing immediate API errors for any code still referencing the old model ID — with no automatic fallback to a replacement model.
Score breakdown
Teams running any Claude 3-era model ID in production should audit environment variables, framework defaults, and test fixtures immediately, and build automated monitoring against `GET /v1/models` to catch the next retirement — `claude-opus-4` and `claude-sonnet-4` — before it breaks users.
- 01Anthropic retired `claude-3-haiku-20240307` on April 20, 2026 — requests now return hard errors, not redirects.
- 02The error response is either `not_found_error` or `invalid_request_error` from the Messages API.
- 03The recommended replacement is `claude-haiku-4-5-20251001`, but it is not a drop-in swap due to Claude 4 API breaking changes.
FlareCanary's post on Dev.to explains that Anthropic's retirement of `claude-3-haiku-20240307` on April 20, 2026 is a hard cutoff — not a soft deprecation with automatic fallback. Requests to the old model ID now return a `not_found_error` or `invalid_request_error` from the Messages API, with no redirect to a successor model. The retirement was announced 60 days in advance, but teams that missed the notice are discovering the breakage through production alerts or user reports. The post recommends running `git grep -n "claude-3-haiku-20240307"` and `git grep -n "claude-3-haiku"` to find all references, and highlights non-obvious locations: environment variables, framework wrappers like LangChain, LlamaIndex, Vercel AI SDK, and LiteLLM, hardcoded test fixtures such as VCR cassettes, and model-routing logic that selects a "cheap" model by task type.
The recommended replacement, `claude-haiku-4-5-20251001`, introduces several breaking changes relative to Haiku 3.
The recommended replacement, `claude-haiku-4-5-20251001`, introduces several breaking changes relative to Haiku 3. Setting both `temperature` and `top_p` simultaneously — previously accepted — is now rejected. New `stop_reason` values are emitted that Haiku 3 never produced, which can break exhaustive `switch`/`match` statements. Trailing newlines in tool parameters are now preserved rather than stripped, potentially causing exact-match validation failures. Rate limits are tracked separately per model, so prior Haiku 3 quota headroom does not carry over. Pricing increased 4× to $1.00 input / $5.00 output per million tokens, up from $0.25 / $1.25.
The post also situates this event within Anthropic's broader deprecation timeline — Claude Sonnet 3.5 retired October 28, 2025; Claude Opus 3 on January 5, 2026; Claude 3.5 Haiku and Claude Sonnet 3.7 on February 19, 2026 — and flags that `claude-opus-4` and `claude-sonnet-4` are scheduled to retire June 15, 2026. The broader lesson the post draws is that third-party API surfaces — model lists, error shapes, documented schemas — should be treated as contracts that teams continuously verify by polling `GET /v1/models`, diffing against a known baseline, and alerting on breaking changes before they reach production.
Key facts
- 01Anthropic retired `claude-3-haiku-20240307` on April 20, 2026 — requests now return hard errors, not redirects.
- 02The error response is either `not_found_error` or `invalid_request_error` from the Messages API.
- 03The recommended replacement is `claude-haiku-4-5-20251001`, but it is not a drop-in swap due to Claude 4 API breaking changes.
- 04