Official deprecation table · shutdown 2026-10-23

gpt-image-1, o1, gpt-4.1-nano: what to change by 2026-10-23

The 2026-04-22 section of OpenAI's deprecation page puts 17 rows of legacy snapshots on one shutdown date, 2026-10-23. Nine of them are image or reasoning ids: gpt-image-1 → gpt-image-2; o1, o1-pro, o3-mini, o4-mini and ft-o4-mini-2025-04-16 onto gpt-5.6-sol or gpt-5.6-terra; plus gpt-4.1-nano → gpt-5.6-luna and gpt-4o-2024-05-13 → gpt-5.6-sol. Snapshots and aliases stop together; the chat rows live on /openai-gpt-4-turbo-sunset.

Updated 2026-09-20

#shuts down 2026-10-23#9 rows here#snapshot and alias, same day#usually one line

Four key points

2026-10-23

the shutdown date in the table

The section dated 2026-04-22 has three columns - Shutdown date, Model snapshot, Substitute model - and the 9 rows here all read October 23, 2026. Another section defines it: at the shut down, the model or endpoint is no longer accessible.

9

rows this page lists

The 2026-10-23 wave is 12 snapshot rows plus 5 fine-tuning rows, 17 in total. We list 9: gpt-image-1; o1, o1-pro, o3-mini, o4-mini and ft-o4-mini-2025-04-16; gpt-4.1-nano together with its fine-tuning entry; and gpt-4o-2024-05-13. The remaining 8 rows are chat and base models.

6 months

the minimum notice the vendor states

Same page, policy section: generally available models get at least 6 months, specialised variants of them at least 3 months, and preview models can be retired on much shorter notice - the example given is 2 weeks. From 2026-04-22 to 2026-10-23 is roughly that span, and calling it exactly 6 months is our own arithmetic.

2026-12-01

the second image wave

A section dated 2026-06-02 moves gpt-image-1-mini, gpt-image-1.5 and chatgpt-image-latest to 2026-12-01, all onto gpt-image-2. Reasoning continues on 2026-12-11, where o3-2025-04-16 goes to gpt-5.6-sol.

What this is

The job is small: swap the retired model ids for the ones the table names while there is still time. Every row on OpenAI's page carries a shutdown date, a model snapshot and a substitute; the 9 rows here lead to four ids - gpt-image-2, gpt-5.6-sol, gpt-5.6-terra and gpt-5.6-luna - and the o1-pro row adds the condition reasoning.mode: pro in parentheses. The call shape does not change, the id does. Nothing in the three sections cited here says a word about aggregators, third-party endpoints, or how long anyone else keeps serving the old names.

What happened

The section headed 2026-04-22: Legacy GPT model snapshots states “we are deprecating a set of older OpenAI models. Access to these models will be shut down on the dates below”, and all 17 rows in it carry October 23, 2026. Two later notices, dated 2026-06-02 and 2026-06-11, schedule the rest of the image family for 2026-12-01 and the o3 plus GPT-5 snapshots for 2026-12-11. This page reads the copy captured on 2026-09-20.

Timeline

2026-04-22

The section dated 2026-04-22: Legacy GPT model snapshots lists 17 rows all dated October 23, 2026, and the 9 rows of this page are among them.

2026-09-20

2026-09-19, our own check: six legacy ids sit in the priced ledger with 0 priced calls over 30 days, while the substitutes run between 76,349 and 107,852.

2026-10-23

2026-10-23, the shutdown day: the image row, the 5 reasoning rows, gpt-4.1-nano with its fine-tuning entry and gpt-4o-2024-05-13 stop together, each snapshot alongside its alias.

Confirmed vs caution

Officially confirmed

Only what the 2026-09-20 capture states word for word: the section title 2026-04-22: Legacy GPT model snapshots; the header Shutdown date / Model snapshot / Substitute model; October 23, 2026 on all 17 rows; the substitutes for the 9 rows above with reasoning.mode: pro in parentheses on the o1-pro row; the definition that at the shut down the model or endpoint is no longer accessible; at least 6 months for generally available models, 3 for specialised variants, less for preview; and the dedicated-capacity sentence.

⚠️ Caution

Not to be written as fact: that QCode redirects an old id automatically or cuts it over the same day as upstream - unchecked; that a substitute behaves or prices the same, since the table maps ids only and behaviour is yours to measure; that 2026-10-23 will slip, as the 2026-09-20 copy holds no postponement wording, though the sales route stays open. Reading the section title 2026-04-22 as the announcement date is our inference too - that section never repeats a notification date. No QCode status is claimed for o1, o3, o4-mini, gpt-image-1-mini or chatgpt-image-latest. The model-field checks in the verification step are our advice, not OpenAI wording. And gpt-4-1106-preview plus the remaining 4 fine-tuning rows are named, not expanded.

Two families, two mappings

Images: 1 row, 1 target

gpt-image-1 → gpt-image-2, shutdown 2026-10-23. Three more image ids (gpt-image-1-mini, gpt-image-1.5, chatgpt-image-latest) are not on that day: OpenAI lists them under 2026-12-01, also onto gpt-image-2. What gpt-image-2 itself does has its own page.

Reasoning: 5 rows, 2 targets

o1-2024-12-17 | o1, o1-pro-2025-03-19 | o1-pro and o3-mini-2025-01-31 | o3-mini go to gpt-5.6-sol, the o1-pro row with reasoning.mode: pro; o4-mini-2025-04-16 | o4-mini and ft-o4-mini-2025-04-16 go to gpt-5.6-terra. None of the 5 rows keeps an o-series id.

What to do

Four steps. First, search: grep your code, environment variables, SDK defaults and eval scripts for the 9 ids, snapshots and aliases together - the o1 cell holds o1-2024-12-17 and o1 side by side, one date for both. Second, change the model field in the request body to the substitute the table names: gpt-image-1 → gpt-image-2, gpt-4.1-nano → gpt-5.6-luna, the reasoning rows onto gpt-5.6-sol or gpt-5.6-terra. Third, add: o1-pro also needs reasoning.mode: pro, and swapping only the id quietly drops the pro behaviour. Fourth, verify against the endpoint you actually call: run real requests, confirm that the model reported back and in your billing log is the new id, fire one old-id request to see it refused, and keep a same-prompt comparison between old and new. The last step is our operational advice - the vendor promises inaccessibility on the date, not identical behaviour.

On QCode

Checked 2026-09-19 against two internal views (the public /models list and the 30-day priced-call ledger): gpt-image-1.5, gpt-image-2, gpt-4.1-nano and gpt-4o-2024-05-13 are in the public list, while gpt-image-1 and o1-2024-12-17 only appear in the priced ledger; all six show 0 priced calls; the substitutes run gpt-5.6-sol 107,852, gpt-5.6-terra 82,888 and gpt-5.6-luna 76,349. Whether we still serve an old id after upstream kills it is not predicted here, and the bare names o1, o3-mini and o4-mini are not in the public list we captured, so this page states no QCode availability for them.

FAQ

My config just says o1, no snapshot - does it stop that day too?

Yes. That row carries the snapshot o1-2024-12-17 and the alias o1 in the same cell, with one date and one substitute. Same for o1-pro, o3-mini and o4-mini: pinning a snapshot buys you nothing.

Is gpt-image-1.5 also on 2026-10-23?

No. On 2026-10-23 the image family has only the gpt-image-1 row. gpt-image-1.5, gpt-image-1-mini and chatgpt-image-latest sit in the section dated 2026-06-02 and shut down on 2026-12-01, also onto gpt-image-2.

How much does an o1-pro caller have to change?

Two places: model becomes gpt-5.6-sol and the request carries reasoning.mode: pro, the condition in parentheses on that row. The same pattern is on o3-pro-2025-06-10 and gpt-5-pro-2025-10-06 in the 2026-12-11 section. Swap only the id and you lose the pro tier.

gpt-4.1-nano and gpt-4o-2024-05-13 are chat models - why here?

The vendor put them in the same section and the same 2026-10-23 table, with substitutes gpt-5.6-luna and gpt-5.6-sol; gpt-4.1-nano also has a fine-tuning entry, ft-gpt-4.1-nano-2025-04-14, on luna the same day. Those are the rows people miss when editing config. gpt-4-turbo, gpt-3.5-turbo-0125 and gpt-4-0613 are written up on the other page.

What counts as verified after the change?

Whatever the endpoint you really call shows: run real requests, confirm the model in the response and in the billing log is the new id, then send one old-id request and watch it get refused. The vendor guarantees only inaccessibility, not equivalence.

Upstream shuts it down - does QCode follow the same day?

This page does not predict. Measured 2026-09-19: gpt-image-1, gpt-image-1.5, gpt-image-2, o1-2024-12-17, gpt-4.1-nano and gpt-4o-2024-05-13 sit in the priced ledger with 0 priced calls over 30 days, against gpt-5.6-sol 107,852, gpt-5.6-terra 82,888 and gpt-5.6-luna 76,349. After the date, availability follows the live catalog.

Sources

OpenAI deprecations page https://developers.openai.com/api/docs/deprecations (this environment gets 403 from it directly, so the page cites the Wayback snapshot https://web.archive.org/web/20260920011745/https://developers.openai.com/api/docs/deprecations, snapshot 2026-09-20 01:17 UTC, fetched 2026-09-21); the quotes come from the sections dated 2026-04-22, 2026-06-02 and 2026-06-11 plus the notice-period policy on that page. The vendor's dates are written October 23, 2026, Dec 1, 2026 and so on, and this page renders them as ISO. Catalog listing and priced calls over the last 30 days are our own check dated 2026-09-20; if the vendor edits the table after 2026-09-20, every number here needs re-verification.

Clean the 9 old ids out of config first

gpt-5.6-sol, gpt-5.6-terra and gpt-5.6-luna are in QCode's catalog with priced calls over the last 30 days (checked 2026-09-20); a retired id staying callable is not promised here.

Related

Not affiliated with OpenAI. The dates, model ids and substitutions on this page are transcribed from the public deprecation page as captured on 2026-09-20, and the on-site figures from our check of 2026-09-20. This is not an OpenAI migration guide and no promise that a retired id stays callable.