GPT-5.3-Codex API Deprecation: April 2027 Deadline
OpenAI's October 1 API notice names GPT-6 Sol as the replacement for GPT-5.3-Codex and GPT-5.1, and GPT-6 Luna for GPT-5.4-Nano, ahead of April 1, 2027 shutdown.
The GPT-5.3-Codex API deprecation announced on October 1 sets April 1, 2027 as the shutdown date. OpenAI recommends GPT-6 Sol for GPT-5.3-Codex and GPT-5.1, and GPT-6 Luna for GPT-5.4-Nano. Developers using those exact API model IDs have six months from the announcement to migrate. Start by finding every request that still selects an affected model, then test the replacement with your application’s existing acceptance checks.
GPT-5.3-Codex API deprecation: dates and replacements
The official API deprecations notice lists one October 1 announcement covering all three models:
| Affected API model ID | Recommended replacement | API shutdown |
|---|---|---|
gpt-5.3-codex |
gpt-6-sol |
April 1, 2027 |
gpt-5.1 |
gpt-6-sol |
April 1, 2027 |
gpt-5.4-nano |
gpt-6-luna |
April 1, 2027 |
Deprecation starts when OpenAI announces it; shutdown is when the model becomes inaccessible. This notice therefore creates a migration deadline, rather than saying these API models have already stopped working. Its scope is the API: it does not establish a matching retirement date for a ChatGPT subscription, Codex account sign-in, or another provider’s model menu.
The replacement column names GPT-6 Sol explicitly. GPT-6.1 Sol is a separate, newer model with different request constraints. Keep the announced replacement and any further model upgrade as separately testable decisions.
Find the requests that need to change
Our suggested first step is a model inventory. Search application code, environment configuration, scheduled jobs, saved request fixtures, gateway routing, and fallback settings for each affected ID. An application’s default can be current while a background worker or retry path still points to an older model.
Record one row per caller: the model ID, endpoint, reasoning setting, tools, output format, deployment environment, and owner. Add whether the caller runs interactively or on a schedule. This makes a rarely used recovery path visible before the deadline approaches.
For example, a repository assistant might select GPT-5.3-Codex in its main request but load an older model from a separate review configuration. Test both paths. A support classifier might use GPT-5.4-Nano for ordinary tickets and GPT-5.1 for escalations; both appear in this notice, with different replacement targets.
These are proposed application checks, not measured model results. Their purpose is to produce a complete change list. Keep the previous configuration in version control and record which tested release replaces it, so an operator can identify the active model without guessing from a product label.
Check the Sol or Luna request contract
The GPT-6 Sol model page describes a model for complex coding and agentic workflows. The GPT-6 Luna model page positions Luna for focused, high-volume tasks. Our Sol profile and Luna profile collect their specifications and relevant local examples.
Both official pages support reasoning efforts none, low, medium, high, xhigh, and max, with medium as the default. They direct developers to Responses for built-in tools and function calling. Chat Completions supports function calling only with reasoning_effort: "none". Check the endpoint and effort together before treating the migration as a model-string edit.
OpenAI’s GPT-6 migration quickstart also identifies parameter changes. When reasoning effort is not none, remove temperature, top_p, and top_logprobs. For Chat Completions, remove logprobs; for Responses, remove message.output_text.logprobs from include. If the old request uses minimal, start with low and compare representative tasks.
For migrations from GPT-5.5 or earlier, the guide replaces prompt_cache_retention with prompt_cache_options.ttl set to "30m". Review request builders that add these options automatically, including shared wrappers. The GPT-6 API guide provides a separate place to check the broader request setup.
Test the behavior your application depends on
Build a small regression set around the callers in the inventory. For a coding assistant, include one reproducible bug, one tool failure, and one task that must preserve a public function signature. Check the resulting patch and actual test output. A confident completion message does not establish that the application’s acceptance condition passed.
For a classifier, include ordinary inputs, ambiguous inputs, and an input that should escalate. Validate the returned structure and permitted category values. Keep your application’s required output format unchanged during this comparison; changing the prompt and schema at the same time makes failures harder to attribute.
For tool workflows, exercise the full round trip: the proposed call, the arguments your application accepts, the tool result, and the final response. Add a failed-tool case to verify recovery. Run these checks in a controlled environment with appropriate test data before granting the replacement access to production actions.
Use the same inputs and pass conditions for the old and new configurations. Record failures as well as successes, and inspect the cases where behavior differs. For a reusable coding acceptance contract, see our Sol coding guide.
Release the migration before the shutdown date
Choose an internal completion date earlier than April 1 so the team has time to investigate failures. Assign an owner to every caller, deploy the tested configuration in stages, and observe scheduled jobs as well as interactive traffic. A successful manual request will not exercise a weekly worker.
Our suggested release record includes the exact replacement ID, endpoint, effort, tested cases, observed errors, and the configuration revision. Compare elapsed time and billed usage across completed tasks, including retries. Do not assume that a replacement’s token price alone predicts your workload’s total cost.
Preserve a recovery plan while the retiring API model remains available. A fallback that selects one of these three IDs will itself need replacement before shutdown, so include recovery configuration in the final inventory check.