# OpenAI Model Shutdowns: gpt-4o and gpt-4.1 Go Dark Jan 14, 2027

URL: https://www.devopsness.com/blog/openai-model-shutdowns-gpt-4o-january-2027
Author: Kiril Urbonas
Published: 2026-10-26
Updated: 2026-10-26
Categories: AI
Tags: LLM, Openai, DevOps, Migration, AI Infrastructure

Summary: OpenAI shut down o1, o3-mini, o4-mini and gpt-4-turbo on October 23, and the gpt-4o and gpt-4.1 families follow on January 14. Here is the full calendar and a migration plan that won't break production.

---
# OpenAI Model Shutdowns: gpt-4o and gpt-4.1 Go Dark Jan 14, 2027

OpenAI shuts down the `gpt-4o` snapshots, `gpt-4o-mini`, `gpt-4.1`, and `gpt-4.1-mini` on **January 14, 2027**, and recommends `gpt-6-luna` instead. That's the biggest retirement yet, because those are the default models in a huge share of production apps. If something broke on October 23, that was the previous wave: `o1`, `o3-mini`, `o4-mini`, `gpt-4-turbo`, and `gpt-3.5-turbo` are already gone.

You have about eleven weeks. That's enough time to migrate calmly, and not enough to leave it until the holidays, when most teams freeze deploys.

## The full calendar

All dates are from OpenAI's deprecations page as of October 26, 2026. Fine-tuned models follow the schedule of their base model.

| Shutdown | Models | Recommended replacement |
|---|---|---|
| Oct 23, 2026 (done) | `gpt-4-turbo`, `gpt-4` (0613), `gpt-4-1106-preview`, `gpt-4o-2024-05-13`, `o1`, `o3-mini` | `gpt-5.6-sol` |
| Oct 23, 2026 (done) | `o4-mini`, `gpt-3.5-turbo` (0125) | `gpt-5.6-terra` |
| Oct 23, 2026 (done) | `gpt-4.1-nano`, `gpt-image-1` | `gpt-5.6-luna`; `gpt-image-2.5-sunburst` or `-flare` |
| Jan 6, 2027 | `tts-1`, `tts-1-hd`, `gpt-4o-mini-tts` snapshots | `gpt-realtime-2.1-mini` |
| **Jan 14, 2027** | `gpt-4o` (2024-08-06, 2024-11-20), `gpt-4o-mini`, `gpt-4.1`, `gpt-4.1-mini` | `gpt-6-luna` |
| Jan 20, 2027 | `gpt-realtime`, `gpt-4o-realtime`, `gpt-audio`, `gpt-4o-audio`, and mini variants | `gpt-realtime-2.1`, `gpt-audio-1.5` |
| Feb 26, 2027 | `whisper-1`, `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`, `/v1/audio/translations` | `gpt-transcribe` or `gpt-live-transcribe` |

One wrinkle: the replacements named for the October wave (`gpt-5.6-sol`, `gpt-5.6-terra`) no longer appear on OpenAI's current models page, which now leads with the GPT-6 family, including `gpt-6-luna` and `gpt-6.1-sol`. If you are migrating today, evaluate the current models rather than a replacement that is itself being superseded.

Two side effects to note. Fine-tuned versions of these models die with their base. And on January 6, 2027, existing customers lose the ability to create new fine-tuning jobs, announced back in May. If your product depends on a fine-tuned `gpt-4o-mini`, you are migrating twice: off the model, and off fine-tuning as you use it today.

## Find every model string you depend on

The model name is rarely in one place. It hides in code, environment variables, config files, prompt templates, database rows, and third-party tools that call OpenAI on your behalf.

```bash
# Every hard-coded OpenAI model reference in the repo
$ grep -rnoE --exclude-dir={node_modules,.git,dist} \
    "(gpt-4o(-mini)?|gpt-4\.1(-mini|-nano)?|o1(-pro)?|o3-mini|o4-mini|gpt-3\.5-turbo|gpt-4-turbo|gpt-image-1|whisper-1|tts-1(-hd)?)" . \
  | sort | uniq -c | sort -rn

# Environment and deployment config
$ grep -rnE "MODEL|OPENAI" .env* deploy/ k8s/ 2>/dev/null

# Running containers in Kubernetes that set a model via env
$ kubectl get deploy -A -o json | jq -r '.items[] | .metadata.name as $n
    | .spec.template.spec.containers[].env[]? | select(.value|tostring|test("gpt-|o[134]-")) | "\($n) \(.name)=\(.value)"'
```

