OpenAI Legacy Models Shut Down Sept. 28, 2026: Migration Checklist
OpenAI's current API deprecations page lists September 28, 2026 as the shutdown date for gpt-3.5-turbo-instruct, gpt-3.5-turbo-1106, babbage-002 and davinci-002, with gpt-5.6-terra as the recommended replacement for all four. This is a model-retirement boundary, not permission to make a blind model-name substitution. Older integrations can depend on legacy Completions request/response shapes, prompt formatting, stop behavior, token limits, streaming parsers, fine-tuned assumptions or snapshot-specific output characteristics. OpenAI recommends migrating application flows toward the Responses API over time and explicitly advises comparing behavior, latency, token usage and errors before routing more traffic. Inventory every direct and indirect reference now, migrate a representative flow first, add regression tests around output parsing and business rules, then expand traffic only after the replacement behaves correctly under your real workload.
Production code, scripts, SDK wrappers or environment variables still reference gpt-3.5-turbo-instruct, gpt-3.5-turbo-1106, babbage-002 or davinci-002
A legacy integration calls the Completions API and assumes changing only the model string will preserve request and response behavior
Streaming, stop sequences, logprobs, prompt formatting or output parsing depend on behavior that was tuned around an older model
A background job, internal tool or low-traffic endpoint still uses a deprecated model even though the main application has already migrated
A team has no rollback or traffic-splitting plan for the September 28 shutdown boundary
Possible causes
OpenAI scheduled the four legacy model entries for API removal on September 28, 2026 and currently recommends gpt-5.6-terra as the replacement
Legacy model usage is often hidden in batch jobs, prompt templates, evaluation scripts, feature flags, old SDK wrappers and environment configuration
A replacement model can differ in instruction following, tokenization, output structure, latency and cost even when it serves the same broad text-generation purpose
Moving from older Completions-style integrations toward modern Responses or Chat Completions flows can require request, output and streaming changes rather than a one-line rename
HOW TO FIX IT
Work from the safest step to the harder repair.
Step 1. Search the complete production surface for the four retiring model IDs: application source, endpoint handlers, workers, cron jobs, notebooks, evaluation harnesses, SDK wrappers, environment variables, feature flags, tests and deployment configuration. Low-traffic code paths are still production dependencies.
Step 2. Classify each call by API contract before changing it. Record whether the integration uses legacy Completions, Chat Completions, Responses or an SDK abstraction, plus whether it streams, uses stop sequences, logprobs, structured parsing or custom retry logic.
Step 3. Use gpt-5.6-terra as OpenAI's current recommended replacement, but treat that recommendation as the start of migration testing rather than proof of drop-in behavioral equivalence.
Step 4. For legacy Completions integrations, decide whether to preserve the old endpoint temporarily where still supported or migrate the flow to a current API contract. OpenAI recommends moving application flows toward the Responses API over time and provides an incremental migration path.
Step 5. Migrate one representative low-risk flow first. Update the endpoint, request body and output handling together when the API contract changes instead of changing the model name while leaving incompatible parsing assumptions in place.
Step 6. Build regression fixtures from real non-sensitive production-shaped inputs. Compare task correctness, refusal/error behavior, output length, formatting, stop behavior, latency, token usage and downstream parser success before routing additional traffic.
Step 7. If the application expects machine-readable output, validate the exact parser boundary. Prefer currently supported structured-output mechanisms where appropriate rather than relying on prose formatting that happened to be stable on the retired model.
Step 8. Test streaming separately from non-streaming requests. A parser that assumes one legacy chunk shape can fail even when the replacement model itself is healthy.
Step 9. Audit prompt assumptions. gpt-3.5-turbo-instruct and older completion-style models may have been driven by hand-built instruction prefixes or delimiters; verify that those prompts still produce the intended business result rather than automatically carrying every historical workaround forward.
Step 10. Measure cost per successful task instead of comparing only nominal token prices. Include retries, longer outputs, failed parses, moderation or validation rework, latency and human review where those materially affect the workflow.
Step 11. Use staged traffic or a feature flag for consequential production paths. Keep the last known-good application version and configuration recoverable while the replacement is being validated; do not rely on the retiring model as the rollback after September 28.
Step 12. Harden failure handling before the deadline. Bound retries, surface a truthful user-visible error when the provider rejects a retired model, and make background jobs reach an auditable terminal state instead of retrying forever.
Step 13. Remove stale model IDs only after observability shows no remaining callers. Track model name, endpoint, status code, latency and terminal task outcome without logging API keys, sensitive prompts or private customer data.
Step 14. Recheck OpenAI's live deprecations and migration documentation before final cutover. If OpenAI changes the shutdown schedule or replacement guidance, update the same canonical rather than creating a second date-variant guide.
Need the actual code? Go to GenesisCodeDoctor.com to search the Code Store or request code for the exact platform, error, and repair you are working on.
1. Does any production or operational path still reference one of the four September 28 model IDs? If no, preserve the audit result and remove stale configuration only after confirming there are no indirect callers.
2. If yes, which API contract does it use? Legacy Completions flows need request/output review; modern Chat Completions or Responses callers still need behavioral regression testing.
3. Can the flow move to gpt-5.6-terra with acceptable correctness, parsing, latency and cost under representative tests? If no, keep the feature gated and redesign the integration rather than forcing traffic through an unvalidated path.
4. Does the flow have a truthful terminal failure state and bounded retry behavior for retirement errors? If no, fix reliability before the cutoff.
5. After migration, do logs and metrics show zero calls to the retiring IDs? If not, continue inventory work before declaring the migration complete.
REPAIR FLOW
A visual path from symptom to verified production.
Observe→
Protect→
Isolate→
Repair→
Test→
Publish→
Verify live
BEFORE YOU PASTE CODE
Protect the working site first.
Keep OpenAI credentials server-side and least-privileged; never expose them in browser bundles, logs or migration examples.
Use representative synthetic or properly sanitized fixtures for regression testing when production prompts contain private or regulated information.
Gate the replacement with typecheck, automated tests, parser validation and a reversible deployment before broad traffic migration.
Use bounded retries and idempotent job handling so a provider-side retirement error cannot create duplicate work or runaway queues.
STOP AND GET HELP WHEN
Do not turn a repair into a larger outage.
Do not assume gpt-5.6-terra is a byte-for-byte or behavior-for-behavior replacement merely because OpenAI recommends it for the retiring models.
Do not wait until September 28 to discover hidden callers in cron jobs, workers, notebooks, internal tools or old deployment configuration.
Do not keep infinite retries against a model that is returning a retirement or unavailable error.
Do not loosen authentication, authorization, validation or secret-handling controls to make a migration test pass.
Do not log API keys, full private prompts, customer records or proprietary model inputs while comparing old and replacement flows.
Do not claim a precise September 28 shutdown minute that OpenAI's cited deprecation table does not publish.
HOW GENESIS HANDLES IT
Diagnose the exact failure before choosing a repair.
Genesis separates the visible symptom from the underlying technical cause. Run the supported diagnostic first, review the evidence, and then use a matching repair only when the failure is actually verified.
Platform scope
OpenAI API · gpt-3.5-turbo-instruct · gpt-3.5-turbo-1106 · babbage-002 · davinci-002 · GPT-5.6 Terra · Responses API
Category
API deprecation · Model migration · Production readiness
Last updated
2026-09-24
REPAIR PROFILE
Know the complexity before you edit.
Difficulty
Intermediate
Change risk
High
These labels describe implementation complexity and blast radius, not a guaranteed repair time.
AUTHORITATIVE SOURCES
Verify time-sensitive platform details at the source.
Which OpenAI models shut down on September 28, 2026?
OpenAI currently lists gpt-3.5-turbo-instruct, gpt-3.5-turbo-1106, babbage-002 and davinci-002 for shutdown on September 28, 2026.
What replacement does OpenAI recommend?
OpenAI's current deprecations table recommends gpt-5.6-terra for all four retiring model entries.
Can I just change the model name to gpt-5.6-terra?
Not safely by assumption. Verify the API contract, prompt behavior, streaming/output parsing, task correctness, latency, token usage and downstream business rules before expanding traffic.
Do I have to migrate to the Responses API at the same time?
OpenAI says Chat Completions remains supported and recommends migrating application flows toward the Responses API over time. Use an incremental migration when changing both model and API contract at once would make rollback or diagnosis harder.
What should I monitor during cutover?
Track the actual model and endpoint used, provider status/error class, latency, token usage, parser success, retry count and terminal task outcome, while keeping sensitive prompts and credentials out of logs.
Start with a free diagnostic. If Genesis verifies a problem and a compatible treatment exists, continue to the matching Code Store product or repair path. If you cannot find the exact code you need, request it at GenesisCodeDoctor.com rather than forcing a generic snippet into the wrong platform.