GPT-5 and o3 API shutdown, Dec 11 2026: how to migrate to GPT-5.6 Sol, Terra, Luna
OpenAI retires GPT-5, mini, nano, o3 and Pro on Dec 11, 2026. Move to GPT-5.6 Sol, Terra or Luna: input costs 2-8x more; retest tools and effort.
OpenAI removes six snapshots from its API on 11 December 2026: gpt-5, gpt-5-mini, gpt-5-nano, gpt-5-pro, o3 and o3-pro. Its deprecations page maps gpt-5 and o3 to gpt-5.6-sol, gpt-5-mini to gpt-5.6-terra, gpt-5-nano to gpt-5.6-luna, and gpt-5-pro and o3-pro to Sol with reasoning.mode: pro.
On the standard replacements, input costs 2 to 8 times more at list prices, and Sol's current price is promotional at least through 21 November. Price your own traffic before you change the model string, set the reasoning effort in every call and re-test each call that uses tools. The sections below give the cost arithmetic and a script that checks your model IDs.
OpenAI facts were read on 19 October 2026, 53 days before the shutdown. AIVAX facts come from the product code and the public model catalog read the same day. We sent no live requests to OpenAI or to AIVAX models, so every AIVAX behavior below is from code reading, not from a test.
Which models shut down on 11 December 2026, and what replaces them?
OpenAI notified developers using these snapshots on 11 June 2026, which is 183 days, or about six months, before the shutdown. The table pairs each snapshot with the replacement OpenAI lists and with both list prices.
| Retiring snapshot | Replacement OpenAI lists | Retiring input / output | Replacement input / output |
|---|---|---|---|
gpt-5-2025-08-07 | gpt-5.6-sol | 1.25 / 10 | 4 / 20 |
gpt-5-mini-2025-08-07 | gpt-5.6-terra | 0.25 / 2 | 2 / 12 |
gpt-5-nano-2025-08-07 | gpt-5.6-luna | 0.05 / 0.40 | 0.20 / 1.20 |
o3-2025-04-16 | gpt-5.6-sol | 2 / 8 | 4 / 20 |
gpt-5-pro-2025-10-06 | gpt-5.6-sol with reasoning.mode: pro | 15 / 120 | 4 / 20, with pro mode billing more tokens |
o3-pro-2025-06-10 | gpt-5.6-sol with reasoning.mode: pro | 20 / 80 | 4 / 20, with pro mode billing more tokens |
Four points limit what the table tells you:
- Undated names. The page lists dated snapshots. OpenAI's model pages name the same snapshots as the defaults of
gpt-5,gpt-5-mini,gpt-5-nano,gpt-5-pro,o3ando3-pro, so plan as if the undated names retire too. - Other waves. The GPT-4o and GPT-4.1 models retire on 14 January 2027, covered in the GPT-4o migration guide. The 23 October wave is in the GPT-4, o1 and o4-mini guide.
gpt-5.1,gpt-5.3-codexandgpt-5.4-nanoare on a later date, 1 April 2027. - Replacement is a recommendation. Each pairing keeps the tier: Sol for the flagship, Terra for "mini", Luna for "nano". OpenAI's model pages say Terra roughly corresponds to the earlier mini tier and Luna to the nano tier. That says nothing about whether the new model answers your prompts as well.
- The Pro prices are not comparable. OpenAI's reasoning guide says pro mode "aggregates the model work performed to produce the final answer" and bills those tokens at the selected model's standard rates. The per-token rate is lower than the Pro models', but the number of tokens is not known in advance.
What changes in a request when you move to GPT-5.6?
The model string is the smallest change. The table lists the others, with the OpenAI source behind each row.
| Area | GPT-5, mini, nano, o3 and the Pro models | GPT-5.6 Sol, Terra and Luna | What to do |
|---|---|---|---|
| Effort values | GPT-5, mini and nano list minimal, low, medium and high. gpt-5-pro defaults to and only supports high | none, low, medium (default), high, xhigh and max. No minimal | Replace minimal with none or low and compare. We found no documented mapping for GPT-5.6, and we did not test what minimal returns. |
| Omitted effort | Whatever the old model defaulted to | medium. The upgrade guide warns that an omitted setting can become slower, more expensive and incompatible with Chat Completions function tools | Send reasoning_effort (Chat Completions) or reasoning.effort (Responses) in every call. |
| Function tools on Chat Completions | No restriction on the model pages we read | Compatible only with effective reasoning none. Reasoning with tools should use Responses | Send none or move the tool loop. See the fix for the tools error. |
| Pro models | gpt-5-pro and o3-pro are available only on the Responses API; Chat Completions is listed as not supported | Pro is a setting: reasoning.mode: "pro" on Responses, with reasoning.effort chosen separately | Compare standard and pro mode on the same tasks before paying for pro. |
| Context and output | 400,000 tokens with 272,000 max input and 128,000 max output (o3: 200,000 and 100,000) | 1,050,000 tokens with 922,000 max input and 128,000 max output | Longer prompts are possible. Check the pricing row below before you rely on them. |
| Long prompts and caching | Not listed on the pages we read | Prompts above 272K input tokens cost 2 times the input rate and 1.5 times the output rate for the whole request. Cache writes cost 1.25 times the input rate | Cap prompt size or watch the threshold. See why a prompt cache hit rate is low. |
The failure to design for is silent: a call that returns a 400 in one code path while your health check, which sends no tools, stays green. Make the check send the parameters and tools your production traffic sends. Our post on how providers expose reasoning controls covers the effort values across vendors.
How much more does the replacement cost?
At list prices, every standard replacement costs more per request than the model it replaces, even with zero reasoning tokens. The matrix prices one request with 4,000 input tokens and 1,000 output tokens, no caching, on each GPT-5.6 model. Bold marks the replacement OpenAI lists.
| Retiring model | Cost of the request | On Sol ($0.036) | On Terra ($0.020) | On Luna ($0.002) |
|---|---|---|---|---|
gpt-5 | $0.0150 | 2.40x | 1.33x | 0.13x |
gpt-5-mini | $0.0030 | 12.0x | 6.67x | 0.67x |
gpt-5-nano | $0.0006 | 60.0x | 33.3x | 3.33x |
o3 | $0.0160 | 2.25x | 1.25x | 0.13x |
The pairing OpenAI recommends costs 2.25 to 6.67 times more per request here. Only the moves to Luna cost less than the old model, and for gpt-5 and o3 that means dropping two tiers; gpt-5-mini to Luna, at 0.67x, drops one. OpenAI does not recommend those moves, and we did not measure whether a smaller tier holds your quality.
The 4,000-in, 1,000-out request has no reasoning tokens. Reasoning tokens are billed as output, so effort above none shifts the result. The next table shows how many output tokens the new model can generate before one request costs what it cost on the old model. It uses the same list prices.
| Move | 1,000 input tokens, old model wrote 1,000 | 1,000 input tokens, old model wrote 3,000 | 4,000 input tokens, old model wrote 1,000 |
|---|---|---|---|
gpt-5 to Sol | 362 | 1,362 | None: input alone costs more |
gpt-5-mini to Terra | 20 | 354 | None: input alone costs more |
gpt-5-nano to Luna | 208 | 875 | None: input alone costs more |
o3 to Sol | 300 | 1,100 | None: input alone equals the old total |
For a retrieval call that sends several thousand input tokens and reads a short answer, the replacement does not break even at any output length. For a call where the old model wrote long answers from a short prompt, there is room, and the room shrinks as soon as you raise the effort. Record the output tokens that usage reports per request and compare them with this table.
What happens when Sol's promotional price ends?
OpenAI's Sol page says the model "costs $4 per million input tokens and $20 per million output tokens, a 20% reduction in input pricing and a 33% reduction in output pricing", and that the promotional pricing is available "at least through November 21, 2026". The shutdown is 20 days later, and the page does not state the price after the promotion. The stated reductions imply $5 and $30 as the earlier rate, which matches the GPT-5.5 row on the same page. That is our inference, not a published post-promotion price. At $5 and $30, the 4,000-in, 1,000-out request on Sol costs $0.050, which is 3.33 times gpt-5 and 3.13 times o3. Budget with both rates.
Are the Pro replacements cheaper?
Per token, yes: Sol's $4 input and $20 output are well below gpt-5-pro at $15 and $120 and o3-pro at $20 and $80. Per request, it depends on how many tokens pro mode adds. Using the same arithmetic, for a request with 1,000 input tokens that cost 1,000 output tokens on gpt-5-pro, Sol could bill up to about 6,550 output tokens before it costs the same; for o3-pro the figure is about 4,800. Pro mode reports the aggregated tokens in usage, so measure the usage of your hardest requests in standard and in pro mode before you decide. OpenAI's GPT-5.6 guide says to prefer standard mode for routine or high-volume work and whenever evaluations show no meaningful gain from pro mode.
How do you find the retiring models in your own usage?
Search code, environment files, gateway settings and batch configurations for the six dated names and the six undated names. Then check what the replacement would cost. This script reads the public AIVAX catalog, lists the efforts each model accepts and prices the 4,000-in, 1,000-out request from the matrix above. It uses AIVAX prices, which is why the multiples differ from the OpenAI-price matrix.
const used = ["@openai/gpt-5", "@openai/gpt-5-mini", "@openai/gpt-5-nano", "@openai/o3", "@openai/gpt-5.6-terra"];
const replacement = {
"@openai/gpt-5": "@openai/gpt-5.6-sol",
"@openai/gpt-5-mini": "@openai/gpt-5.6-terra",
"@openai/gpt-5-nano": "@openai/gpt-5.6-luna",
"@openai/o3": "@openai/gpt-5.6-sol",
};
const profile = { input: 4000, output: 1000 };
const response = await fetch("https://inference.aivax.net/api/v1/information/models.json");
const { data } = await response.json();
const catalog = new Map(data.flatMap((group) => group.models).map((model) => [model.name, model]));
const cost = (name) => {
const price = catalog.get(name)?.pricing?.[0];
return price && (profile.input * price.inputPerMillionTokens + profile.output * price.outputPerMillionTokens) / 1e6;
};
for (const name of used) {
const model = catalog.get(name);
if (!model) { console.log(`MISSING ${name}`); continue; }
const efforts = model.modelInformation.reasoningEfforts.join(",") || "-";
const target = replacement[name];
const line = [
model.flags.isDeprecating ? "DEPRECATING" : "ok ",
name.padEnd(24),
`$${cost(name).toFixed(4)}`,
target ? `-> ${target} $${cost(target).toFixed(4)} (x${(cost(target) / cost(name)).toFixed(2)})` : "",
`efforts: ${efforts}`,
];
console.log(line.join(" "));
}
Run with bun check-g5.js on 2026-10-19, it printed:
DEPRECATING @openai/gpt-5 $0.0150 -> @openai/gpt-5.6-sol $0.0396 (x2.64) efforts: high,medium,low,minimal
DEPRECATING @openai/gpt-5-mini $0.0030 -> @openai/gpt-5.6-terra $0.0220 (x7.33) efforts: high,medium,low,minimal
DEPRECATING @openai/gpt-5-nano $0.0006 -> @openai/gpt-5.6-luna $0.0022 (x3.67) efforts: high,medium,low,minimal
DEPRECATING @openai/o3 $0.0160 -> @openai/gpt-5.6-sol $0.0396 (x2.48) efforts: -
ok @openai/gpt-5.6-terra $0.0220 efforts: max,xhigh,high,medium,low,none
The four retiring models are flagged isDeprecating in the AIVAX catalog, and minimal appears in the efforts of the first three but in none of the 5.6 lists. The catalog lists no o3 efforts at all, so an o3 call with an effort set is the one to look at first. The script is a starting point: extend used with the IDs from your own inventory and run it in CI before each deploy.
How do you qualify the replacement before December?
- Freeze a request set. Collect real requests and their accepted outputs for each retiring model, including the longest prompts, the ones with tools and the ones that set an effort.
- Replay with the effort set explicitly. Start from
noneandlowon the 5.6 model, compare parse failures, tool-call correctness, refusals, length and latency, and record the output tokens of every request. - Check the tool path. Calls with function tools and an effort other than
noneneed Responses. The fix for the tools error shows both options. - Price the result against the break-even table. Use your measured output tokens, with Sol at both $4/$20 and the implied $5/$30.
- Try one tier down on the slice that is not hard. The matrix shows that Luna and Terra cost less than Sol per request. Move a slice there only if your own comparison shows the quality holds. The routing guide covers splitting traffic by complexity.
- Test multi-turn behavior. A single-turn comparison can miss a model that stops calling a tool several turns in. Agentic Tests run a simulated user and a judge against a gateway, so you can point one at the old model and one at the new; the Agentic Tests docs list the quotas.
- Switch in one place and keep a canary. Change the gateway or the pinned ID once, keep the old value in version control until the shutdown, and run a scheduled call with your real tools and parameters. The GPT-4o migration guide has the longer checklist for this step.
How do the AIVAX models and gateways handle this move?
All of the following comes from the product code and the public catalog; we sent no request to confirm any behavior.
- Flags.
@openai/gpt-5,@openai/gpt-5-mini,@openai/gpt-5-nanoand@openai/o3carry theDeprecatedflag in the model definitions, which is theisDeprecatingvalue in the catalog. An account that used a flagged model in the previous 30 days can receive the deprecated-models email, debounced to once every seven days. The message names models and gives no shutdown date, so take the date from OpenAI's page. - No Pro models by name. The catalog has no
gpt-5-prooro3-proentry. It has@openai/gpt-5.6-sol:pro,@openai/gpt-5.6-terra:proand@openai/gpt-5.6-luna:pro. In the code, those entries addreasoning: { mode: "pro", effort: ... }to the request body. The top-levelreasoning_effortis written earlier in the same code path, so we could not tell by reading whether the upstream receives both fields or which one it honors. Treat pro mode on AIVAX as untested until you run your own request. - Effort values. The effort list is published in the catalog. We found no code that compares a request's effort with that list, so a
minimalsent to a 5.6 model is forwarded as written. What the upstream returns, we did not test. - Sampling parameters. The four retiring models and the three 5.6 models all carry the
NoTemperatureflag, so a requesttemperatureis dropped before and after the move and the tuning it implied has no effect either way. Atop_pis forwarded in both cases. A gateway that setsTemperatureon a model with that flag fails validation in the gateway code; the AI Gateway docs warn that some integrated models reject temperature. - Gateways. A gateway lets you change the model once for every client that calls it by name. We found no documented automatic substitution when a model is retired, so the replacement test stays yours. If you need Responses for tools, the tools-error guide explains how a gateway reaches
/responses. - Prices. The catalog prices the
:proand standard entries separately, so read the price of the exact name you call. Check the pricing page before you budget.
Frequently asked questions
When do GPT-5 and o3 stop working in the OpenAI API?
On 11 December 2026, for gpt-5-2025-08-07, gpt-5-mini-2025-08-07, gpt-5-nano-2025-08-07, gpt-5-pro-2025-10-06, o3-2025-04-16 and o3-pro-2025-06-10. OpenAI notified affected developers on 11 June 2026.
What replaces gpt-5-mini and gpt-5-nano?
OpenAI lists gpt-5.6-terra for gpt-5-mini and gpt-5.6-luna for gpt-5-nano. At list prices, Terra's input costs 8 times gpt-5-mini's and Luna's input costs 4 times gpt-5-nano's. Price your traffic with the matrix above before you switch.
What replaces o3-pro and gpt-5-pro?
OpenAI lists gpt-5.6-sol with reasoning.mode: pro for both. Pro mode is a Responses API setting that bills the aggregated work at Sol's standard token rates; the section "Are the Pro replacements cheaper?" above has the arithmetic.
Is gpt-5.6-sol cheaper than o3?
No. Sol is $4 input and $20 output per million tokens against $2 and $8 for o3, so the 4,000-in, 1,000-out example costs 2.25 times more on Sol, and the promotional price may end after 21 November. The section "What happens when Sol's promotional price ends?" above has the budget at both rates.
Can I keep sending reasoning_effort minimal?
No. OpenAI's GPT-5.6 pages list none, low, medium, high, xhigh and max. Replace minimal with none or low and compare on your own requests.
Does AIVAX switch GPT-5 to GPT-5.6 automatically?
We found no documented automatic substitution for a retired model, so plan to change the model or gateway yourself. A gateway lets you do it in one place.
References
- OpenAI, Deprecations: the 11 June 2026 entry, notice-period policy and the later GPT-4 and GPT-5.1 entries.
- OpenAI model pages for GPT-5, GPT-5 Mini, GPT-5 nano, GPT-5 Pro, o3, o3-pro, GPT-5.6 Sol, GPT-5.6 Terra and GPT-5.6 Luna: prices, limits, snapshots and endpoint support.
- OpenAI, Using GPT-5.6 and the GPT-5.6 upgrade guide: efforts, function tools on Chat Completions, pro mode.
- OpenAI, Reasoning models: reasoning effort and reasoning mode.
- AIVAX AI Gateway and pricing docs, and the public model catalog read on 2026-10-19.