OpenAI Kills 12 Model APIs Tomorrow (Oct 23) — Check Your Code Tonight
Tomorrow morning, requests to o1, o4-mini, gpt-4-0613, and nine other OpenAI model IDs start failing. Not warning. Failing.
OpenAI announced this batch back in April, and the deprecation emails went out months ago — which is exactly why half of us forgot. The Sep 28 batch (babbage-002, davinci-002, gpt-3.5-turbo-1106) already died quietly while everyone was watching this one. This is the big one: the last of the GPT-3.5/GPT-4 names and the whole o-series mini lineup, gone from the API in about 24 hours.
If any of your code calls OpenAI, tonight is the night to check. Here's the list, the map, and the checklist.
What's dying tomorrow
From OpenAI's deprecations page (the April 22 "Legacy GPT model snapshots" batch):
| Dying Oct 23 | OpenAI's replacement |
|---|---|
gpt-3.5-turbo-0125 (+ bare gpt-3.5-turbo) |
gpt-5.6-terra |
gpt-4-0613 (+ bare gpt-4) |
gpt-5.6-sol |
gpt-4-turbo, gpt-4-1106-preview
|
gpt-5.6-sol |
gpt-4o-2024-05-13 |
gpt-5.6-sol |
gpt-4.1-nano-2025-04-14 (+ bare gpt-4.1-nano) |
gpt-5.6-luna |
o1-2024-12-17 (+ bare o1) |
gpt-5.6-sol |
o1-pro-2025-03-19 (+ bare o1-pro) |
gpt-5.6-sol (reasoning mode pro) |
o3-mini-2025-01-31 (+ bare o3-mini) |
gpt-5.6-sol |
o4-mini-2025-04-16 (+ bare o4-mini) |
gpt-5.6-terra |
gpt-image-1 |
gpt-image-2.5-sunburst / gpt-image-2.5-flare
|
Fine-tunes of the above (ft-gpt-3.5-turbo, ft-gpt-4, ft-gpt-4.1-nano, ft-o4-mini...) |
Rebuild on the new base |
Three gotchas that catch people:
-
The bare aliases die too. Code calling
o1instead ofo1-2024-12-17is affected. OpenAI listed both, and the alias dies with the snapshot. This is the one that gets the cron jobs nobody remembers writing. -
Fine-tunes die with their base model. If you fine-tuned
gpt-3.5-turboin 2024, inference on that fine-tune stops tomorrow. Rebuilding a fine-tune takes real time — if you have one, check it first, because this is the item that doesn't fit in an evening. -
gpt-4o-2024-05-13is a GPT-4o snapshot, not GPT-4. If you pinned it for reproducibility — which was the responsible thing to do at the time — you're on this list and you might not realise it.
What's NOT affected: ChatGPT itself, Azure OpenAI (different retirement calendar — check your Azure dates), and the newer 4o snapshots, which live until Jan 14, 2027.
The tonight checklist
Don't read docs. Do this:
- [ ] Grep every repo for the dead IDs. Not just
o1— grep the dated snapshots too. Include config files,.env.examplefiles (they reveal what production expects), Dockerfiles, and Terraform/Helm values. - [ ] Check env vars and secrets managers. The model name often lives in an env var, not in code. Check your secrets manager, your CI variables, and your deployment platform's env panel.
- [ ] Check scheduled jobs and queues. A nightly batch job calling
gpt-4-0613will fail silently and look like "the queue is just slow" until someone checks the backlog. This is the failure mode that costs you a weekend. - [ ] Check prompt-management configs. If you use any prompt versioning tool or template system, the model ID is probably pinned there, not in your application code.
- [ ] Swap and smoke-test. Replace with the mapped model, then run one real request per changed call site before you sleep. Don't trust "the SDK handles it" — the parameter shapes differ slightly between generations, especially
reasoning/ effort params on the o-series replacements. - [ ] Fine-tunes: triage now. If a fine-tune is dying, you cannot fix it tonight. Decide: rebuild on the new base this week, or fall back to the base model temporarily. Either way, know which one before tomorrow.
- [ ] Image pipelines: test
gpt-image-2.5output. Image model swaps change output style. If your product shows these images to users, eyeball a few before committing.
What I'd actually do
If I found gpt-3.5-turbo in one place tonight: swap to gpt-5.6-terra, run a smoke test, go to bed. That's a 20-minute job and it's the most common case.
If I found a pinned gpt-4o-2024-05-13: swap to gpt-5.6-sol, but replay a handful of production prompts against it and diff the outputs. Pinned snapshots were pinned for a reason — behaviour will shift, and "the tests pass" isn't enough when the model is a different generation. Budget an hour.
If I found a fine-tune: accept tonight that it's not getting fixed tonight. Point the call at the base replacement as a stopgap, and schedule the rebuild. The stopgap will be dumber than your fine-tune — tell whoever owns that feature.
And write the model ID into one place this time — a config constant, not twelve string literals across four services. Future-you, staring at the Jan 14 4o shutdown, will be grateful.
The bigger pattern
This isn't a one-off. OpenAI's calendar keeps going: evals go read-only Oct 31, the prompts API and Agent Builder die Nov 30, older image models Dec 1, first-gen GPT-5 snapshots Dec 11, and the rest of GPT-4o on Jan 14. Model IDs are now a maintenance surface, like dependency versions. Pin deliberately, inventory them somewhere, and treat a deprecation email like a CVE notice — because tomorrow, for twelve model IDs, it is one.
Your turn
Go grep. Then come back and tell me — did you find a dead model ID somewhere embarrassing? A cron job? A Terraform file from 2024? I have a feeling the comments on this one are going to be confessional. If this saved you a 3am incident, a reaction helps it reach the next person who hasn't grepped yet.
Top comments (2)
The grep-every-repo step has a faster twin for tonight: the OpenAI usage dashboard breaks down calls by model, so you can see which of the twelve dying IDs your org is still hitting in production without touching a single repo. Filter by model, and anything on the shutdown list with calls in the last 24 hours is a live fire - then grep for where. It catches the cron jobs and the services nobody remembers owning, which is where these always hide. One more date for the calendar while you are in there: the evals and prompts API go at the end of next month, and the rest of GPT-4o follows Jan 14. We keep a running checklist of these shutdown dates (full disclosure: we built it) at shuttlewright-deadlines.pillar-3a8... - the Jan 14 batch is the one to schedule now, because it is the one that will arrive exactly like this one did.
Oh, the dashboard-before-grep order is smart — filter by model first, and you're only grepping for the IDs that are actually live instead of all twelve. And yeah, the cron jobs and mystery services nobody remembers owning are exactly where these things hide; the repo you checked at 2am isn't the one that breaks you. The Jan 14 date is worth flagging too — same drill, bigger blast radius. This one's genuinely making me reconsider the order of my checklist steps.