Three chipped white ceramic beads and four glossy cyan ones in a diagonal cluster, resting on layered navy paper
All posts

GPT-5 and o3 deprecation date: December 11, 2026. Migrate to GPT-5.6 Sol, Terra, Luna

OpenAI shuts down GPT-5, mini, nano, Pro, o3 and o3-pro on December 11, 2026. At list prices, GPT-5.6 input costs 2-8x more; retest effort and tools.

OpenAI shuts down gpt-5, gpt-5-mini, gpt-5-nano, gpt-5-pro, o3 and o3-pro in its API on December 11, 2026. The deprecations page lists each undated name next to its dated snapshot, so gpt-5 stops together with gpt-5-2025-08-07, and it says that at shutdown a model "will no longer be accessible". That is 46 days from October 26, 2026.

Every replacement OpenAI names comes from GPT-5.6: gpt-5.6-sol for gpt-5 and o3, gpt-5.6-terra for gpt-5-mini, gpt-5.6-luna for gpt-5-nano, and Sol with reasoning.mode: pro for both Pro models. The model string is the smallest part of the change. At list prices the input on each standard replacement costs 2 to 8 times more, minimal effort no longer exists, an omitted effort now means medium, and function tools on Chat Completions work only with effort none. We would price the traffic and rerun the tool calls before changing a single ID.

Six snapshots shut down on December 11, 2026

OpenAI notified affected developers on June 11, 2026, 183 days before the shutdown, which matches its stated notice period of at least six months for generally available models. The table pairs each retiring name with the replacement OpenAI lists and with both list prices.

Models removed from the OpenAI API on December 11, 2026, the replacement OpenAI lists, and list prices in USD per 1M tokens, read on 2026-10-26
Retiring name and snapshotReplacement OpenAI listsRetiring input / outputReplacement input / output
gpt-5, gpt-5-2025-08-07gpt-5.6-sol1.25 / 104 / 20
gpt-5-mini, gpt-5-mini-2025-08-07gpt-5.6-terra0.25 / 22 / 12
gpt-5-nano, gpt-5-nano-2025-08-07gpt-5.6-luna0.05 / 0.400.20 / 1.20
o3, o3-2025-04-16gpt-5.6-sol2 / 84 / 20
gpt-5-pro, gpt-5-pro-2025-10-06gpt-5.6-sol with reasoning.mode: pro15 / 1204 / 20, with pro mode billing more tokens
o3-pro, o3-pro-2025-06-10gpt-5.6-sol with reasoning.mode: pro20 / 804 / 20, with pro mode billing more tokens

Each pairing keeps the tier. OpenAI's model pages say Terra roughly corresponds to the earlier mini tier and Luna to the nano tier, which tells you about price and latency class and nothing about whether the new model answers your prompts as well as the old one.

The Pro rows cannot be compared on rate alone. 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 token rates".

Checking the shutdown date by API, and what happens after it

If you call OpenAI directly, you do not need to watch the deprecations page by hand. The page says GET /v1/models returns an optional shutdown_date on each model, a YYYY-MM-DD string, or null when no date has been announced, and the Retrieve model endpoint carries the same field. A CI job that fails when any model ID in your configuration has a shutdown_date within 90 days catches this wave and the next one.

On December 11 the six names stop answering, and the page describes no grace period. It does mention one exit: some developers "may be able to provision dedicated capacity for continued access after a model's shutdown date", arranged through OpenAI's sales team. The page gives no terms or price for that option.

Azure OpenAI runs its own calendar, and for o3 it is earlier. Microsoft's retirement table lists o3 and o3-pro as retiring on November 19, 2026, 22 days before OpenAI's date, with gpt-5.6-sol as the replacement. It lists gpt-5, gpt-5-mini and gpt-5-nano for February 9, 2027 and gpt-5-pro for April 7, 2027. The AIVAX catalog lists an Azure route for gpt-5, gpt-5-mini and gpt-5-nano but none for o3. Which provider answers a request is a routing decision, so plan for December 11; if you call Azure directly, use Microsoft's dates instead.

