---
title: "OpenAI Removes GPT-4o and GPT-4.1 on January 14 | Since.dev"
description: "OpenAI's API removes the dated gpt-4o, gpt-4o-mini, gpt-4.1 and gpt-4.1-mini snapshots on January 14, 2027. On Azure most run until April 14. What to do."
canonical_url: https://since.dev/guides/openai-gpt-4o-gpt-4-1-shutdown
last_updated: 2026-11-04
---

# GPT-4o and GPT-4.1 snapshots leave OpenAI's API on January 14, 2027

On OpenAI's API, the dated GPT-4o, GPT-4o mini, GPT-4.1 and GPT-4.1 mini snapshots stop working on January 14, 2027, and fine-tunes built on them stop with them. On Azure most of the same versions run until April 14, 2027, so the date you plan for depends on where your code sends the call.

Updated November 4, 2026

## What leaves OpenAI's API on January 14

On October 14, 2026, OpenAI told developers that five GPT-4 series snapshots will be removed from its API on January 14, 2027 ([OpenAI deprecations](https://developers.openai.com/api/docs/deprecations)). It recommends `gpt-6-luna` for all of them.

OpenAI's API: dates and replacements from OpenAI's deprecations page, checked Nov 4, 2026

| Snapshot                | Replacement | Removed      |
| ----------------------- | ----------- | ------------ |
| gpt-4o-2024-08-06       | gpt-6-luna  | Jan 14, 2027 |
| gpt-4o-2024-11-20       | gpt-6-luna  | Jan 14, 2027 |
| gpt-4o-mini-2024-07-18  | gpt-6-luna  | Jan 14, 2027 |
| gpt-4.1-2025-04-14      | gpt-6-luna  | Jan 14, 2027 |
| gpt-4.1-mini-2025-04-14 | gpt-6-luna  | Jan 14, 2027 |

The notice lists dated snapshots only. It doesn't mention the `gpt-4o` or `gpt-4o-mini` aliases. If your code calls an alias, don't assume either way: check the model's page in OpenAI's docs, and test the replacement now so you're ready whatever happens to it.

One older snapshot is already gone: `gpt-4o-2024-05-13` shut down on OpenAI's API on October 23, 2026, with `gpt-5.6-sol` as its replacement ([OpenAI deprecations](https://developers.openai.com/api/docs/deprecations)).

`gpt-4o-mini-2024-07-18` alone shows up in about 220,000 public GitHub files (GitHub's code search count, November 2, 2026, approximate, Azure users included). Check your code even if you think you moved off it.

## On Azure, most of them run until April 14

If you call these models through Azure (Microsoft Foundry), OpenAI's date doesn't apply. Microsoft's [retirement schedule](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule) sets its own dates and names its own replacement.

Azure OpenAI: dates and replacements from Microsoft's retirement schedule, checked Nov 4, 2026

| Model and version       | Retires on Azure | Microsoft's replacement |
| ----------------------- | ---------------- | ----------------------- |
| gpt-4o 2024-05-13       | Jan 14, 2027     | gpt-5.1 2025-11-13      |
| gpt-4o 2024-08-06       | Apr 14, 2027     | gpt-5.1                 |
| gpt-4o 2024-11-20       | Apr 14, 2027     | gpt-5.1                 |
| gpt-4o-mini 2024-07-18  | Apr 14, 2027     | None listed             |
| gpt-4.1 2025-04-14      | Apr 14, 2027     | None listed             |
| gpt-4.1-mini 2025-04-14 | Apr 14, 2027     | None listed             |

- The dates flip. `gpt-4o` 2024-05-13 is already gone from OpenAI's API but runs on Azure until January 14, 2027. The other versions leave OpenAI's API on January 14 and run on Azure until April 14, 2027 ([Microsoft](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule)).
- The replacement differs too. OpenAI names `gpt-6-luna`. Microsoft lists `gpt-5.1` for `gpt-4o`, and none for `gpt-4o-mini`, `gpt-4.1` or `gpt-4.1-mini`.
- Regional Standard deployments of `gpt-4o` 2024-05-13 already retired on March 31, 2026 ([Microsoft](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule)).

## Azure's auto-upgrade, and what it skips

For `gpt-4o` 2024-05-13 only, Microsoft says Global Standard and Data Zone Standard deployments upgrade automatically to `gpt-5.1` 2025-11-13 when it retires on January 14, 2027. Provisioned deployments don't. Microsoft's advice is to create replacement deployments and move your traffic before the date ([Microsoft](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule)).

- An auto-upgrade is still a model change, and it happens on Microsoft's date, not after your tests pass. Run your test set against `gpt-5.1` before January 14 even if you plan to let it happen.
- Provisioned deployments (Regional, Global and Data Zone Provisioned) retire on the same date with no upgrade. Create the new deployment, check you have capacity for it, and move traffic before the date.
- Global Batch is on Microsoft's list of offers that retire on January 14, 2027 ([Microsoft](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule)), and the page doesn't say it upgrades. Plan to move batch jobs yourself.
- For the versions that retire on April 14, 2027, the page describes no auto-upgrade. Plan to move those yourself too.

With the `AzureOpenAI` client, the `model` argument is your deployment name ([openai-python](https://github.com/openai/openai-python)), which might not mention the model at all. List your deployments with the [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/cognitiveservices/account/deployment) and read each one's model name and version:

```
az cognitiveservices account deployment list \
  -g my-group -n my-account
```

## Find every place your code names them

Search the whole repository, not only the source folders. These two ripgrep searches catch the aliases and the dated snapshots, and skip longer IDs that share a prefix, like `gpt-4o-transcribe`:

```
rg -nP '\bgpt-4o(-mini)?(-[\d-]{10})?(?![\w.-])'
rg -nP '\bgpt-4\.1(-mini)?(-[\d-]{10})?(?![\w.-])'
```

Fine-tuned model IDs start with `ft:` followed by the base snapshot ([OpenAI fine-tuning guide](https://developers.openai.com/api/docs/guides/supervised-fine-tuning)), so the same searches find them. Then check what a search misses:

- Config and env files: `.env`, `.env.example`, YAML and JSON settings, Helm values. A line like `OPENAI_MODEL=gpt-4o-mini` counts.
- Values that live outside the repo: CI secrets and variables, your host's environment settings, feature flags, and database rows where users or admins pick a model.
- Names built at runtime, like `f"gpt-4o-{size}"`. Run a loose search for `gpt-4` too, and read the hits.
- Evals, test fixtures and recorded API responses that pin the old ID.
- Docs, notebooks and code samples people copy from.
- Azure infrastructure files: Bicep, ARM templates or Terraform that create deployments, with the model name and version in them.

### Check which platform each call goes to

- The `OpenAI` client calls OpenAI's API unless you give it another base URL, and the Python SDK reads `OPENAI_BASE_URL` from the environment ([openai-python](https://github.com/openai/openai-python)).
- The `AzureOpenAI` client, an `AZURE_OPENAI_ENDPOINT` variable or an endpoint on an `azure.com` host means Azure. Wrappers have Azure versions too, such as LangChain's `AzureChatOpenAI`.
- If you call both, say OpenAI in development and Azure in production, plan for whichever date comes first.

## Fine-tuned models need a different plan

On OpenAI's API, fine-tuned versions of these models follow their base model's schedule, so they stop on January 14, 2027 too ([OpenAI deprecations](https://developers.openai.com/api/docs/deprecations)).

A fine-tune is tied to its base model, so it can't move to a new one. And on OpenAI's API there's nothing to retrain it on: the `gpt-6-luna` [model page](https://developers.openai.com/api/docs/models/gpt-6-luna) lists fine-tuning as not supported. OpenAI is also winding down self-serve fine-tuning, and from January 6, 2027, active existing customers can't create new fine-tuning jobs ([OpenAI deprecations](https://developers.openai.com/api/docs/deprecations#update-to-openais-self-serve-fine-tuning)).

Here's how we'd handle it (our suggestion):

1. Collect the fine-tune's training data and a sample of its real outputs. Those outputs are what you're trying to match.
2. Move what the fine-tune learned into the request: clear instructions, a few worked examples, and a JSON schema if it was trained to produce a format.
3. Run the old fine-tune and the new setup on the same inputs and compare them, starting with the cases the fine-tune was built for.
4. Ship it the same way as any model change: behind a flag, with the old ID ready until January 14.

On Azure, fine-tuned models retire in two steps, training and deployment, each with its own date. Fine-tuned deployments of `gpt-4o` 2024-08-06 and `gpt-4o-mini` 2024-07-18 run until October 1, 2027, and of `gpt-4.1` and `gpt-4.1-mini` 2025-04-14 until October 14, 2027 ([Microsoft](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/model-retirement-schedule)).

## What to test when you switch

`gpt-6-luna` reasons before it answers, at `medium` effort unless you set `reasoning.effort` ([OpenAI's model page](https://developers.openai.com/api/docs/models/gpt-6-luna)), and reasoning tokens are billed as output tokens ([reasoning guide](https://developers.openai.com/api/docs/guides/reasoning)). That changes speed and cost, so set the effort on purpose. `none` is one of the options.

Run a set of real requests through the old and new model and compare them side by side. We suggest 50 to 100 recent ones from your logs, covering your main use cases.

- Tool calls. OpenAI's `gpt-6-luna` [model page](https://developers.openai.com/api/docs/models/gpt-6-luna) says Chat Completions supports function calling only with `reasoning_effort` set to `none`, and recommends the Responses API for function calling. If you use tools through Chat Completions, set it or move those calls.
- Output format. Structured outputs are supported on the new model. If you parse free text, check every parser still works.
- Parameters. Send one request with your exact settings (temperature, token limits, response format, tools) and check it's accepted before you change anything else.
- Length and tone, if people read the answer directly.
- Cost. Compare total tokens per request on your test set, reasoning tokens included, rather than the price per token alone.
- Rollout. Ship behind a flag or to a share of traffic first (our suggestion: 10% for a day), and keep the old ID ready to switch back to until the removal date.

## Where Since.dev fits

Since.dev tracks every model's retirement on each platform that serves it, from the publishers' own pages, and matches the date to the platform your code calls. OpenAI's dates are on the [OpenAI retirement calendar](https://since.dev/calendar/openai.md).

- For a repository you scan or connect, it finds the exact file and line that names the model, with the days left and the replacement. You can [scan any public GitHub repository](https://since.dev/scan.md) without signing in.
- A coding agent can call `check_code` with a model ID through the [MCP server](https://since.dev/docs.md#mcp).
- On Team and up, it opens a fix pull request that swaps the model, ready for review. Your CI runs, people decide, and nothing merges or deploys.
- On Azure the move is the deployment's, so it says what to change instead of opening a pull request.

## Questions

### Does the gpt-4o alias stop working on January 14, 2027?

OpenAI's notice lists dated snapshots only, such as `gpt-4o-2024-08-06` and `gpt-4o-mini-2024-07-18`. It says nothing about the `gpt-4o` or `gpt-4o-mini` aliases, and we won't guess. Check the model's page, and test `gpt-6-luna` now either way.

### Do fine-tuned GPT-4o models stop on the same day?

On OpenAI's API, yes: fine-tunes follow their base model, so they stop on January 14, 2027. On Azure, fine-tuned deployments of `gpt-4o` 2024-08-06 and `gpt-4o-mini` 2024-07-18 run until October 1, 2027.

### Can I fine-tune gpt-6-luna instead?

Not on OpenAI's API, as of November 4, 2026. Its model page lists fine-tuning as not supported, and OpenAI is winding down self-serve fine-tuning. Plan to cover what the fine-tune did with instructions and examples in the request.

### Will Azure upgrade my gpt-4o deployment automatically?

Only for version 2024-05-13 on Global Standard and Data Zone Standard, which move to `gpt-5.1` 2025-11-13 on January 14, 2027. Provisioned deployments don't, and Microsoft's page describes no auto-upgrade for the versions retiring on April 14, 2027.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
