# GPT-4o and GPT-4.1 shut down 14 January 2027: migration plan

URL: https://infro.io/blog/gpt-4o-gpt-4-1-shutdown-january-2027
Author: INFRO Editorial (https://infro.io/blog/editorial)
Publisher: INFRO
Published: 2026-10-27
Last modified: 2026-10-27
Last reviewed: 2026-10-27 (next review due 2026-11-26)
Topic: Architecture and migration
Format: Guide

> On 14 October 2026 OpenAI deprecated GPT-4o, GPT-4o mini, GPT-4.1 and GPT-4.1 mini; their snapshots 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 stop answering on OpenAI's API on 14 January 2027, and fine-tunes on them stop with them. OpenAI recommends gpt-6-luna for all four. On Azure OpenAI the same versions retire on 14 April 2027. Luna is a reasoning model with a medium default effort and different Chat Completions limits, so qualify it with your real requests rather than renaming the model.

Key takeaways:
- OpenAI's API stops serving 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 on 14 January 2027; fine-tunes on them follow the same date.
- Every dated snapshot behind the four aliases is on the list, so code that calls `gpt-4o` or `gpt-4.1-mini` by alias is affected too.
- Azure OpenAI retires the same versions on 14 April 2027, and fine-tuned deployments later still, so a team on both platforms has two deadlines.
- GPT-6 Luna, the listed replacement, is a reasoning model with a medium default effort; on Chat Completions it supports function calling only at effort none, and it cannot be fine-tuned.
- Qualify Luna on recorded requests with the parameters you actually send, and set effort explicitly before comparing cost.

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-luna`[1]. Azure OpenAI retires the same versions three months later, on 14 April 2027[2].

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.

> **Note: For leaders: what to ask your team**
> - **Which of our products call GPT-4o, GPT-4o mini, GPT-4.1 or GPT-4.1 mini today, and who owns each?** Ask for the answer from traffic, not from memory.
> - **Do any of them run on Azure as well as OpenAI?** Those have two deadlines: 14 January and 14 April 2027.
> - **Do we depend on a fine-tuned model?** Fine-tunes stop with their base, and Luna cannot be fine-tuned.
> - **How will we know the replacement is as good?** Expect an evaluation on recorded requests with a pass mark, not a demo.
> - **What will it cost per completed task, at the effort level we chose?** Per-token rates alone do not answer that for a reasoning model.
> - **When is the cut-over, and what is the rollback?** It should finish well before 14 January, not 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 |

Table: GPT-4o and GPT-4.1 dates. OpenAI from its deprecations page, Azure from Microsoft's retirement schedule, both read 2026-10-27.

**Aliases.** OpenAI's table lists dated snapshots under the model names, not the bare aliases[1]. 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 down[3]. 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 family[2].

**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 |

Table: Request-relevant differences, from the GPT-6 Luna model page read 2026-10-27.

**Effort is on by default.** Luna defaults to `medium` reasoning effort[4]. 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 text[5]. 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 endpoints[4]. 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 request[4].

## 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.50[6]. Per token, Luna lists below all four. Per request, effort decides it.

> **Example: Illustrative cost per 1,000 requests**
> A request with 2,000 input tokens and 300 visible output tokens, no caching, at the list rates above.
> 
> | Model | Cost per 1,000 requests |
> | --- | --- |
> | GPT-4o | $8.00 |
> | GPT-4.1 | $6.40 |
> | GPT-4.1 mini | $1.28 |
> | GPT-4o mini | $0.48 |
> | GPT-6 Luna, effort `none` (no reasoning tokens) | $0.35 |
> | GPT-6 Luna, if effort adds 600 reasoning tokens | $0.65 |
> 
> The 600 reasoning tokens are hypothetical. Against GPT-4o mini, Luna's cost per request can land above or below depending on effort; against GPT-4o and GPT-4.1 it lands well below either way. Measure reasoning tokens on your own requests, and compare cost per completed task, not per request.

## A migration plan

1. **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.1` and `gpt-4.1-mini`, with and without dates, and for fine-tuned ids starting `ft:`. The method and search patterns are in [OpenAI's October 23 shutdowns](https://infro.io/blog/openai-model-shutdowns-october-2026).
2. **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](https://infro.io/blog/gpt-6-astra-sol-luna-tiers).
3. **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.
4. **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.
5. **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](https://infro.io/blog/model-deprecation-migration-playbook) covers the weighted canary.
6. **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.
7. **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](https://infro.io/docs/observability/analytics) group requests, errors and estimated provider cost by model, key and project, and the [request log](https://infro.io/docs/observability/traces) 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.1` and `openai/gpt-4.1-mini` as deprecated since 14 October 2026, with GPT-6 Luna as the successor; see the lifecycle section of [models](https://infro.io/docs/models).
- **Change the model without a deploy.** An application that calls a [route](https://infro.io/docs/routes) 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_tokens` and drops sampling parameters a model refuses, listing them in `X-INFRO-Params-Dropped`. It does not choose an effort level for you.
- **Stop new usage.** A [model allowlist](https://infro.io/docs/org/model-allowlists) entry such as `!openai/gpt-4o` refuses the model with `403 model_not_allowed` before any provider is called.
- **After the switch.** [Traffic changes](https://infro.io/docs/observability/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_tokens` setting 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.

## Questions

### When does GPT-4o stop working on the OpenAI API?

The remaining snapshots, gpt-4o-2024-08-06 and gpt-4o-2024-11-20, shut down on 14 January 2027, as does gpt-4o-mini-2024-07-18. The first snapshot, gpt-4o-2024-05-13, already shut down on 23 October 2026.

### What does OpenAI recommend instead of GPT-4o and GPT-4.1?

gpt-6-luna for all four models: GPT-4o, GPT-4o mini, GPT-4.1 and GPT-4.1 mini. On Azure OpenAI, Microsoft lists gpt-5.1 as the replacement for gpt-4o versions 2024-08-06 and 2024-11-20 and lists none for the GPT-4.1 family or gpt-4o-mini.

### Do Azure OpenAI deployments of GPT-4o retire on the same date?

No. Microsoft's schedule retires gpt-4o 2024-08-06 and 2024-11-20, gpt-4o-mini 2024-07-18 and the 2025-04-14 GPT-4.1 family on 14 April 2027. Fine-tuned deployments retire on 1 October 2027 (GPT-4o family) and 14 October 2027 (GPT-4.1 family).

### What happens to my fine-tuned GPT-4o mini model?

On OpenAI's API, fine-tuned versions follow the same shutdown schedule as their base model, so they stop on 14 January 2027. GPT-6 Luna's model page lists fine-tuning as not supported, so plan to reproduce the fine-tune's behaviour with prompts, examples or a different model.

### Is GPT-6 Luna more expensive than GPT-4o mini?

Per token at list rates it is lower: $0.10 input and $0.50 output per million against $0.15 and $0.60. But Luna is a reasoning model whose reasoning tokens are billed as output, and its default effort is medium, so cost per request depends on effort. Measure on your own requests.

## Sources

1. Deprecations — OpenAI. https://developers.openai.com/api/docs/deprecations (accessed 2026-10-27)
2. Model retirement schedule — Microsoft. https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule (accessed 2026-10-27)
3. GPT-4o model page — OpenAI. https://developers.openai.com/api/docs/models/gpt-4o (accessed 2026-10-27)
4. GPT-6 Luna model page — OpenAI. https://developers.openai.com/api/docs/models/gpt-6-luna (accessed 2026-10-27)
5. Reasoning models — OpenAI. https://developers.openai.com/api/docs/guides/reasoning (accessed 2026-10-27)
6. Pricing — OpenAI. https://developers.openai.com/api/docs/pricing (accessed 2026-10-27)