Don't forget the usage dashboard in your OpenAI account. It shows which models are actually receiving traffic, which catches the cron job nobody remembers and the SaaS integration using your key.

## Migrate without a 2 a.m. surprise

A model swap is a behavior change, not a dependency bump. Output length, formatting, tool-calling style, refusals, and latency all shift. Treat it like a release:

1. **Centralize the model name.** One config value or alias per use case, such as `MODEL_SUMMARIZE`, never a string literal scattered across services. This migration is painful mostly for teams that skipped this step.
2. **Build a small eval set from production.** Fifty to two hundred real inputs per use case with known-good outputs. Run old and new models side by side and diff the results before you switch anything.
3. **Shadow, then canary.** Send a copy of live traffic to the new model and compare, then route 5% for real and watch error rates, latency, and cost.
4. **Re-check prompts that rely on quirks.** JSON-only output, strict length limits, and "never say X" instructions are where model changes bite first. Use structured outputs where the API supports them.
5. **Recompute cost.** New models price differently per token and may use more reasoning tokens. Check the bill after the canary, not after the cutover.

A gateway in front of providers makes this routine: map `summarize-default` to a model once, and change the mapping without redeploying every service. We compared the options in [AI gateway comparison](/blog/ai-gateway-comparison), and the same layer gives you a fallback provider when one has a bad day, as the [Azure OpenAI Sweden Central outage](/blog/azure-sweden-central-openai-outage-postmortem) showed.

## What to do this week

The deadline is far enough that the right move is small and boring:

- Run the grep and the usage dashboard check, and write down every use case and owner.
- Pick target models per use case from the table.
- Schedule evals and the canary for November, leaving December as buffer.

Teams that start in January end up switching models during a deploy freeze with no eval data. That's how a deprecation becomes an incident.

## Questions people ask

### When is gpt-4o being shut down?

OpenAI shuts down the `gpt-4o` snapshots dated 2024-08-06 and 2024-11-20, plus `gpt-4o-mini`, `gpt-4.1`, and `gpt-4.1-mini`, on January 14, 2027. The recommended replacement is `gpt-6-luna`. The older `gpt-4o-2024-05-13` snapshot was already shut down on October 23, 2026.

### Why did my o3-mini or gpt-4-turbo calls stop working?

OpenAI shut down `o1`, `o3-mini`, `o4-mini`, `gpt-4-turbo`, `gpt-3.5-turbo` (0125), `gpt-4.1-nano`, and `gpt-image-1` on October 23, 2026, after announcing it in April. Requests to those models now fail. Switch to the recommended replacements: `gpt-5.6-sol` for the reasoning and GPT-4-class models, `gpt-5.6-terra` for `o4-mini` and `gpt-3.5-turbo`.

### Do fine-tuned models get shut down too?

Yes. Fine-tuned models follow the shutdown schedule of their base model, so a fine-tuned `gpt-4o-mini` stops working on January 14, 2027. Separately, existing customers can no longer create new fine-tuning jobs after January 6, 2027, so plan the replacement approach before then.

## The decision, concretely

- **Production traffic on `gpt-4o-mini` or `gpt-4.1`?** Start evals on `gpt-6-luna` in November; cut over by mid-December.
- **Something broke on October 23?** Move to the listed replacement now, then add evals before the next wave.
- **Fine-tuned model in production?** Plan the replacement before January 6, when new fine-tuning jobs stop.
- **Model names hard-coded across services?** Centralize them first; it's the cheapest insurance you'll buy.

## The call we'd make

Treat January 14 as a release date, not a deadline. Inventory your model strings this week, centralize them behind config or a gateway, and run evals in November so December is quiet. The gpt-4o retirement is the one that touches the most production code, and the teams that migrate early get to do it on their own terms.

## Sources

- [OpenAI API deprecations](https://developers.openai.com/api/docs/deprecations)
- [OpenAI models overview](https://developers.openai.com/api/docs/models)

