OpenAI's API stops serving the last GPT-4o and GPT-4.1 snapshots on 14 January 2027. The deprecation, announced on 14 October 2026, covers gpt-4o-2024-08-06, gpt-4o-2024-11-20, gpt-4o-mini-2024-07-18, gpt-4.1-2025-04-14 and gpt-4.1-mini-2025-04-14, and fine-tuned versions of these models follow the same date. The recommended replacement for all four is gpt-6-luna1. Azure OpenAI retires the same versions three months later, on 14 April 20272.
Eleven weeks is enough time if the work starts now. Most of it goes to the step teams skip: proving the replacement does the job, because Luna is not a renamed GPT-4o. This guide gives the dates, what changes in the request, a plan, and a short box for the people who sign off on it.
The dates
| Snapshot | OpenAI shutdown | OpenAI replacement | Azure OpenAI retirement | Azure replacement |
|---|---|---|---|---|
gpt-4o-2024-05-13 | 23 October 2026 (done) | gpt-5.6-sol | 9 December 2026 | gpt-5.6-sol |
gpt-4o-2024-08-06 | 14 January 2027 | gpt-6-luna | 14 April 2027 | gpt-5.1 |
gpt-4o-2024-11-20 | 14 January 2027 | gpt-6-luna | 14 April 2027 | gpt-5.1 |
gpt-4o-mini-2024-07-18 | 14 January 2027 | gpt-6-luna | 14 April 2027 | none listed |
gpt-4.1-2025-04-14 | 14 January 2027 | gpt-6-luna | 14 April 2027 | none listed |
gpt-4.1-mini-2025-04-14 | 14 January 2027 | gpt-6-luna | 14 April 2027 | none listed |
gpt-4.1-nano-2025-04-14 | 23 October 2026 (done) | gpt-5.6-luna | 14 April 2027 | none listed |
Aliases. OpenAI's table lists dated snapshots under the model names, not the bare aliases1. The GPT-4o model page names gpt-4o-2024-08-06 as the default snapshot and lists every GPT-4o snapshot as deprecated or shut down3. With every snapshot behind gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini on the list, plan as if the aliases stop on the same day; OpenAI has not announced that any of them will move to a newer model.
Fine-tunes. On OpenAI's API, "fine-tuned versions of these models follow the same shutdown schedule as their underlying base models"1. On Azure, fine-tuned models retire in two phases: training no earlier than 14 April 2027 (1 April for the GPT-4o family) for existing customers, and deployments on 1 October 2027 for GPT-4o and GPT-4o mini and 14 October 2027 for the GPT-4.1 family2.
What a shutdown is. OpenAI defines shutdown as the point at which a model "is no longer accessible"1. Nothing on the page describes an automatic upgrade on OpenAI's own API. Treat any request still naming one of these ids after the date as a failure.
What changes when you move to GPT-6 Luna
The replacement is a different kind of model. Check each of these against your code before you measure anything.
| GPT-4o mini / GPT-4.1 mini | GPT-6 Luna | |
|---|---|---|
| Reasoning | None | Reasoning model; effort none, low, medium (default), high, xhigh, max |
| Chat Completions function calling | Yes | Only when reasoning effort is none |
| Fine-tuning | Supported on the base models | Not supported |
| Context window | Model dependent | 1,050,000 tokens (922,000 input, 128,000 output) |
| Snapshots | Dated | gpt-6-luna is the default and only snapshot |
Effort is on by default. Luna defaults to medium reasoning effort4. Reasoning tokens are hidden but billed as output tokens, and the output limit covers reasoning and visible output together; if generation hits it, the response can come back incomplete with no visible text5. A max_tokens sized for GPT-4o's answers can be too small. Decide the effort per workload and set it explicitly.
Tools on Chat Completions. The Luna page lists Chat Completions support with "function calling only when reasoning effort is none"4. A Chat Completions integration that uses tools must either run Luna at none or move to the Responses API. This is the change most likely to break an agent that worked on GPT-4o.
Endpoints. Luna supports Chat Completions, Responses and Batch, and not Realtime, Assistants, Fine-tuning, Embeddings or audio endpoints4. If a GPT-4o caller used one of those, it needs a different replacement.
Long prompts. Prompts over 272,000 input tokens are billed at twice the input and cache rates and 1.5 times the output rate for the whole request4.
What it costs, illustratively
At list rates per million tokens: GPT-4o $2.50 input and $10.00 output; GPT-4o mini $0.15 and $0.60; GPT-4.1 $2.00 and $8.00; GPT-4.1 mini $0.40 and $1.60; GPT-6 Luna $0.10 and $0.506. Per token, Luna lists below all four. Per request, effort decides it.
A migration plan
- Inventory from traffic (this week). Pull 30 days of requests grouped by the model id as sent and by API key, from your provider's usage export, a gateway, or your own logging. Then search code, configuration and stored settings for
gpt-4o,gpt-4o-mini,gpt-4.1andgpt-4.1-mini, with and without dates, and for fine-tuned ids startingft:. The method and search patterns are in OpenAI's October 23 shutdowns. - Choose the target per workload (week 2). Luna is OpenAI's recommendation, not an obligation. A GPT-4o workload that needed GPT-4o's quality may be better compared against a larger model too; see GPT-6 Astra, Sol and Luna.
- Build an evaluation set (weeks 2–3). A few hundred recorded requests per workload, with a pass mark written down before the run: task success, refusals, schema or parse failures, truncation.
- Run the sweep (weeks 3–5). Run the candidate at two or three effort levels with the exact parameters your code sends. Record output and reasoning tokens and latency. Fix the Chat Completions tool question here.
- Shift in stages (weeks 5–8). Put the model behind a name you control (a config key, a wrapper alias or a gateway route), then move traffic in steps with the old model as a fallback until the last step. The migration playbook covers the weighted canary.
- Block the old ids (mid-December). Make your own systems refuse the retiring ids before OpenAI does, so a missed caller fails in staging with a clear message.
- Azure, separately. If you also run on Azure OpenAI, put 14 April 2027 and the fine-tuned deployment dates in the same plan, and check each deployment's upgrade setting rather than waiting.
Moving off GPT-4o with INFRO
INFRO is a control plane between your applications and the provider accounts you already hold. You connect your own OpenAI or Azure OpenAI account, the provider bills you directly, and INFRO records each request that passes through it. Everything below applies only to that traffic; calls made straight to OpenAI do not appear.
- Who still calls the model. Usage analytics group requests, errors and estimated provider cost by model, key and project, and the request log filters by model and key, within your plan's history window.
- Lifecycle in the catalog. INFRO's model catalog marks
openai/gpt-4o,openai/gpt-4o-mini,openai/gpt-4.1andopenai/gpt-4.1-minias deprecated since 14 October 2026, with GPT-6 Luna as the successor; see the lifecycle section of models. - Change the model without a deploy. An application that calls a route by name can be moved to Luna by editing the route's targets, including a weighted canary.
- Parameters. INFRO's chat endpoint sends OpenAI's reasoning models their output ceiling as
max_completion_tokensand drops sampling parameters a model refuses, listing them inX-INFRO-Params-Dropped. It does not choose an effort level for you. - Stop new usage. A model allowlist entry such as
!openai/gpt-4orefuses the model with403 model_not_allowedbefore any provider is called. - After the switch. Traffic changes flag a rise in output tokens per request or in answers cut off by the length limit, the two symptoms of an effort or
max_tokenssetting carried over from GPT-4o.
INFRO never swaps a model on its own: when OpenAI stops answering a retired id, a request through INFRO fails unless your route names another target. INFRO also cannot tell you whether Luna's answers are good enough; that is your evaluation.
