Skip to content
Relaykit
AI News

October 23 Shutdown: GPT-4, GPT-3.5 Turbo, o1 and o4-mini Leave the OpenAI API

OpenAI retires a long list of older models on October 23, 2026. What is going, what replaces each one, and how to find them in your code.

Relaykit TeamPublished 6 min read
On this page

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-mini and o4-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-sol and gpt-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 grep and 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-2 and sora-2-pro models were removed. The deprecations page names no replacement.
  • Legacy snapshots, September 28. gpt-3.5-turbo-instruct, babbage-002, davinci-002 and gpt-3.5-turbo-1106 were shut down, with gpt-5.6-terra as 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:

find retiring model IDs
# 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:

check_models.py
"""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_MODEL or MODEL_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.

More in AI News

Try it

One API key for Claude, GPT, Grok and DeepSeek.

Relaykit speaks the OpenAI and Anthropic formats, so you change the base URL and the key, not your code. Top-ups start at $3, credit packs at $10, and every model has a published per-token rate.