Back to blog
Video17 min read

Sora 2 Shuts Down September 24: Move Your Prompts Now

OpenAI removes sora-2, sora-2-pro and the Videos API on September 24, 2026. Here is the prompt-syntax conversion to Veo 3.1, Kling 3.0 and Runway Gen-4.5, plus what does not carry over.

NH
Nafiul Hasan
Founder, Prompt Architects

TL;DR: OpenAI removes the Videos API and every Sora 2 model ID on September 24, 2026, notified March 24, 2026. The consumer Sora app is separate: it shut down April 26, 2026. No OpenAI successor is named. Your targets are Veo 3.1, Kling 3.0 or Runway Gen-4.5, and the prompt syntax does not transfer cleanly.

When exactly does Sora 2 shut down?

September 24, 2026. That is the date OpenAI's own deprecations page gives for removing the Videos API and the Sora 2 model family from the API.

The page states it plainly: "On March 24th, 2026, we notified developers using the Videos API and Sora 2 video generation model aliases and snapshots of their deprecation and removal from the API on September 24, 2026." Verified at developers.openai.com/api/docs/deprecations on August 26, 2026.

That gives you a six-month notice period, of which roughly four weeks remain at the time of writing.

One detail on that page matters more than the date. OpenAI's deprecation table has a recommended-replacement column, and for most entries it names a successor. For the Sora 2 and Videos API row, that column is empty. There is no OpenAI video model to move to. Every migration path from here leads to a different vendor, which is why this is a bigger job than a normal model bump.

Is the Sora app shutting down too, or only the API?

Only the API is affected by the September 24 date. The consumer Sora app already shut down, on April 26, 2026.

This is the single most confused point in circulation, and getting it backwards will send you chasing a deadline that expired four months ago. OpenAI ran a two-stage sunset:

StageWhat it coversDate
Consumer productSora web and app experiencesApril 26, 2026
Developer productVideos API + all sora-2 model IDsSeptember 24, 2026

OpenAI's help center article on the discontinuation states both: "The Sora web and app experiences were discontinued on April 26, 2026" and "The Sora API will be discontinued on September 24, 2026." Retrieved August 26, 2026 from help.openai.com/en/articles/20001152-what-to-know-about-the-sora-discontinuation, via a reader proxy, since that host returns 403 to direct fetches.

So the audience for this post is narrow and specific: developers with a live Videos API integration. If you were a Sora app user, your migration happened in April, and your only remaining task is content export. The help center points to sora.chatgpt.com/sunset for that, and says data associated with your use of Sora will be permanently deleted after discontinuation and any export window closes. It does not commit to a hard export deadline, only that you would be emailed if a final window opens.

Which model IDs stop working on September 24?

All of them. The deprecations page lists five model strings plus the API surface itself:

sora-2
sora-2-pro
sora-2-2025-10-06
sora-2-2025-12-08
sora-2-pro-2025-10-06
Videos API  (POST /v1/videos)

Note that the dated snapshots go too. Pinning to sora-2-2025-12-08 instead of the sora-2 alias buys you nothing here, which is worth knowing if your instinct on a deprecation notice is normally to pin harder.

Grep your codebase for all five strings and for /v1/videos before you assume you are clear. A Sora call is easy to lose track of because it usually sits in a background job rather than a request path, so it will not show up in your error rate until a scheduled render fails quietly.

# Run at the repo root. Catches aliases, snapshots, and the endpoint.
grep -rEn "sora-2(-pro)?(-[0-9]{4}-[0-9]{2}-[0-9]{2})?|/v1/videos|videos\.create" \
  --include="*.{ts,tsx,js,jsx,py,rb,go,java,php,json,yaml,yml,env*}" .

Widen that to your infrastructure too. Model IDs get set as environment variables far more often than they get hardcoded, so a clean grep of application code is not a clean bill of health. Check your deployment config, your secrets manager and any prompt records stored in a database. The failure mode after September 24 is a job that returns an error your retry logic swallows, so audit before the date rather than debugging after it.

What replaces Sora 2?

