gpt-image-1 cutover calendar: 18 days to Oct 23, 57 to Dec 1

A dated plan for the gpt-image-1 shutdown on 2026-10-23: inventory, canary, cut over and cleanup, with the Dec 1 ids on the same Sume migration.

5 min readSume
All posts

There are 18 days between today, 2026-10-05, and the gpt-image-1 shutdown on 2026-10-23, and 57 days to December 1, when three more OpenAI image ids go. A plan that fits is four dated steps: inventory this week, canary on Oct 12, cut over from Oct 19 to 21, and keep Oct 22 as slack. OpenAI's deprecations page (read 2026-10-05) gives both dates and names gpt-image-2.5-sunburst or gpt-image-2.5-flare as the replacement for each id.

The dates are not the same for every id, which is why a single search for gpt-image is not enough. The script at the end of this post prints the days left for each one.

The calendar

Each row is a deadline you control, working back from the shutdown. The Sume steps use the Image API, where the replacements are openai/gpt-image-2.5 (Flare) and openai/gpt-image-2.5-sunburst.

gpt-image-1 migration plan, read 2026-10-05
DateDays to Oct 23Step
Oct 5 to Oct 1118 to 12List every call site, fixture and config value naming an OpenAI image id
Oct 12 to Oct 1811 to 5Send a small share of live traffic to the 2.5 ids, with quality set explicitly
Oct 19 to Oct 214 to 2Move all gpt-image-1 traffic; keep the old path behind a flag you can turn off
Oct 221Slack day: fix whatever the canary missed
Oct 230gpt-image-1 shuts down; delete the flag and the old id
Dec 1Dec 1 idsgpt-image-1-mini, gpt-image-1.5 and chatgpt-image-latest shut down

What each step needs on Sume

The steps are short, but each one has a Sume-specific check.

  • Inventory: Sume's catalog has no gpt-image-1 row, so any code that sends that id to Sume already needs a new model value. Search config files and environment variables, not only source.
  • Canary: set quality on every call. Sume defaults to high when it is omitted, and auto reserves the max price, so an unpinned canary can cost more than the baseline.
  • Cutover: calls that take longer than 30 seconds return 202 with a job envelope. Make the client handle both 200 and 202 before the switch, as described in Jobs and results.
  • Cleanup: results are Sume-hosted URLs, not base64, so remove any decoder that only the old path used.

Why not wait for the Dec 1 ids

Moving all four ids in one pass costs the same as moving one, because the replacement is identical and the request changes are the same. The only reason to separate them is risk: do the October 23 id first, and the rest become a configuration change. The five weeks between the two dates also give you a window to compare Flare and Sunburst on your own prompts instead of guessing.

Print the countdown

Run this each morning, or add it to CI so the build prints how many days remain. It uses only the standard library and has no dependency on any API.

from datetime import date

TODAY = date(2026, 10, 5)
DEADLINES = {
    "gpt-image-1": date(2026, 10, 23),
    "gpt-image-1-mini": date(2026, 12, 1),
    "gpt-image-1.5": date(2026, 12, 1),
    "chatgpt-image-latest": date(2026, 12, 1),
}

for model_id, shutdown in sorted(DEADLINES.items(), key=lambda item: item[1]):
    left = (shutdown - TODAY).days
    print(f"{model_id:<22} shuts down {shutdown}  ({left} days left)")

After the cutover

Plan for the failure that does not show up in a canary: a code path that runs once a month. Reports, seasonal campaigns and back-office tools often call an image model only on a schedule, and they are the calls most likely to still name gpt-image-1 on Oct 23. Ask each owner for the date of the next run, and move any path that fires after the shutdown before it does.

Keep one low-quality smoke call to each new id in your deploy checks, and watch usage.cost for a week. If the number is higher than your old average, the usual cause is a missing quality or a size that reserves the upper bound; both are one-field fixes.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume