Sora API ended Sept 24: replacements for 15-second clips on Sume
If your Sora code made 15-second clips, Sume has Kling 3, MiniMax H3 and Seedance 2.5 or Wan 3.0 at that length, with prices per clip and one request shape.

Four Sume models make a 15-second clip: kling-3 (4 to 15 s), minimax-h3 (5 to 15 s), seedance-2.5 (4 to 30 s) and wan-3.0 (2 to 30 s). Magic Hour's tracker, read 2026-10-06, records that the OpenAI Sora API ended on 2026-09-24, so any code that asked Sora for 15 seconds needs a new target. The cheapest 15-second 720p-class clip on Sume is Wan 3.0 at $1.88; the dearest of the four is Seedance 2.5 at 1080p.
The shutdown date is on the tracker. Limits and ids are in the Video Router docs.
15 seconds on each model
Billed prices are the provider list price times 1.25. Seedance 2.5 is priced by tokens, so its figure uses the 16:9 frame size.
| Model | Setting | 15 s price | Sound |
|---|---|---|---|
wan-3.0 | 720p | $1.88 | yes |
wan-3.0 | 1080p | $3.75 | yes |
kling-3 | 1080p, sound off | $2.10 | no |
kling-3 | 1080p, sound on | $3.15 | yes |
minimax-h3 | 768p | $1.13 | stereo |
seedance-2.5 | 720p | $8.67 | yes |
seedance-2.5 | 1080p | $21.33 | yes |
Porting the call
The Sume request is the same for every model: model, prompt, duration, resolution and aspect_ratio in a JSON body, a 202 with a job id, then polling. Only model changes. A value outside a model's catalog gets a 400 unsupported_capability, so a wrong resolution fails fast instead of rendering something you did not ask for. Fields Sume does not take, such as seed or size, get a 400 unsupported_parameter, which is worth knowing if your Sora wrapper passed them.
import os, time, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
r = requests.post("https://api.sume.com/v1/videos", headers=H, timeout=60, json={
"model": "kling-3", "prompt": "A lighthouse in a storm, slow push-in",
"duration": 15, "resolution": "1080p", "aspect_ratio": "16:9"})
r.raise_for_status()
url = r.json()["polling_url"]
while True:
j = requests.get(url, headers=H, timeout=30).json()
if j["status"] in ("completed", "failed", "canceled"):
break
time.sleep(5)
print(j["status"], j.get("unsigned_urls"))Which one for which Sora job
Pick Kling 3 when the old clips were cinematic single takes and you want a sound toggle. Pick MiniMax H3 when you want stereo sound built in and a plain 5 to 15 second range. Pick Wan 3.0 for volume, since its rate is the lowest of the four in the table. Pick Seedance 2.5 when the clip needs first and last frames or a reference video. If your Sora clips were shorter, the by-length mapping covers the 3 to 10 second range with Omni Flash.
Before you flip the switch, grep your code for the old ids. The retired-id scan does that in Python.
What changes in the response
The job is asynchronous. You get 202 with an id and a polling URL, and the finished file comes from unsigned_urls[0]. If your Sora wrapper expected a synchronous return, add a poll loop, or register a webhook and let Sume call you on job.completed, job.failed and job.canceled.
Cost control changes too. The price is reserved at submit and, where applicable, released or refunded if the job fails, so check your usage before assuming a retry loop is free. Add an Idempotency-Key header and a retry on a network timeout returns the same job instead of making a second one. That is worth doing before you point a queue of old prompts at the new endpoint.
One more check: Sora clips often came with sound. Wan 3.0, MiniMax H3 and Seedance 2.5 include audio, and Kling 3 has a toggle that adds 50 percent to the rate, so confirm the sound setting for every row of your old prompt list before you rerun.
A migration order that limits risk
Start with ten of your most common prompts and run them on two candidate models at the length you used most. Compare, pick, and pin the model id in config rather than in code. Then replay the rest of the list in batches of twenty or so, watching for 400 errors that name a field your old wrapper sent. Each one is a one-line fix. Finally, delete the retired client, so no one reaches for it by habit.
Sources
Related posts
More in Models
- New AI video models in 2026: which ones have a Sume model id
Seedance 2.5, MiniMax H3, Kling 3.0, Wan 3.0, LTX-2.5, Veo 3.1: a table of what a video tracker lists against the ids in Sume's Video Router catalog.
- Kling 3 as your Sora replacement on Sume: four limits to check
Kling VIDEO 3.0 is 15 s with native audio per a video tracker. On Sume kling-3 takes 4-15 s at 720p or 1080p and no reference URLs. Four checks before a port.
- Try Seedance 2.5 for $1.08: a 4-second 480p first request on Sume
The cheapest way to try Seedance 2.5 on Sume is a 4-second 480p clip at $1.08. The request, the limits, and what 720p and 1080p would cost instead.
- Try Wan 3.0 for 25 cents: a 2-second 720p clip on Sume
Wan 3.0 takes clips as short as 2 seconds, half Seedance's 4-second minimum. At 720p that is $0.25. The request, the 30-second limit, and 480p and 1080p prices.
Written by Sume