After Sora: keep the recipe, not the prompt, as your stable layer
OpenAI named no replacement for the Sora Videos API. Put house style and output rules in a Sume Format so the next model change does not rewrite your code.

If the Sora shutdown taught you anything, it is that a prompt tied to one model is the most fragile thing in a video pipeline. The better layer to keep is the recipe: house style, output contract and quality bar, stored once and reused. A Sume Format stores that recipe, so your backend sends a small input and the model underneath can change.
What actually ended
OpenAI's deprecations page lists the Videos API and five Sora model ids as deprecated, with removal on September 24, 2026, announced March 24, 2026. The replacement column names nothing. That leaves each team to choose its own successor.
| Item | Status |
|---|---|
| Videos API | Deprecated, removal September 24, 2026 |
| sora-2, sora-2-pro | Deprecated |
| sora-2-2025-10-06, sora-2-2025-12-08, sora-2-pro-2025-10-06 | Deprecated |
| Recommended replacement | None listed |
Where the prompt fails you
A prompt that reads well for one model often needs rewriting for the next: different length limits, different handling of references, different audio behavior. If each call site builds its own prompt string, every call site needs the rewrite. If the prompt lives in a single recipe, one edit fixes all callers.
What a Format holds
A Format is a saved production recipe: a house style, an output contract and a playbook for one kind of video. Your backend calls it by name with POST /v1/formats/{handle}/{slug}/runs. The recipe is set before your instruction, so you do not resend a system prompt on every call. If your instruction and the recipe disagree, the model follows your instruction (Format API).
- Style and rules live in the Format, versioned. Each receipt shows which
format.versionran. - Your per-call data lives in
input: product URL, script, host image. - You can bind a JSON Schema so the result comes back in your own shape (Structured output).
- A spend cap per run limits the cost of a bad recipe.
When a Format is the wrong layer
A Format run is an agent turn that takes minutes, not a single model call. If you only need one clip from a prompt, POST /v1/videos with a model id or sume/auto is simpler (Generate videos). Use a Format when the job has several steps, such as host takes, B-roll, voiceover and assembly, and when you want the same look every time.
Moving to a Format also does not make output identical to what Sora produced. Expect to re-judge quality on a sample set, and keep the old files as a reference.
A migration order
First move the call sites that share a style into one Format. Second, test it against ten of your old prompts. Third, set a spend cap and a webhook, then switch traffic. The next time a model is retired, you edit the recipe once and read the receipts.
Sources
Related posts
More in Formats
- Animate a photo in a Short: why Timeline stills stay static
A still in a Timeline 1.0 slot is a static hold and its motion field is ignored. To move a photo, generate a 3-second Omni image-to-video clip and cut that in.
- Python: turn a product CSV into Sume bulk Format queues
A short Python script splits a product manifest into batches of 100, builds one bulk body per batch with per-item spend caps, and keeps idempotency keys stable.
- Bulk queue concurrency 16 on Sume is a window, not a speed promise
Sume bulk Format runs accept concurrency 1 to 16. It limits how many children start at once and does not promise throughput. What 100 ad items really do.
- A Sume bulk queue item failed: read the child receipt first
A Sume queue item only says format_run_failed. Open the child run by run_id, compare spend to the cap, read output_error, then retry with previous_run_id.
Written by Sume