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

On this page
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). It recommends gpt-6-luna for all of them.
| 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).
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 sets its own dates and names its own replacement.
| 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-4o2024-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). - The replacement differs too. OpenAI names
gpt-6-luna. Microsoft listsgpt-5.1forgpt-4o, and none forgpt-4o-mini,gpt-4.1orgpt-4.1-mini. - Regional Standard deployments of
gpt-4o2024-05-13 already retired on March 31, 2026 (Microsoft).
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).
- 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.1before 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), 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), which might not mention the model at all. List your deployments with the Azure CLI and read each one's model name and version:
az cognitiveservices account deployment list \
-g my-group -n my-accountFind 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), 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 likeOPENAI_MODEL=gpt-4o-minicounts. - 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 forgpt-4too, 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
OpenAIclient calls OpenAI's API unless you give it another base URL, and the Python SDK readsOPENAI_BASE_URLfrom the environment (openai-python). - The
AzureOpenAIclient, anAZURE_OPENAI_ENDPOINTvariable or an endpoint on anazure.comhost means Azure. Wrappers have Azure versions too, such as LangChain'sAzureChatOpenAI. - 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).
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 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).
Here's how we'd handle it (our suggestion):
- Collect the fine-tune's training data and a sample of its real outputs. Those outputs are what you're trying to match.
- 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.
- 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.
- 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).
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), and reasoning tokens are billed as output tokens (reasoning guide). 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-lunamodel page says Chat Completions supports function calling only withreasoning_effortset tonone, 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.
- 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 without signing in.
- A coding agent can call
check_codewith a model ID through the MCP server. - 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.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp