Skip to content

Evaluation and modelsGuide

GPT-5 and o3 shut down Dec 11: a replacement test plan

Dated GPT-5 and o3 snapshots leave the OpenAI API on December 11, 2026, and the listed replacements bill more per token. This guide gives a six-week test plan that measures reasoning-token cost, output shape and latency on your own traffic before you cut over.

By INFRO Editorial

Published

9 min read

A single amber path on a dark ground forking into two glass branches of slightly different brightness

In short

Replace gpt-5, gpt-5-mini, gpt-5-nano, gpt-5-pro, o3 and o3-pro with the GPT-5.6 models OpenAI lists, but test first. The per-token rates are higher for most pairs, so what matters is reasoning tokens per task, output shape and latency on your own prompts 14.

Key takeaways

  • Six models leave the OpenAI API on December 11, 2026, and Azure OpenAI uses different dates: o3 and o3-pro retire there on November 19, 2026.
  • List rates for the named replacements are higher per token for gpt-5, gpt-5-mini, gpt-5-nano and o3, so a cost-neutral swap needs fewer output tokens per task.
  • Reasoning tokens bill as output tokens, so compare reasoning_tokens per request at a fixed effort on both models, not the price sheet alone.
  • Test output shape separately from quality: incomplete responses, schema validity, tool arguments, length and formatting all change what your parser sees.
  • Run a weighted canary and keep a rollback target until the shutdown date, because a retired snapshot cannot be a fallback.

What shuts down on December 11, and which dates differ

OpenAI told developers on June 11, 2026 that older GPT-5 and o3 snapshots leave the API on December 11, 2026.1 Generally available models get at least six months' notice, and this one used the whole window.1 Today, October 30, you have 42 days.

Retiring idRecommended replacement
gpt-5, gpt-5-2025-08-07gpt-5.6-sol
gpt-5-minigpt-5.6-terra
gpt-5-nanogpt-5.6-luna
gpt-5-progpt-5.6-sol with reasoning.mode: pro
o3, o3-2025-04-16gpt-5.6-sol
o3-progpt-5.6-sol with reasoning.mode: pro
OpenAI's listed shutdown set and replacements, from the deprecations page.

You can also read the date from the API: GET /v1/models returns an optional shutdown_date per model, null when none is announced.1

If any of this traffic runs on Azure OpenAI, the dates are not December 11. The Foundry schedule, last updated 2026-09-23, lists o3, o3-pro and o3-deep-research as deprecated with a retirement date of 2026-11-19 and gpt-5.6-sol as the replacement. gpt-5, gpt-5-mini and gpt-5-nano show 2027-02-09, and gpt-5-pro shows 2027-04-07.2 A retired Azure model returns 410 Gone. For Global Standard, Data Zone Standard and Standard deployments Microsoft manages automatic upgrades when a version retires, while provisioned deployments are not auto-upgraded.3 An automatic upgrade is a model swap you did not test, so run this plan before that date, not after it.

Price the swap before you test it

Every pair moves to a higher per-token rate except the two Pro models. These are OpenAI's standard-tier list rates per million tokens, and the ratios are computed from them.4 Replace them with your contracted rates if you have any.

Old modelOld ratesReplacementNew ratesInput ratioOutput ratio
gpt-51.25 / 10.00gpt-5.6-sol4.00 / 20.003.2x2.0x
gpt-5-mini0.25 / 2.00gpt-5.6-terra2.00 / 12.008.0x6.0x
gpt-5-nano0.05 / 0.40gpt-5.6-luna0.20 / 1.204.0x3.0x
o32.00 / 8.00gpt-5.6-sol4.00 / 20.002.0x2.5x
gpt-5-pro15.00 / 120.00gpt-5.6-sol (pro mode)4.00 / 20.000.27x0.17x
o3-pro20.00 / 80.00gpt-5.6-sol (pro mode)4.00 / 20.000.20x0.25x
list rates (input / output, USD per 1M tokens) and the replacement-to-old ratio.

Three caveats keep that table honest. First, GPT-5.6 Sol's rate is promotional and OpenAI says it is available at least through November 21, 2026, so the rate you forecast on may not be the rate in January.4 Second, pro mode bills the aggregated model work at the model's standard token rates, and it does more work than standard mode, so the low per-token ratios for the Pro rows say nothing about cost per task.5 Third, for GPT-5.6 Sol, prompts over 272K input tokens are priced at 2x input and 1.5x output for the full request, and cache writes bill at 1.25x the uncached input rate.6 The GPT-5.6 rows list 30-minute and 12-hour cache-write rates; the gpt-5 and o3 rows list none.4 If your old traffic leaned on automatic caching, model the write line item.

Step 1: find every pinned call and freeze a replay set

Start with an inventory by model id, not by service name. Search code and config for the six ids and their dated forms, then check the request log of whatever gateway or proxy you use for the same ids, because environment variables and per-tenant overrides hide pins. Record, per call site: endpoint (Chat Completions or Responses), reasoning effort, output cap, whether it streams, whether it uses structured outputs or tools, and its timeout.

Then freeze a replay set. Sample real prompts from the last few weeks, stratified by call site, input length and outcome class (success, retry, user complaint). Keep multi-turn conversations whole. Store the old model's answers alongside the prompts so you are comparing against what production actually returned, not a fresh run that may differ. Strip or tokenize personal data under your logging policy before the set leaves production.

Set the effort explicitly on both arms. GPT-5.6 defaults to medium if you omit it.5 I did not confirm what each retiring snapshot defaults to, so do not assume the two arms match until you pin them.

Step 2: measure reasoning tokens per task

Reasoning tokens are not visible in the response, but they occupy context and bill as output tokens.5 They show up in usage.output_tokens_details.reasoning_tokens.5 That makes the output-rate ratios above the number to beat: a replacement at 2.5x the output rate has to produce proportionally fewer output tokens to hold cost flat.

Two behaviors change the input side as well. Models released before GPT-5.6 carry input and output tokens across turns without rendering earlier reasoning, while GPT-5.6 models default to rendering available reasoning from earlier turns; reasoning.context selects either behavior on supported models.5 In agent loops and long chats, measure input tokens per turn on both arms, not only output.

Here is a replay harness for one call site. It records cost with the usage fields, the finish status and time to first visible token.

replay.py
import time
from openai import OpenAI

client = OpenAI()

# USD per 1M tokens: (input, cached input, output). List rates read 2026-10-30.
# Replace with your contracted rates.
RATES = {
    "o3-2025-04-16": (2.00, 0.50, 8.00),
    "gpt-5.6-sol": (4.00, 0.40, 20.00),
}

def run(model: str, effort: str, prompt: str, cap: int = 25_000) -> dict:
    t0 = time.perf_counter()
    first = None
    with client.responses.stream(
        model=model,
        reasoning={"effort": effort},
        input=prompt,
        max_output_tokens=cap,
    ) as stream:
        for event in stream:
            if first is None and event.type == "response.output_text.delta":
                first = time.perf_counter() - t0
        r = stream.get_final_response()

    u = r.usage
    cached = u.input_tokens_details.cached_tokens
    reasoning = u.output_tokens_details.reasoning_tokens
    rin, rcache, rout = RATES[model]
    cost = ((u.input_tokens - cached) * rin + cached * rcache + u.output_tokens * rout) / 1e6
    return {
        "model": model,
        "status": r.status,
        "incomplete": getattr(r.incomplete_details, "reason", None),
        "reasoning_tokens": reasoning,
        "visible_tokens": u.output_tokens - reasoning,
        "ttft_s": first,
        "total_s": time.perf_counter() - t0,
        "cost_usd": cost,
        "text": r.output_text,
    }

Report cost per successful task, not per request: divide total cost by the number of replay items that pass your checks, so a model that fails and needs a retry pays for both calls. Run each item more than once; reasoning-token counts vary per run, so look at p50 and p95 per call site rather than one sample.

Step 3: compare output shape

