If your product calls the OpenAI API, today is not a normal day. 23 October 2026 is the removal date for a batch of older models, and it is only the first of many. OpenAI's deprecations page runs all the way to April 2027.
This guide puts every date in one table, names the model OpenAI recommends in its place, shows the current GPT-6 prices, and gives you a checklist so a model switch-off does not turn into an outage.
The full shutdown schedule#
We read OpenAI's deprecations page on 23 October 2026. The "replacement" column is OpenAI's own recommendation, not ours.
| Date | What is removed | OpenAI's recommended replacement |
|---|---|---|
| 26 Aug 2026 (done) | Assistants API | Responses API and Conversations API |
| 24 Sep 2026 (done) | Sora 2 and the Videos API (sora-2, sora-2-pro) | None listed |
| 1 Oct 2026 (done) | gpt-5.4-cyber | The most capable cyber model available to you |
| 23 Oct 2026 (today) | gpt-4-turbo, o1, o3-mini, o4-mini, gpt-image-1 and several fine-tuned models | Mostly gpt-5.6-sol, gpt-5.6-terra or gpt-5.6-luna |
| 30 Nov 2026 | Reusable prompts (v1/prompts), the Evals platform, Agent Builder | Prompts in your own code, Promptfoo, the Agents SDK or ChatGPT Workspace Agents |
| 1 Dec 2026 | gpt-image-1-mini, gpt-image-1.5, chatgpt-image-latest | gpt-image-2.5-sunburst or gpt-image-2.5-flare |
| 11 Dec 2026 | gpt-5-2025-08-07, gpt-5-mini-2025-08-07, gpt-5-nano-2025-08-07, gpt-5-pro-2025-10-06, o3-2025-04-16, o3-pro-2025-06-10 | gpt-5.6-sol, gpt-5.6-terra or gpt-5.6-luna (use reasoning.mode: pro for the pro models) |
| 6 Jan 2027 | tts-1, tts-1-hd and two gpt-4o-mini-tts snapshots | gpt-realtime-2.1-mini |
| 14 Jan 2027 | GPT-4o (two snapshots), GPT-4o mini, GPT-4.1, GPT-4.1 mini | gpt-6-luna |
| 20 Jan 2027 | Legacy audio, realtime and transcription families | gpt-realtime-2.1, gpt-realtime-2.1-mini, gpt-audio-1.5 or gpt-4o-mini-transcribe-2025-12-15 |
| 26 Feb 2027 | whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe, gpt-4o-transcribe-diarize, /v1/audio/translations | gpt-live-transcribe or gpt-transcribe; v1/realtime/translations for translation |
| 1 Apr 2027 | gpt-5.3-codex, gpt-5.1, gpt-5.4-nano | gpt-6-sol for Codex and GPT-5.1, gpt-6-luna for nano |
One more date matters if you train models: on 6 January 2027, active existing customers can no longer create new fine-tuning jobs.
Which replacement fits which job?#
OpenAI's current text models are gpt-6-astra, gpt-6.1-sol and gpt-6-luna. Its own one-line descriptions are:
gpt-6-astra: the most capable model, for the most demanding work.gpt-6.1-sol: near-Astra performance for complex work at lower cost.gpt-6-luna: the most efficient model, for focused, high-volume tasks.
A simple way to choose: start from the cheapest model that passes your tests, and only move up when it fails. Chatbots, classification, extraction and summaries usually belong on Luna. Coding help, agents and multi-step reasoning are where Sol earns its price. Astra is for the hard 5% of requests.
What the GPT-6 models cost#
These are standard prices per million tokens on OpenAI's pricing page, for prompts up to 272K tokens:
| Model | Input | Cached input | Output |
|---|---|---|---|
gpt-6-astra | $10.00 | $1.00 | $50.00 |
gpt-6.1-sol | $2.00 | $0.10 | $10.00 |
gpt-6-sol | $2.00 | $0.20 | $10.00 |
gpt-6-luna | $0.10 | $0.01 | $0.50 |
Two details save money. First, batch requests are exactly half the standard price (for Sol, $1.00 input and $5.00 output). Second, long prompts cost more: above 272K input tokens, Sol rises to $4.00 input and $15.00 output, and Astra to $20.00 and $75.00.
Do the math before you switch. A job that sends 50 million input tokens and gets 10 million output tokens a month costs $1,000 on Astra, $200 on Sol and $10 on Luna at standard rates. We calculated those figures from the table above. Your real bill depends on caching and on how many tokens each model uses to answer, so run a sample of your own traffic. (For the same exercise on another provider, see our Claude API guide.)
Step 1: Find every model your code uses#
Start with a plain search of your project, including config files, scheduled jobs and environment variables:
git grep -n -E "gpt-4|gpt-5|o1|o3|o4|whisper|tts-1|gpt-image|dall-e"That pattern is deliberately loose, so expect some false hits. Then check the places a search can miss: a database row that stores the model name, a no-code automation, a dashboard setting, or another team's script that calls your service.
Step 2: Ask the API what is retiring#
OpenAI says you can call GET /v1/models and read each model's shutdown_date field. This small script prints only the models that have a date set. We have not run it against a live account, so test it with your own key:
from openai import OpenAI
client = OpenAI()
for m in client.models.list():
date = getattr(m, "shutdown_date", None)
if date:
print(m.id, "->", date)If the field is missing on your SDK version, call the endpoint directly with curl and read the JSON. Run this check monthly, because new notices keep arriving.
Step 3: Change the name, then test the behavior#
For most apps the code change is one line. This snippet follows OpenAI's Responses API style but we have not run it against a live account, so test it first:
MODEL = "gpt-6-luna" # was "gpt-4o-mini"
reply = client.responses.create(
model=MODEL,
input="Summarize this support ticket in two sentences.",
)
print(reply.output_text)The harder part is that a new model can answer in a different style, length or format. Save about 20 real prompts from your own traffic, run them on the old and new model, and compare. Check JSON formatting, refusal behavior, response length and cost. Do not trust a benchmark that is not your task.
Step 4: If you used the Assistants API#
The Assistants API was removed on 26 August 2026, and OpenAI recommends the Responses API with the Conversations API. We could not find any note of an automatic way to move old threads, so plan to export conversation history you still need and rebuild it as conversations. Follow OpenAI's own Assistants to Conversations migration guide for the details.
Mistakes teams make#
- Hard-coding the model name in many files. Keep it in one setting so the next switch takes minutes.
- Using a dated snapshot on purpose, then forgetting it. Names like
gpt-5-2025-08-07have a fixed end date. Pinning gives stable behavior, but it also gives you a deadline. - Migrating only the main flow. Cron jobs, admin tools and an old staging environment often keep calling the dying model.
- Switching to the biggest model "to be safe". That can multiply your bill by up to 100 (Astra against Luna, from the table above) for no visible gain.
- Skipping audio and image calls. Speech, transcription and image models have their own dates in the table.
- Trusting old blog posts. Many tutorials still show models that no longer exist. Our post on spotting outdated API tutorials shows how to check.
Your checklist#
- Searched code, config, databases and no-code tools for model names.
- Ran
GET /v1/modelsand noted everyshutdown_date. - Put the model name in one setting.
- Picked replacements from OpenAI's table and confirmed the IDs exist for your account.
- Tested 20 real prompts old versus new.
- Compared cost on a sample, including cached and batch rates.
- Moved off the Assistants API, Agent Builder and
v1/prompts. - Added the dates in the table above to your team calendar.
- Set a monthly reminder to re-read the deprecations page.
Key takeaways#
- 23 October 2026 removes several legacy models, and more dates follow through 1 April 2027.
- Most replacements are a model-name change, but behavior and cost can still shift.
- OpenAI's own pages disagree on replacement names, so confirm IDs with
GET /v1/models. gpt-6-lunacosts $0.10 input and $0.50 output per million tokens, which makes it the budget default OpenAI suggests for GPT-4o users.- Image deadlines are covered in our gpt-image-1 migration guide.
- New to the API? Start with our complete OpenAI API guide, then use this schedule as your calendar.
Sources we read#
We read these OpenAI pages on 23 October 2026. Dates and prices change, so check them again before you plan.