This wave sits between two others. The April 22 wave, with GPT-4, o1, o3-mini and o4-mini, was shut down on October 23, 2026, and our guide to that shutdown covers the IDs that tend to survive in fallbacks and batch jobs. GPT-4o and GPT-4.1 follow on January 14, 2027, covered in the GPT-4o migration guide, and gpt-5.1, gpt-5.3-codex and gpt-5.4-nano on April 1, 2027.

Why we recommend the GPT-5.6 mapping over GPT-6 Astra

OpenAI points in two directions. The GPT-5 model page says "We recommend using the latest GPT-6 Astra", and the reasoning guide says "Start with gpt-6-astra for most reasoning workloads". The deprecations table, meanwhile, maps every retiring snapshot to a gpt-5.6-* model.

GPT-6 Astra lists $10 per million input tokens and $50 per million output, two and a half times Sol on both, and its effort list runs from low to max with no none. We recommend the deprecation mapping for the first move because it is the like-for-like replacement OpenAI documents for these exact snapshots, and the cheapest one that keeps each tier. In our view Astra belongs in a separate decision, tested on the requests where Sol falls short. Without none, a Chat Completions tool loop on Astra runs into the restriction covered in the tools-error guide.

Reasoning effort and tool calls break first

The GPT-5.6 Sol, Terra and Luna pages list the efforts none, low, medium (default), high, xhigh and max. The GPT-5 page lists minimal, low, medium and high. The gpt-5-mini and gpt-5-nano pages list no effort values at all; the AIVAX catalog gives them the same four as gpt-5. We found no documented mapping for minimal on GPT-5.6, so replace it with none or low and compare both on your own requests. Our post on how providers expose reasoning controls compares effort values across vendors.

An omitted effort does more damage than a renamed one. OpenAI's GPT-5.6 upgrade guide says that if omitted, "GPT-5.6 defaults to medium", and warns that "a previously omitted setting can therefore become slower, more expensive, and incompatible with Chat Completions function tools after the model swap". The incompatibility is a hard rule: "For GPT-5.6, function tools in Chat Completions are compatible only with effective reasoning none. Reasoning with tools should use the Responses API." A Chat Completions request that sends tools and omits the effort runs at effective medium on Sol, which that rule rejects. Send reasoning_effort (Chat Completions) or reasoning.effort (Responses) in every call, and use the fix for that error to choose between none and moving the loop to Responses. Make the health check send production's tools and parameters; a check without tools stays green while the real path returns 400.

The Pro models change shape as well. gpt-5-pro and o3-pro are available only on the Responses API, and gpt-5-pro "defaults to (and only supports) reasoning.effort: high". On GPT-5.6, pro becomes an execution mode: reasoning.mode: "pro" on Responses, with the effort chosen separately, and the upgrade guide says "supported Pro efforts begin at medium". A gpt-5-pro workload that keeps high stays inside that range.

Context limits grow, and prompts above 272K cost more

gpt-5, gpt-5-mini and gpt-5-nano have a 400,000-token context with 272,000 maximum input tokens and 128,000 maximum output. gpt-5-pro has the same context and lists 272,000 maximum output tokens. o3 and o3-pro have 200,000 of context and 100,000 of output. The three GPT-5.6 model pages list 1,050,000 tokens of context, 922,000 maximum input and 128,000 maximum output.

Sol caps output at 128,000 tokens, so a gpt-5-pro call that produced more than that in one response has no direct equivalent and must be split. OpenAI's upgrade guide and the Luna model page give different context windows for Luna: the guide says "Luna has a smaller 400K context and 128K maximum output", and the model page lists 1,050,000. This post follows the model page; a Luna workload that sends more than 400,000 tokens should be tested before anyone relies on it.

A prompt up to 922,000 tokens now fits, but anything above 272K is priced at 2x input and 1.5x output for the whole request; all three 5.6 pages say "Prompts with >272K input tokens are priced at 2x input and 1.5x output for the full request". Cache writes cost 1.25 times the uncached input rate. The retiring models' pages state neither rule. Cap prompts below 272,000 tokens or budget for the surcharge; why a prompt cache hit rate is low covers the cache side.

Every standard replacement costs more per request