Since OpenAI names nothing, the field splits three ways. Here is what each vendor documents, checked on August 26, 2026.

Veo 3.1Kling 3.0Runway Gen-4.5
API model stringveo-3.1-generate-previewKling v3gen4.5
StatusPreviewAvailable via API partnersAvailable
Native audioYes, "video with native audio"Yes, generate_audio defaults to trueNot documented for Gen-4.5
Max durationNot confirmed at a primary source15 seconds10 seconds
Negative prompt fieldNo, phrase exclusions positivelyYes, negative_promptNot documented
Text input limit1,024 tokensNot publishedNot published

Two things on that table deserve expanding.

Veo 3.1 is no longer Google's headline recommendation. The Gemini API video documentation now says "Use Gemini Omni Flash as your default model for video generation," and positions Veo 3.1 for cases where "specific capabilities like scene extension, last-frame control, or integration with legacy pipelines are required." Both are listed as Preview on the Gemini API models page. If you are building fresh rather than porting, read that recommendation carefully before defaulting to Veo out of familiarity.

The 1,024-token cap on Veo 3.1 is the constraint people trip over. Google's model page for veo-3.1-generate-preview gives the input token limit as "1,024 tokens" for text. A verbose Sora prompt with a full cinematography block, six action beats and three lines of dialogue can run past that. This is a real migration failure mode, not a theoretical one. Our Veo 3 prompt structure guide covers how to compress without losing the shot.

There is also a pragmatic shortcut worth knowing: Runway's API serves veo3.1, veo3.1_fast and gemini_omni_flash alongside its own gen4.5. If you would rather change one integration than three, that is a way to reach several of these models through a single endpoint.

How do you convert a Sora 2 prompt to Veo 3.1, Kling 3.0 or Runway Gen-4.5?

The prose survives. The structure does not. Sora 2's recommended prompt used labelled blocks. None of the three targets parse those labels, and two of them want the same information as flowing prose instead.

OpenAI's own Sora 2 prompting guide recommends this shape:

[Prose scene description in plain language. Describe characters, costumes,
scenery, weather and other details.]

Cinematography:
Camera shot: [framing and angle, e.g. wide establishing shot, eye level]
Mood: [overall tone, e.g. cinematic and tense]

Actions:
- [Action 1: a clear, specific beat or gesture]
- [Action 2: another distinct beat within the clip]

Dialogue:
- Detective: "Your line here"

Here is where each part lands.

Sora 2 elementVeo 3.1Kling 3.0Runway Gen-4.5
Prose scene descriptionBecomes the [Subject] + [Context] slots of Google's formulaStays as prose, anchor the subject in the first clauseStays as prose in promptText
Cinematography: / Camera shot:Becomes the leading [Cinematography] slot, inline, not a headingWritten as cinematic language inside the shot descriptionWritten inline, described as motion plus visual elements
Mood:Folds into [Style & Ambiance] at the endFolds into the shot descriptionFolds into the prose
Actions: bullet listFlattens into the [Action] slot as one continuous descriptionMaps to multi_prompt, one entry per shotFlattens into the prose, sequenced by order
Dialogue: blockQuotation marks inline: A woman says, "We have to leave now."Character labels plus tone descriptor, bound to an actionNo equivalent documented
Implicit ambient audioExplicit SFX: and Ambient noise: linesCovered by generate_audio, on by defaultNo equivalent documented
Negation ("no cars")Rewrite positively as an empty sceneMove to the negative_prompt fieldNo equivalent documented
size: "1920x1080"Aspect ratio config, not pixel dimensionsaspect_ratio: 16:9, 9:16, 1:1Ratio config, output is 720p at 24 or 25 fps
seconds: "20"Not confirmed at a primary sourceduration, 3 to 15, default 52 to 10 seconds

Google's recommended formula, from its Veo 3.1 prompting guide, is [Cinematography] + [Subject] + [Action] + [Context] + [Style & Ambiance]. That is a single sentence, not a document. On dialogue it says: "Use quotation marks for specific speech (e.g., A woman says, “We have to leave now.”)." On exclusions it says to "describe what you wish to exclude," giving the example of specifying "a desolate landscape with no buildings or roads" instead of "no man-made structures."

Kling 3.0 goes the other way and rewards more structure than Sora did. Its prompting guidance is explicit about it: "Think in Shots, Not Clips." The multi_prompt array takes one entry per shot with a total duration ceiling of fifteen seconds, so a Sora action list that was three beats inside one clip becomes three addressable shots. Our Kling AI prompt format guide covers the six-part framework in more depth.

Runway Gen-4.5 is the plainest of the three. Its guidance for text-to-video is to "describe both the visual elements and motion of the scene," and for image-to-video to "focus on describing the motion of the scene." Runway says the model "excels at understanding and executing complex, sequenced instructions," which is the closest thing to a match for Sora's action list.

What does not carry over?

Four things, ranked by how badly they will bite.

1. Dialogue, if you land on Runway. Sora 2 generated speech natively. Veo 3.1 and Kling 3.0 both generate audio, so dialogue survives a move to either. Runway does not document native audio or dialogue for Gen-4.5 anywhere in its Gen-4.5 help section, checked August 26, 2026. Multi-character dialogue appears in Runway's docs under Act-Two, a separate Gen-4 tool, not under Gen-4.5. If your Sora prompts had a Dialogue: block, Runway is the wrong target unless you are willing to add a separate audio step. We covered the mechanics of spoken lines in dialogue prompting for Veo 3.1.

2. Clip length, if you were using 16 or 20 seconds. Sora's seconds parameter accepted "8", "16" and "20". Kling 3.0 tops out at 15 seconds. Runway Gen-4.5 tops out at 10. Any Sora prompt written to fill twenty seconds has to be re-cut, not just re-worded, and a prompt that paced its beats for twenty seconds will feel rushed at ten.

3. Prompt length, if you land on Veo 3.1. The 1,024-token text limit is not generous for a prompt that was written as a document. Cut the labels first, since those are pure overhead once the structure is gone.

4. Non-English dialogue on Kling. Kling 3.0's audio generation is documented as supporting "Chinese and English voice output. Other languages are automatically translated to English." If your Sora prompts had spoken lines in Spanish or Japanese, that is silent behaviour change rather than an error you will see in a log.

A worked migration: one Sora prompt, three rewrites

Here is a real Sora-shaped prompt and what it becomes. Start with the original:

A detective steps out of a rain-soaked car onto a neon-lit street in a
Korean night market. Steam rises from food stalls. Her coat is soaked.

Cinematography:
Camera shot: medium tracking shot, eye level, slow push in
Mood: tense and cinematic

Actions:
- She scans the crowd
- She pulls her collar up against the rain
- She spots something off-frame and stops walking

Dialogue:
- Detective: "He was here. Ten minutes ago."

Veo 3.1. One flowing sentence in Google's five-part order, with dialogue in quotation marks and audio called out explicitly:

Medium tracking shot at eye level with a slow push in: a soaked detective
steps out of a rain-drenched car and scans the crowd on a neon-lit Korean
night market street, pulling her collar up against the rain before stopping
suddenly at something off-frame. Steam rises from food stalls around her.
Tense, cinematic, high-contrast neon reflections on wet asphalt.
She says, "He was here. Ten minutes ago."
SFX: rain on metal awnings, distant sizzling from a food stall.
Ambient noise: low crowd murmur.

Kling 3.0. Three shots instead of one, staying inside the fifteen-second ceiling, with exclusions moved into the dedicated field:

{
  "multi_prompt": [
    { "prompt": "Medium tracking shot, eye level. A soaked detective in a dark coat steps out of a rain-drenched car onto a neon-lit Korean night market street. Steam rises from food stalls." },
    { "prompt": "Slow push in on the same detective as she scans the crowd and pulls her collar up against the rain. Tense pacing, neon reflections on wet asphalt." },
    { "prompt": "She stops walking, eyes fixed off-frame. Detective, low and controlled: 'He was here. Ten minutes ago.'" }
  ],
  "duration": "15",
  "aspect_ratio": "16:9",
  "generate_audio": true,
  "negative_prompt": "blur, distort, low quality, daylight, empty street"
}

Runway Gen-4.5. Prose with motion foregrounded, re-cut for ten seconds, dialogue dropped because there is no documented path for it:

Medium tracking shot at eye level, slow push in. A detective in a soaked
dark coat steps out of a rain-drenched car onto a neon-lit Korean night
market street, steam rising from food stalls behind her. She scans the
crowd, pulls her collar up against the rain, then stops abruptly as
something off-frame catches her eye. Tense and cinematic, high-contrast
neon reflecting on wet asphalt, handheld weight to the camera.

Notice what actually changed. The nouns and the mood words are identical in all three. What moved is the scaffolding: where the camera instruction sits, whether beats are bullets or clauses or separate shots, and where exclusions live. That is the whole migration, repeated once per prompt in your library.

If you keep your video prompts in a structured format rather than as loose text, this becomes a find-and-replace on the wrapper rather than a rewrite of the content. That is the case for treating a prompt as data, which we made at length in JSON video prompt templates.

What does this shutdown tell you about AI video generally?

That the model layer is the least stable part of your stack, and you should stop writing prompts as though it is permanent.

Look at the pattern in the dates above. Sora 2 launched, ran, and was removed inside a window short enough that plenty of teams never finished their first production integration with it. OpenAI gave six months of notice, which is generous by the standards of this category, and still named no successor. Meanwhile Google's own documentation moved Veo 3.1 out of the default recommendation slot in favour of Gemini Omni Flash, and both are labelled Preview. Runway's model list currently carries more than a dozen video models from four different vendors.

None of that is a criticism. It is what a category looks like while it is still being figured out. But it does mean a specific thing for how you work: the durable asset is your prompt, not your integration. The scene description, the shot vocabulary, the mood language and the action beats in that detective example are worth keeping for years. The size parameter, the endpoint path and the block headings around them were worth exactly eleven months.

Teams that got hurt by this shutdown are mostly teams whose prompts existed only as string literals inside the API call that is about to stop working. Teams that will barely notice are the ones who kept the creative intent in one place and the vendor plumbing in another. That separation costs almost nothing to set up and it is the difference between an afternoon and a sprint the next time a video model gets a shutdown date.

What should you do before September 24?

A short list, in order.

  1. Grep for the five model strings and /v1/videos. Include scheduled jobs, queue workers and anything in a cron. Sora calls hide in background code.
  2. Export anything stored on OpenAI's side. No published deadline means no safety margin.
  3. Pick a target based on audio, not on brand. Dialogue in your prompts sends you to Veo 3.1 or Kling 3.0. No dialogue opens up Runway Gen-4.5.
  4. Re-cut for the new duration ceiling before you re-word. Pacing is harder to fix than phrasing.
  5. Convert one prompt end to end and render it before converting fifty. The failure modes above show up on the first render, not on the fiftieth.
  6. Re-check the deprecations page the week before you cut over.

The honest framing: this is a four-week job if your video prompts live in scattered files, and an afternoon if they live somewhere structured. If you want the wider comparison of which model to actually pick, Veo 3 vs Sora vs Kling walks through the tradeoffs, and how to direct AI video like a filmmaker covers the shot-language vocabulary that all of these models share.

Prompt Architects will not generate the video for you. We build the prompt: structure it, store it, and let you re-target it when a vendor pulls the rug. Our video prompt tooling and Prompt Library are where a migration like this stops being a scavenger hunt through old files. Current pricing is on the pricing page, including a free tier.

Free Chrome Extension

Stop rewriting prompts. Start shipping.

Works with ChatGPT, Claude, Gemini, Grok, Midjourney, Ideogram, Veo3 & Kling. 5.0★ on the Chrome Web Store.

Create An Account

Frequently asked questions

Free Chrome Extension

Stop rewriting prompts. Start shipping.

Works with ChatGPT, Claude, Gemini, Grok, Midjourney, Ideogram, Veo3 & Kling. 5.0★ on the Chrome Web Store.

Create An Account