GPT-4o Shutdown on January 14, 2027: API Retirement Date and Migration Guide
OpenAI gave three months' notice. Here is every retirement date, what gpt-6-luna really costs, what breaks when you swap, and a live countdown with a plan built around your setup.
If your product calls gpt-4o or gpt-4.1 through the OpenAI API, it stops working on January 14, 2027 unless you move it. That is about ten weeks from the date of this post. OpenAI's stated policy promises at least six months' notice for generally available models, unless safety or compliance requires less. This notice gave three, and The New Stack reported that no reason was offered. Here is what is changing, what it will cost, and the order we would do the work in.
The Dates That Matter
| Date | What stops | Replacement named |
|---|---|---|
| Jan 6, 2027 | OpenAI: active customers can no longer create new fine-tuning jobs | None |
| Jan 14, 2027 | OpenAI: gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, dated snapshots and fine-tunes on them | gpt-6-luna |
| Jan 14, 2027 | Azure: gpt-4o version 2024-05-13 | gpt-5.1 |
| Jan 20, 2027 | OpenAI: gpt-4o-realtime and gpt-4o-audio families | gpt-realtime-2.1, gpt-audio-1.5 |
| Apr 14, 2027 | Azure: gpt-4o 2024-08-06 and 2024-11-20, gpt-4o-mini, gpt-4.1, gpt-4.1-mini | gpt-5.1 for gpt-4o |
| Oct 2027 | Azure: fine-tuned gpt-4o and gpt-4.1 deployments | None |
Two details are easy to miss. The first GPT-4o snapshot and GPT-4.1 nano were on an earlier schedule that The New Stack puts at October 23, so check for those too. And OpenAI's retirement of GPT-4o from ChatGPT in February 2026 was a separate event: the API kept running until this notice.
Build Your Migration Plan
Tick what applies. The plan changes with your answers, and the dates are worked back from your deadline. An app with no eval set gets a very different first month from one that has it.
What gpt-6-luna Costs Compared With gpt-4o
On list prices, Luna is the cheapest option by a distance. OpenAI launched it in September 2026, and a spokesperson told VentureBeat the rates are permanent. Per million tokens:
| Model | Input | Cached input | Output |
|---|---|---|---|
| gpt-4o | $2.50 | $1.25 | $10.00 |
| gpt-4.1 | $2.00 | $0.50 | $8.00 |
| gpt-4.1-mini | $0.40 | $0.10 | $1.60 |
| gpt-4o-mini | $0.15 | $0.075 | $0.60 |
| gpt-6-luna | $0.10 | $0.01 | $0.50 |
| gpt-6.1-terra | $1.00 | $0.05 | $5.00 |
Three things in the fine print can take the saving away, and they matter most if you are on gpt-4o-mini, where the gap is small to begin with.
- Long prompts. Above 272,000 input tokens, Luna charges double for input and 1.5 times for output across the whole request.
- Reasoning tokens. OpenAI bills these as output tokens even though you never see them, and Luna defaults to medium effort if you say nothing.
- Cache writes. Luna lists these at $0.125 per million, which is above its normal input price. Cached reads are very cheap, so this usually pays off on repeated prompts. Measure it.
From gpt-4o the saving survives almost anything. From gpt-4o-mini, it can vanish. Compare cost per successful task, including retries, and ignore cost per token. If Luna fails your evals, the next step up in the price list is gpt-6.1-terra at $1 and $5, which is still well under gpt-4o.
What Actually Breaks
The New Stack put it well: swapping the model ID may be the easiest part of the migration. These are the differences we would check first.
| Area | On gpt-6-luna | What to do |
|---|---|---|
| Reasoning | Medium by default | Set effort to none explicitly, which is where OpenAI says to start for GPT-4.x |
| Tool calls | Chat Completions supports them only at effort none | Use the Responses API if you need reasoning with tools |
| Sampling | temperature, top_p, top_logprobs and logprobs are ruled out when reasoning is on | Remove them, or stay at none |
| Output limit | max_output_tokens includes reasoning tokens | Raise tight limits, and handle status: incomplete, which may return no visible text |
| Fine-tuning | Not supported | Rebuild with prompts, examples or retrieval |
| Snapshots | Only the default gpt-6-luna is listed | You cannot pin a dated version, so re-run evals on a schedule |
Silent failures worry us more than errors. A 400 error shows up in your logs on the first request. A model that writes differently, calls a tool one step earlier or returns a shorter answer passes every health check. That is why the evals come before the swap.
The Migration, in Order
1. Find every model string
Search more than your code. Model names also live in environment variables, database rows, prompt tools, no-code automations and vendor settings. The New Stack reports that OpenAI's List models API now includes a shutdown_date field, which is worth wiring into a scheduled check.
# Every reference in the repo, including config files rg -n --hidden -g '!node_modules' -e 'gpt-4o' -e 'gpt-4\.1' . # Also check your usage dashboard by model, per API key, # to catch services nobody remembers.
2. Put an abstraction layer in the way
You do not need a framework for this. You need one place per service where the model and its settings live. BlurbBio, our AI writing platform, has one configuration per service, which is what makes it possible to swap a model and re-run every evaluation. Shelf Inn, our home library app, switches its vision provider between OpenAI and Anthropic by configuration in the same way.
// config/models.ts: the only file that names a model
export const MODELS = {
supportReply: { model: "gpt-6-luna", reasoning: "none", maxOutput: 1200 },
nightlySummary: { model: "gpt-6-luna", reasoning: "none", maxOutput: 4000 },
} as const;The cost is one more layer to maintain, and every model change still means re-measuring. It pays for itself the second time a provider retires a model on short notice.
3. Write evals before you swap
OpenAI's help article sets out the same order: record a baseline on your current model, evaluate Luna at effort none against it, tune, then roll out to a limited share of traffic. If you have no eval set, build one now from 50 to 100 real inputs with correct answers, including hard cases and any other languages you serve. For BlurbBio we keep answer keys for test manuscripts, including a control book with planted errors, and a check goes live only when it passes. Yours can be much simpler, as long as it is written down.
Measure task quality, schema validation success, latency and total cost per successful task. Microsoft's openaivec guide uses the same list, and adds a trap worth checking: if your cache key is built from the input alone, new and old model outputs can get mixed in one comparison.
4. Hunt prompt regressions
Fix one thing at a time and re-run the set after each change. Look at output format first, then tool use, then tone, because format failures break downstream code. If your parser needs complete JSON, watch for answers cut off by the output limit. In Shelf Inn we moved vision results to one pipe-delimited line per book for this reason: a cut-off response still yields every complete line, where truncated JSON yields nothing.
5. Shadow traffic, then a staged rollout
Copy a sample of live requests to the new model, discard its answers and compare. Expect to pay for both models while this runs. Then move a small share of real traffic, watch cost per task and error rates, and increase in steps.
6. Plan a rollback that outlives the deadline
Here is the trap in a forced migration: after January 14, rolling back to gpt-4o is impossible. Before then, your rollback is the old model. After it, your rollback has to be the previous prompt on the new model, or a second model you have already tested. Keep that option warm for a few weeks, and put a kill switch on the change.
If You Are on Azure, or Need More Time
Azure runs its own schedule, and for most versions you get until April 14, 2027. Global Standard and Data Zone Standard deployments of gpt-4o 2024-05-13 upgrade automatically to gpt-5.1 on January 14. Provisioned deployments do not, so you must move those yourself, and Microsoft says retirement dates cannot be extended. Note that gpt-5.1 itself is scheduled to retire on July 13, 2027, so take the extra time and pick a target that lasts.
OpenAI customers who need longer may be able to keep older models on dedicated capacity through its sales team, according to The New Stack. And this is a fair moment to test another provider. If your config layer is in place, a Claude or Gemini model is one more row in the same eval run, and we would rather choose on results than on habit.
You may not need us for any of this. If you have one service, a clear task and a handful of prompts, a good engineer can do this in days using the steps above.
Where This Is Heading
Three things from this round will outlast the deadline.
- Notice periods cannot be taken as given. A six-month policy produced a three-month notice in October 2026. Build your process around the shorter number.
- Retirement dates are becoming machine-readable. OpenAI's
shutdown_datefield and Azure's Models API, with its lifecycle status and deprecation dates, both let you check automatically. Put that in monitoring. - Model churn is now an ownership cost. Azure's schedule alone lists retirements for gpt-5, gpt-5.1 and gpt-5.4 during 2027. Budget a round of re-testing every year, as we argue in what an AI agent really costs.
Need This Done Before January?
Tell us which models you use, how many services call them and whether you have an eval set, and we will say how much work this is. Our AI integration service covers the migration, the evals and the rollout. If your exposure is a support bot, it may be a good moment to look at our custom AI chatbot work, and if agents are involved, read how to prevent prompt injection before you widen what the new model can do.
Sources (11)
Common questions
When is GPT-4o retired from the API?
OpenAI's deprecations page lists January 14, 2027 for gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, their dated snapshots and fine-tunes built on them. The gpt-4o-realtime and gpt-4o-audio families follow on January 20, 2027.
What replaces GPT-4o in the API?
OpenAI names gpt-6-luna as the replacement for all four text models. Its help article suggests starting at reasoning effort none. For realtime and audio, it names gpt-realtime-2.1 and gpt-audio-1.5.
Is gpt-6-luna cheaper than gpt-4o?
On list prices, yes: $0.10 input and $0.50 output per million tokens, against $2.50 and $10 for gpt-4o. Prompts over 272,000 tokens cost more, and reasoning tokens bill as output, so compare cost per successful task.
What happens to my GPT-4o fine-tuned models?
On the OpenAI API they follow the base model's shutdown on January 14, 2027, and gpt-6-luna does not support fine-tuning. Azure lists fine-tuned gpt-4o deployments until October 1, 2027 and gpt-4.1 until October 14, 2027.
Does Azure OpenAI retire GPT-4o on the same date?
Only version 2024-05-13. Microsoft's schedule lists January 14, 2027 for that version and April 14, 2027 for gpt-4o 2024-08-06 and 2024-11-20, gpt-4o-mini and gpt-4.1. Provisioned deployments are not upgraded automatically.
Move off GPT-4o before January 14
Tell us which models you use, how many services call them and whether you have an eval set. We will size the migration, or tell you that you can do it yourself.