Quality scoring is its own project; shape is cheaper to check and breaks things first. Check these as hard assertions on the replay set:

  • status is completed. If generation hits max_output_tokens or the context limit you get incomplete and may pay for input and reasoning tokens without any visible output.5 OpenAI recommends reserving at least 25,000 tokens for reasoning and output when you start experimenting.5 An output cap tuned for a non-reasoning or smaller-budget model is the likeliest cause of a new failure.
  • Structured output parses against your JSON schema, and tool-call arguments validate. Count the rate of failures per call site.
  • Length distribution of visible output: median, p95 and the share near your cap.
  • Formatting your downstream code depends on: Markdown, lists, headings, language, citation style.
  • Refusal and clarifying-question rate. If you also test a GPT-6 model as a candidate, OpenAI notes that GPT-6 Astra is more likely to ask for clarification than earlier models and tends to use lists, tables and Markdown unless told otherwise.7 OpenAI frames those as observations on Astra to be evaluated on your workload, not guarantees for other models.7

Keep a diff view of old answer against new answer for the 50 or so items that disagree most. Reading them is how you find a changed default, such as tone, verbosity or list use, that no metric names.

Step 4: compare latency and timeouts

Reasoning models spend time before the first visible token, and the count can run from a few hundred to tens of thousands of reasoning tokens depending on the problem.5 So a longer or shorter reasoning budget moves both time to first token and total time. Record both, per call site, at p50 and p95, at the same effort on both arms and then at one effort level lower on the new model. OpenAI describes lower effort as favoring speed and lower token usage, and says high effort suits tasks where quality matters more than latency.5 Your evals decide whether a lower effort passes.

Then reset timeouts and UI behavior from the measured p95, not from the old model's habits. Two options exist if p95 is too slow: a short preamble before deeper reasoning, which OpenAI suggests for faster time to first visible token,5 or Fast mode, which lists gpt-5.6-sol at $8 input and $40 output, twice the standard rate.4 Price that option into the forecast before you rely on it.

Last, check capacity. The GPT-5.6 Sol model page lists rate limits by usage tier; at the Build tier that is 5,000 requests and 1,000,000 tokens per minute.6 If your reasoning-heavy traffic was close to its token limit on o3, a model with a different token profile can hit the ceiling at a different request rate.

Step 5: canary and cut over on a calendar

The replacement carries a single snapshot name. gpt-5.6-sol is the only snapshot listed on its model page, and the gpt-5.6 alias routes to it.6 There is no dated name to pin to, so the discipline is to watch the id the provider reports and treat any change as an event.

Dates (2026)WorkExit check
Oct 30 – Nov 5Inventory, freeze replay set, set explicit effort on both armsEvery pinned call site listed with owner
Nov 6 – Nov 12Offline replay: cost, shape, latency per call sitePer-call-site table of cost per successful task
Nov 13 – Nov 19Fix caps, schemas, prompts, timeouts; Azure o3 retires Nov 19Shape assertions pass; Azure deployments handled
Nov 20 – Nov 265% then 25% canary; re-forecast around GPT-5.6 Sol's promotional windowError mix and p95 within agreed bounds
Nov 27 – Dec 3Ramp to 100% on the non-critical call sites firstSpend within the budget you set
Dec 4 – Dec 10Last call sites, remove pins from code, keep rollback to the new alternateZero calls to retiring ids
a six-week schedule from October 30 to the shutdown. The Azure and promotion dates come from the schedule and pricing pages.

Do not use the old snapshot as the rollback target after you ramp, since it disappears on the shutdown date. Rollback means a second modern model, such as a GPT-6 candidate you also replayed, or a different provider.

Where a gateway helps

Everything above works with plain SDK calls. If you already route through INFRO, a few shipped capabilities map to the plan. Model lifecycle records OpenAI's shutdown dates, warns organizations still sending a retiring model, and from the shutdown date refuses it before any provider call, naming the replacement. A named route with weighted targets over your own connections can carry the canary split. Usage records the model, latency, token counts and estimated provider cost for each request, and you can enter your negotiated rates so estimates use them before list rates. Budgets can cap a project while you ramp. The traffic changes (opens in a new tab) findings flag a model answered by a new snapshot, output tokens per request up by at least 15%, answers cut off by the length limit and slower p95, each with an estimated weekly cost change.8 INFRO sees request metadata rather than answers, so it does not judge quality; the replay set does that.8 Your providers still invoice you directly, and INFRO takes 0% of model spend.9

If you cannot finish by December 11

Cut scope, not the test. Move the call sites that fail loudly first (structured output, tools, hard caps), and leave low-risk prose call sites for the last week. For anything that cannot make the date, the only continuity option OpenAI names is dedicated capacity through its sales team, and only in some cases.1 A refused request after the shutdown costs more than a day of canary, so keep the schedule's last row for cleanup, not for first tests.

