In short:
- On October 23, 2026 OpenAI shuts down a long list of older models, including
gpt-4,gpt-4-turbo,gpt-3.5-turbo,o1,o1-pro,o3-miniando4-mini. Requests to these IDs will fail after that date. - This follows other removals in the last eight weeks: the Assistants API (August 26), Sora 2 and the Videos API (September 24) and four legacy completion-era models (September 28).
- OpenAI’s suggested replacements are mostly
gpt-5.6-solandgpt-5.6-terra. On the Anthropic side, Claude Sonnet 4.5 retires on November 30. - Search your code, configs and environment files now. A one-line
git grepand a short CI check are below.
What shuts down on October 23
OpenAI announced this batch on April 22, 2026. Its deprecations page pairs each model with a substitute:
| Retiring model ID (and aliases) | Suggested replacement |
|---|---|
gpt-3.5-turbo, gpt-3.5-turbo-0125 |
gpt-5.6-terra |
gpt-4, gpt-4-0613 |
gpt-5.6-sol |
gpt-4-1106-preview |
gpt-5.6-sol |
gpt-4-turbo, gpt-4-turbo-2024-04-09 |
gpt-5.6-sol |
gpt-4.1-nano, gpt-4.1-nano-2025-04-14 |
gpt-5.6-luna |
gpt-4o-2024-05-13 |
gpt-5.6-sol |
o1, o1-2024-12-17 |
gpt-5.6-sol |
o1-pro, o1-pro-2025-03-19 |
gpt-5.6-sol with reasoning.mode: pro |
o3-mini, o3-mini-2025-01-31 |
gpt-5.6-sol |
o4-mini, o4-mini-2025-04-16 |
gpt-5.6-terra |
gpt-image-1 |
gpt-image-2.5-sunburst or gpt-image-2.5-flare |
The list also includes the -completions variants of gpt-3.5-turbo, gpt-4 and gpt-4-turbo, and a fine-tuned o4-mini snapshot.
Two details are easy to miss. First, aliases go too. Code that sends the bare gpt-4 or o1 alias is affected, not only code that pins a dated snapshot. Second, these IDs hide in places you don’t check often: default values in an SDK wrapper, a fallback model in a retry path, an evaluation script, or a .env.example that new developers copy.
Already gone
- Assistants API, August 26. OpenAI announced this a year in advance and points users to the Responses and Conversations APIs. Code that creates threads and runs no longer works.
- Sora 2 and the Videos API, September 24. The Videos API endpoints and the
sora-2andsora-2-promodels were removed. The deprecations page names no replacement. - Legacy snapshots, September 28.
gpt-3.5-turbo-instruct,babbage-002,davinci-002andgpt-3.5-turbo-1106were shut down, withgpt-5.6-terraas the suggested replacement. gpt-5.4-cyber, October 1. It was announced on September 11, which is an unusually short notice period.
Coming next
OpenAI’s deprecations page also lists these dates:
| Date | What shuts down | Suggested replacement |
|---|---|---|
| October 31, 2026 | Evals platform becomes read-only | Fully shut down November 30. OpenAI points to Promptfoo |
| November 30, 2026 | Reusable Prompts API (v1/prompts) |
Move prompt text into your own code |
| November 30, 2026 | Agent Builder | Agents SDK or ChatGPT Workspace Agents |
| December 1, 2026 | gpt-image-1-mini, gpt-image-1.5, chatgpt-image-latest |
gpt-image-2.5-sunburst or -flare |
| January 6, 2027 | tts-1, tts-1-hd and older gpt-4o-mini-tts snapshots |
gpt-realtime-2.1-mini |
| February 26, 2027 | whisper-1 and the gpt-4o transcription models |
gpt-live-transcribe or gpt-transcribe |
| April 1, 2027 | GPT-5.3-Codex, GPT-5.1, GPT-5.4-Nano | gpt-6-sol or gpt-6-luna |
The April 2027 entry was announced on October 1. It is the first scheduled retirement for models from the GPT-5 generation.
Anthropic: one gone, one going
Anthropic’s release notes record two lifecycle changes in the same period:
- Claude Opus 4.1 (
claude-opus-4-1-20250805) was retired on August 5, 2026. Requests to it now return an error. - Claude Sonnet 4.5 (
claude-sonnet-4-5-20250929) was marked deprecated on September 30 and retires on November 30, 2026. Anthropic recommends Claude Sonnet 5.5. We cover the 5.5 models and their breaking changes in a separate post.
Find retiring IDs in your code
Start with a plain search. This finds the IDs in tracked files, including config and example env files:
# Search a repository for model IDs that shut down on or before October 23, 2026.
# Run from the repository root. Matches strings in code, configs and .env files.
git grep -n -E "gpt-3\.5-turbo|gpt-4-0613|gpt-4-1106-preview|gpt-4-turbo|gpt-4\.1-nano|gpt-4o-2024-05-13|gpt-image-1([^.-]|$)|o1-pro|o1-2024-12-17|\"o1\"|o3-mini|o4-mini|babbage-002|davinci-002|claude-opus-4-1|claude-sonnet-4-5" -- . ':!*.lock'Then stop new references from creeping back in. This small script exits with a non-zero status when it finds a match, so you can run it in CI:
"""Fail a CI run if code references a retired or retiring model ID."""
import pathlib, re, sys
RETIRING = {
# model id pattern : shutdown date
r"gpt-3\.5-turbo": "2026-10-23",
r"gpt-4-0613|gpt-4-1106-preview": "2026-10-23",
r"gpt-4-turbo": "2026-10-23",
r"gpt-4\.1-nano": "2026-10-23",
r"gpt-4o-2024-05-13": "2026-10-23",
r"\bo1(-pro)?\b": "2026-10-23",
r"o3-mini|o4-mini": "2026-10-23",
r"claude-sonnet-4-5": "2026-11-30",
}
SKIP = {".git", "node_modules", "dist", ".venv"}
hits = 0
for path in pathlib.Path(".").rglob("*"):
if not path.is_file() or SKIP & set(path.parts) or path.stat().st_size > 1_000_000:
continue
try:
text = path.read_text(encoding="utf-8")
except (UnicodeDecodeError, OSError):
continue
for lineno, line in enumerate(text.splitlines(), 1):
for pattern, date in RETIRING.items():
if re.search(pattern, line):
hits += 1
print(f"{path}:{lineno}: matches {pattern!r} (shutdown {date})")
sys.exit(1 if hits else 0)Some places a search won’t reach:
- Environment variables on servers and CI runners, such as
OPENAI_MODELorMODEL_NAME. Check the deployed values, not only the defaults in the repository. - Database rows. Apps that let users pick a model often store the ID per user or per workspace. Migrate those rows and map old values to new ones in code.
- Third-party tools. Agents and editor extensions sometimes ship with a default model. Check their settings files.
When you swap a model, re-run whatever evaluation you have, even if it is ten prompts in a text file. The replacements are newer reasoning models. Output length, latency and cost per request will all differ from the model you are replacing.
What this means if you use Relaykit
Our catalogue only lists models we serve today, and none of the retiring models above are in it. If your code calls a model ID we do not serve, the request fails with an error instead of being silently sent to a different model. We think that is the safer behaviour.
Of OpenAI's suggested replacements, we currently serve GPT-5.6 Sol and GPT-5.6 Terra. Claude Sonnet 4.5 is not in our catalogue, so the November 30 retirement does not change anything you call through us.
The models page is the current list with our rates. If we ever have to remove a model, we will announce it in Product Updates with a date before it happens.
Relaykit is an independent service and is not affiliated with OpenAI or Anthropic.