On 11 December 2026, OpenAI removes gpt-5, gpt-5-mini, gpt-5-nano, gpt-5-pro, o3 and o3-pro from the API, together with their dated snapshots. From that day, API calls to these models fail. OpenAI recommends gpt-5.6-sol, gpt-5.6-terra and gpt-5.6-luna as replacements.
Changing the model name takes a minute. Checking that your prompts still give the answers your app expects takes longer, and it can only be done while the old model still answers.
What retires, and what replaces it
OpenAI announced the shutdown on 11 June 2026 on its deprecations page. Both the short name and the dated snapshot stop working:
| Model | Snapshot | Replacement |
|---|---|---|
gpt-5 | gpt-5-2025-08-07 | gpt-5.6-sol |
gpt-5-mini | gpt-5-mini-2025-08-07 | gpt-5.6-terra |
gpt-5-nano | gpt-5-nano-2025-08-07 | gpt-5.6-luna |
gpt-5-pro | gpt-5-pro-2025-10-06 | gpt-5.6-sol with reasoning.mode: pro |
o3 | o3-2025-04-16 | gpt-5.6-sol |
o3-pro | o3-pro-2025-06-10 | gpt-5.6-sol with reasoning.mode: pro |
Fine-tuned models built on any of these follow the same date, so an ID like ft:gpt-5-mini-2025-08-07:your-org::abc123 stops working on 11 December too. o3 and o3-pro don't get an o-series successor: both move to the GPT-5.6 family.
Two other OpenAI shutdowns land just before. On 30 November the Evals platform and the reusable prompts API (v1/prompts) shut down, and on 1 December the older GPT Image models go.
Step 1: find every place your code uses them
Run this in the root of your repository. No install, account or API key; it lists every OpenAI, Anthropic and Google model ID it finds with file, line and retirement date:
npx -y @aidriftline/driftline . A plain search works too, as long as you remember what it misses:
grep -rnE '"(gpt-5(-mini|-nano|-pro)?|o3(-pro)?)(-20[0-9-]+)?"' . Places that are easy to overlook:
- Environment variables and deployment settings, such as
OPENAI_MODEL=gpt-5in a.envfile, a Helm chart or your hosting dashboard. These never show up in a code search. - Model names stored in a database, for example a per-customer or per-feature setting.
- Defaults inside libraries and agent frameworks. If you never set a model, check which one your SDK or framework picks.
- Evaluation scripts, notebooks and cron jobs that only run once a week.
- Azure OpenAI deployments. Azure has its own retirement schedule, so check Azure's model retirement page for those.
Step 2: test your prompts before 11 December
A new model gives different answers to the same prompt. Usually they're fine, sometimes better. The problems show up where your code depends on the shape of the answer:
- JSON that no longer matches your schema, or extra text around it
- answers that are much longer or shorter, which matters for UI limits and cost
- different tool or function calls for the same request
- refusals on prompts that used to work
- a different tone in customer-facing text
The test is simple. Take 10 to 20 real prompts from your logs, including the odd ones, run each on the old model and on the replacement, and compare the answers side by side. Check that every answer your code parses still parses.
The timing matters. After 11 December the old model is gone, so you can no longer see what it would have answered. You can only compare while both models respond. With the Evals platform shutting down on 30 November, OpenAI points to Promptfoo as one way to run such comparisons yourself.
Step 3: switch, then keep it from happening again
Change the model name, deploy well before 11 December, and watch your error logs for the first days. If you use gpt-5-pro or o3-pro, set reasoning.mode: pro on gpt-5.6-sol, otherwise you get the standard mode.
The GPT-5.6 models will retire one day too. A check in CI that flags retired and soon-to-retire model IDs on every pull request saves you from finding out on the day.
I build Driftline, which tracks these retirement dates and runs the scan above. The full list of dates, with one page per model, is at aidriftline.com/models.