Questions readers ask

Can I keep calling gpt-5 or o3 after December 11?
Not on the standard API: after the shutdown date the model is no longer accessible. OpenAI says that in some cases developers may be able to provision dedicated capacity for continued access, and points to its sales team for that option 1. Treat it as a negotiation, not a plan.
Do the replacement models work on Chat Completions or only on Responses?
GPT-5.6 Sol lists support for both Chat Completions and Responses 6. OpenAI recommends Responses for reasoning models, and says Chat Completions does not support function calling with GPT-6 Astra or GPT-6.1 Sol, so check the endpoint table on the model page before you pick a different target 5.

From the team that builds it

Where this shows up in INFRO

INFRO is a control plane in front of the provider accounts you already hold. The capabilities below are the parts of it this article touches, each with the documentation that defines its behaviour.

  • Model retirements

    Available with a plan

    INFRO records each vendor's model deprecations and shutdown dates, warns organizations still sending a retiring model, and from the shutdown date refuses it before any provider call, naming the replacement.

  • Traffic changes

    Available with a plan

    Changes in your traffic that come with no error: a model answered by a new snapshot, longer answers, a lost prompt cache, more fallbacks, answers cut off by the length limit, slower responses or a new error mix. Each finding names the likely cause and the estimated weekly change in provider cost. INFRO sees request metadata, not answers, so it does not judge answer quality.

    Read the documentation for Traffic changes
  • Health-aware routing

    Available with a plan

    Named routes use priority or weighted targets over your own connections, with health checks, retries and failover.

    Read the documentation for Health-aware routing
  • Usage and cost per request

    Available with a plan

    Every request records its model, latency, token or unit counts, and estimated provider cost, queryable by project and key.

    Read the documentation for Usage and cost per request
  • Negotiated provider rates

    Available with a plan

    Enter the rates your contracts actually carry, per model and optionally per provider, so estimated cost uses them before the vendor's list rate. Included on every plan.

    Read the documentation for Negotiated provider rates
  • Budgets and spend ceilings

    Available with a plan

    A hard cap per organization, project, member, and key, with alerts at your own thresholds.

    Read the documentation for Budgets and spend ceilings

INFRO accounts are self-serve. Provider usage is billed to you by your providers; INFRO charges a software subscription and takes 0% of model spend. See plans.

Sources

Numbered in order of first citation. Each was opened and checked against the claim on the date shown.

  1. 1.Deprecations (opens in a new tab) — OpenAI. Accessed Oct 30, 2026.
  2. 2.Model retirement schedule (opens in a new tab) — Microsoft Learn. Accessed Oct 30, 2026.
  3. 3.Microsoft Foundry Models lifecycle and support policy (opens in a new tab) — Microsoft Learn. Accessed Oct 30, 2026.
  4. 4.Pricing (markdown version) (opens in a new tab) — OpenAI. Accessed Oct 30, 2026.
  5. 5.Reasoning models (opens in a new tab) — OpenAI. Accessed Oct 30, 2026.
  6. 6.GPT-5.6 Sol model page (opens in a new tab) — OpenAI. Accessed Oct 30, 2026.
  7. 7.Using GPT-6 (opens in a new tab) — OpenAI. Accessed Oct 30, 2026.
  8. 8.Traffic changes (opens in a new tab) — INFRO. Accessed Oct 30, 2026.
  9. 9.INFRO documentation (opens in a new tab) — INFRO. Accessed Oct 30, 2026.

About this article

Read on 2026-10-30: OpenAI's deprecations page, its pricing page (the openai.com/api/pricing URL returned HTTP 403, so the developers.openai.com markdown version was used), the reasoning guide, the GPT-6 guide and the GPT-5.6 Sol model page, Microsoft's Foundry lifecycle policy and retirement schedule (last updated 2026-09-23), and two INFRO docs pages. Left out as unconfirmed: any rate after GPT-5.6 Sol's promotional window, latency figures for either model generation, and per-region Azure upgrade dates.

Last checked against its sources on . The next review is due by . No separate named reviewer is recorded for this article.

How articles are written, sourced and corrected is set out in the editorial standards.