Sora files lived 1 hour: storing Sume job results
OpenAI's Sora 2 and Videos API shut down Sept 24, 2026, and videos were downloadable for 1 hour. Download and store Sume job results promptly.

OpenAI's docs say Sora 2 and the Videos API shut down on Sept 24, 2026, that both models produced 16 and 20 second generations, that videos could be downloaded for up to 1 hour after completion, and that no direct replacement API exists. Sume results are fetched through the job's unsigned_urls or the content endpoint; the docs state no retention period, so copy the file to your own storage as soon as the job completes.
What the Sora rules teach
A one-hour download window forces a workflow where the file is copied right after completion. Any pipeline that stored only the provider's URL would have lost the asset an hour later. The lesson applies to every provider: the job result is a pointer, and you own the copy.
Downloading on Sume
Poll GET /v1/videos/{jobId} until status is completed, then read unsigned_urls. You can also call the content endpoint directly:
curl "https://api.sume.com/v1/videos/{jobId}/content?index=0" \
-H "Authorization: Bearer $SUME_API_KEY" \
--output video.mp4Where results live
The Sume docs show a successful poll response with unsigned_urls and a usage.cost field. For jobs read through /v1/jobs/{id}/result, artifacts carry a Sume-hosted URL on media.sume.com. Raw provider URLs are not public outputs, so you never depend on a provider link.
| Route | Where the file is |
|---|---|
GET /v1/videos/{jobId} | unsigned_urls[] |
GET /v1/videos/{jobId}/content | The video stream, index defaults to 0 |
GET /v1/jobs/{id}/result | result.artifacts[].url on media.sume.com |
A storage routine
Treat the file as yours the moment it exists:
- On completion, download the file and write it to your own bucket
- Record the job id next to the stored object key
- Do not resubmit a paid job to recover a file you could have stored
- Keep the model id and prompt with the file so you can reproduce a variant
Sources
Related posts
More in Developers
- Sort your MCP tool allowlist: stable order keeps the prompt cache warm
MCP 2026-07-28 asks servers for ttlMs, cacheScope and a deterministic tool order. On the client, sort your media tool allowlist the same way. Python snippet.
- STT words array has spacing tokens: filter type word before you count
Word counts and captions go wrong because the words array can include spacing items. Filter by type, keep timings, and compute speaking rate correctly.
- FID retired Nov 1: keep a Sume generate button responsive
Vercel Speed Insights drops First Input Delay on November 1. A Sume generate button stays responsive if it submits async, gets a 202 and polls via your server.
- Split a narration script by model character limit: Python
ElevenLabs lists a 40,000 character limit for Flash v2.5 and 10,000 for v4 and v4 Turbo. A Python splitter that cuts on sentences, with a concat step on Sume.
Written by Sume