OpenAI retires gpt-5.3-codex in April 2027: retired ids on Sume runs
Pin model ids you control. On a Sume Format run, omitting model uses gpt-6-sol, a retired gpt-5.6-sol runs on gpt-6-sol, and the receipt echoes the id that ran.

OpenAI's deprecations page lists gpt-5.3-codex, gpt-5.1 and gpt-5.4-nano as removed from its API on April 1, 2027, with gpt-6-sol and gpt-6-luna named as replacements. If your integration passes a model id around, this is the week to find every place it is hard-coded.
On a Sume Format run the model field selects only the LLM that orchestrates the run, and Sume handles a retired id for you: a request for retired gpt-5.6-sol runs on gpt-6-sol, and the receipt's model field says which id actually ran.
What the vendor page and the Sume docs say
The OpenAI rows come from its deprecations page and the Sume rows from the Create a run page (read 2026-10-03).
| Question | OpenAI API | Sume Format run |
|---|---|---|
| What was announced | gpt-5.3-codex, gpt-5.1 and gpt-5.4-nano removed April 1, 2027 | gpt-5.6-sol is retired |
| Replacement named | gpt-6-sol for the first two, gpt-6-luna for gpt-5.4-nano | gpt-6-sol |
| If you send the old id | Plan a migration before the removal date | The run uses gpt-6-sol |
| Where to see what ran | Your own request logs | The model field on the receipt |
| An id that is not in the catalog | Not covered here | 400 invalid_request |
Stop hard-coding the id
For Format runs the simplest fix is to omit model. The default is gpt-6-sol, so a Format call needs no model id at all, and image, video and audio models are chosen by the Format's tools rather than this field. If you do send one, record the id from the receipt, not the id you asked for.
curl -sS "https://api.sume.com/v1/format-runs/$RUN_ID" \
-H "Authorization: Bearer $SUME_API_KEY" | jq '.data.model'A migration checklist
Search your code for the old ids first, then move the id into one configuration value, and finally make your tests assert on the id the receipt reports rather than the one you sent. Keep the request the same otherwise, since the field does not change image or video generation. For the current default and how it showed up on receipts, see the omitted model default.
Sources
Related posts
More in Developers
- OpenAI transcription 25 MB limit: how many minutes of wav fit?
OpenAI caps transcription uploads at 25 MB. A 16 kHz mono wav fills that in about 13 minutes, so detach long videos to mp3 or ranges first.
- openapi-typescript on the Sume OpenAPI JSON: types only, one command
npx openapi-typescript takes a URL or file and writes a .d.ts. Generate Sume job and error types from the 3.0.3 spec with no runtime code in your bundle.
- Orval react-query client from the Sume OpenAPI JSON, tags-split
Point Orval at api.sume.com/reference/json with client react-query and mode tags-split for typed hooks per Sume tag. Config, caveats and polling tips.
- Poison Sume webhook events: park them in a table, return 2xx
A webhook your handler can never process will be retried up to 10 times. Store the raw body in a dead-letter table, return 2xx, and replay it later.
Written by Sume