At list prices, each 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.

Cost of one 4,000-input, 1,000-output request on each GPT-5.6 model, as a multiple of the same request on the retiring model, at OpenAI list prices on 2026-10-26
Retiring modelCost of the requestOn Sol ($0.036)On Terra ($0.020)On Luna ($0.002)
gpt-5$0.01502.40x1.33x0.13x
gpt-5-mini$0.003012.0x6.67x0.67x
gpt-5-nano$0.000660.0x33.3x3.33x
o3$0.01602.25x1.25x0.13x

The pairing OpenAI recommends costs 2.25 to 6.67 times more per request here. Only the moves to Luna come out cheaper than the old model. For gpt-5 and o3 that means dropping two tiers, and gpt-5-mini to Luna, at 0.67x, drops one. OpenAI recommends none of those moves.

The 4,000-in, 1,000-out request has no reasoning tokens. Reasoning tokens are billed as output, so any effort above none shifts the result. The next table shows how many output tokens the replacement can generate before one request costs what it cost on the old model, at the same list prices.

Output tokens, including reasoning tokens, the replacement can generate before a request costs what it cost on the retiring model, at OpenAI list prices on 2026-10-26
Move1,000 input tokens, old model wrote 1,0001,000 input tokens, old model wrote 3,0004,000 input tokens, old model wrote 1,000
gpt-5 to Sol3621,362None: input alone costs more
gpt-5-mini to Terra20354None: input alone costs more
gpt-5-nano to Luna208875None: input alone costs more
o3 to Sol3001,100None: input alone equals the old total

In the 4,000-in column, gpt-5, gpt-5-mini and gpt-5-nano never break even: the input alone already costs more, and on o3 it equals the old total. A call where the old model wrote long answers from a short prompt has room, and the room shrinks as soon as you raise the effort. Record the output tokens that usage reports per request and hold them against this table.

Sol's promotional price runs at least through November 21

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". That date falls 26 days after this update and 20 days before the shutdown, and the page gives no price for afterwards. 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, 3.33 times gpt-5 and 3.13 times o3. We use both rates in our estimates.

Pro mode lowers the token rate and raises the token count

At list prices, Sol's $4 input and $20 output sit far below gpt-5-pro at $15 and $120 and o3-pro at $20 and $80. Per request, the answer depends on how many tokens pro mode adds. With the same arithmetic as above, a request with 1,000 input tokens that cost 1,000 output tokens on gpt-5-pro leaves Sol room for about 6,550 output tokens before it costs the same; against o3-pro the figure is about 4,800. Pro mode reports the aggregated tokens in usage, so measure your hardest requests in standard and in pro mode before deciding. OpenAI's GPT-5.6 guide says to "Prefer standard mode for routine, latency-sensitive, or high-volume work, and whenever your evaluations do not show a meaningful gain from pro mode."

Find the retiring IDs and price them on AIVAX

Search code, environment files, gateway settings and batch configurations for the six undated names and their dated snapshots. Then check what the replacement would cost. The script below 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 the catalog's representative price, so its 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 against the catalog as read on 2026-10-27, 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: high,medium,low
ok           @openai/gpt-5.6-terra     $0.0220    efforts: max,xhigh,high,medium,low,none

The four retiring models are flagged isDeprecating, and minimal appears in the efforts of the first three and in none of the 5.6 lists. o3 lists high, medium and low, all of which the 5.6 lists include; the catalog has listed o3 efforts only since 26 October. Extend used with the IDs from your own inventory and run the script in CI before each deploy.

The o3 line shows why the source of a price matters. At OpenAI list prices, Sol is $4 input and $20 output per million tokens against $2 and $8 for o3, so this request costs 2.25 times more on Sol ($0.036 against $0.016). The AIVAX catalog shows a representative price of $4.40 and $22 for Sol, the most common price among its providers once flex, fast and other special-routing endpoints are left out, which makes the same request 2.48 times more. What you pay depends on the provider that served the request: integrated-model responses carry a provider field with its tag, the catalog lists each provider's price in providers[].pricing, and the plan multiplier applies on top. Across Sol's providers outside special routing, this request costs between $0.0360 and $0.0396 before the multiplier.

