OpenAI shuts down gpt-4o, gpt-4o-mini and gpt-4.1 (and their dated snapshots) on 14 January 2027. tts-1 and gpt-4o-mini-tts go on 6 January, the old realtime models on 20 January, and whisper-1 and gpt-4o-transcribe on 26 February. Anthropic retires claude-sonnet-4-5-20250929 on 30 November 2026. After the date, calls to a retired model fail.
Searching for "gpt-4o" finds the obvious calls. These are the ones it misses:
-
Gateway and cloud spellings:
openai/gpt-4o(OpenRouter),us.anthropic.claude-sonnet-4-5-20250929-v1:0(Bedrock),claude-sonnet-4-5@20250929(Vertex), and fine-tunes likeft:gpt-4o-mini-2024-07-18:org::abc123, which die with their base model. -
Dated snapshots: grep for the exact quoted string
"gpt-4o"and you miss"gpt-4o-2024-08-06"; grep without quotes and you also hit everygpt-4o-miniand unrelated mention, with no dates attached. -
n8n defaults that never appear in the export: n8n writes a node parameter only when it differs from the default. An OpenAI chat-model node left on its default shows no model at all in the workflow JSON. The OpenAI node's audio transcribe operation hardcodes
whisper-1in n8n's own code, so you can't see it or change it in the node at all. -
Config and prompts:
.envfiles, YAML, notebooks, and model names inside prompt templates.
A scanner that handles those cases
I put the matching rules and a dated registry (OpenAI, Anthropic, Google, with a source link for every entry) into a small dependency-free Node script:
git clone https://github.com/Donrulezz/ai-model-retirement-scanner
node ai-model-retirement-scanner/cli.js path/to/project
where model shutdown move to
example/summarize.py (line 8) gpt-4o-mini 2027-01-14 (in 78 days) gpt-6-luna
example/support-workflow.json (Support replies > Reply model) gpt-4.1 2027-01-14 (in 78 days) gpt-6-luna
example/support-workflow.json (Support replies > Transcribe call) whisper-1 2027-02-26 (in 121 days) gpt-transcribe or gpt-live-transcribe
3 finding(s) in 2 files, 2 due within 90 days (registry updated 2026-10-28).
For n8n, export everything first (n8n export:workflow --all --output=workflows.json) and scan the file.
Block it in CI
- run: git clone --depth 1 https://github.com/Donrulezz/ai-model-retirement-scanner /tmp/amrs
- run: node /tmp/amrs/cli.js . --fail-within 60
The job fails when anything in the repo shuts down within 60 days, or has already shut down.
Before you switch
The replacements behave differently. For example, gpt-6-luna is a reasoning model: on Chat Completions, tool calls work only with reasoning_effort: none, and temperature / top_p must be removed unless the effort is none. Test your own prompts on the new model before the date, not on it.
Scanner (MIT): https://github.com/Donrulezz/ai-model-retirement-scanner. Issues welcome if a date moves or a model is missing.
Top comments (1)
The point about n8n nodes left on their default model is easy to miss, since nothing shows in the exported JSON. I'd also open each OpenAI node in the editor once, before the January dates, instead of trusting a search alone.