The catalog also lists :pro and standard entries separately, each with its own price. For Sol, @openai/gpt-5.6-sol:pro shows $4 and $20 against $4.40 and $22 for @openai/gpt-5.6-sol, so read the price of the exact name you call and check the pricing page before you budget.

Qualify the replacement on your own traffic

The GPT-4o migration guide has the replay and canary steps, which apply here unchanged. Three checks belong to this move. Send every call with function tools through the path it will use in production; with an effort other than none, on OpenAI that path is the Responses API. Price the output tokens you measure against the break-even table twice, with Sol at $4/$20 and at the implied $5/$30. Then try a slice one tier down, on Terra or Luna, and keep it there only where your comparison shows the quality holds; the routing guide covers splitting traffic by complexity, and Agentic Tests can run the same multi-turn scenario against both models (the Agentic Tests docs list the quotas).

What AIVAX does with these models

The public catalog marks @openai/gpt-5, @openai/gpt-5-mini, @openai/gpt-5-nano and @openai/o3 with flags.isDeprecating: true. An account that used a model marked this way in the previous 30 days can receive the "AIVAX deprecated models alert" email, at most once every seven days. The message names the models and gives no shutdown date, so the date still comes from OpenAI. AIVAX does not reroute a request from a deprecated model to its replacement. The switch is yours to make; if clients call a saved AI gateway by name, you change its model once.

The catalog has no gpt-5-pro or o3-pro. The nearest entries are @openai/gpt-5.6-sol:pro, @openai/gpt-5.6-terra:pro and @openai/gpt-5.6-luna:pro, and they do not use the Responses API that OpenAI documents for pro mode. AIVAX calls them in the Chat Completions format, and the model definition sends reasoning: { mode: "pro", effort: ... } in the request body. The catalog lists none and low among their efforts, while OpenAI says Pro efforts begin at medium, so send medium or higher.

The effort takes an unusual path on these entries. The top-level reasoning_effort is written first; the hook that builds reasoning then reads the client's effort and clears it. In a tool loop, only the first request carries an effort inside reasoning.

The effort list in the catalog is descriptive. AIVAX does not compare a request's effort with it, so a minimal sent to a 5.6 model is forwarded as written and the upstream decides what happens. Temperature behaves the same before and after the move: saving a gateway with temperature fails validation on the four retiring models and on the three 5.6 models, a temperature sent in the request is dropped from the body, and top_p passes and is forwarded in both cases. The AI Gateway docs warn that some integrated models "reject assistant prefill, temperature, stop sequences, or reasoning effort". What OpenAI itself accepts at effort none is in the post on the temperature error on GPT-6.

Stop sequences change. Saving a gateway with Stop fails validation on gpt-5, gpt-5-mini and gpt-5-nano; on o3 and the three 5.6 models it passes. If a team removed a stop sequence to get a gateway onto gpt-5, the migration is the moment to decide whether it comes back.

Your client talks to AIVAX through /v1/chat/completions; the AI Gateway docs state that /v1/responses is not supported. With the integrated @openai/gpt-5.6-* models the upstream call also stays on Chat Completions, so the effort-none rule for function tools applies to them.

A gateway with your own OpenAI key (BYOK) works differently. It can set transportInterface: OpenAiResponses and send Responses requests upstream while the client keeps speaking Chat Completions; the tools-error guide shows that configuration.

Read on October 26, 2026: OpenAI facts come from the deprecations page and the model pages and guides linked above, Azure dates from Microsoft's retirement table (last updated September 23, 2026), and AIVAX facts from the product code and the public model catalog of the same day, except the o3 efforts and the script output, which come from the catalog as read on October 27. We sent no requests to OpenAI or AIVAX models, so every AIVAX behavior described here comes from reading code, including how the :pro entries pass the effort in a tool loop, and none of it, pro mode included, has been tested on the wire. Still unverified: which provider AIVAX's default routing picks for Sol, how AIVAX bills prompts above 272,000 tokens (the catalog lists a single price tier), and the effort values OpenAI accepts for gpt-5-mini and gpt-5-nano.