Sora download URL expired after 1 hour: what Sume returns
Sora download URLs were valid for at most 1 hour. Sume returns unsigned_urls on completion and serves the file from GET /v1/videos/{jobId}/content.

On Sume, read unsigned_urls from a completed /v1/videos job, or call GET /v1/videos/{jobId}/content with your API key and save the file. The Sora rule to copy the file out within the hour is still a sound habit, but Sume's docs page does not state an expiry for these URLs.
Sora's guide says download URLs "are valid for a maximum of 1 hour after generation" and to copy the file to your own storage promptly; it also says the Videos API shut down on September 24, 2026. Sume facts are from Video generation, read 2026-09-30.
How does Sume deliver a finished video?
The workflow is submit, poll GET /v1/videos/{jobId} until completed, then download from the content URL. Once the status is completed, the unsigned_urls array holds download URLs. The content endpoint takes an index query parameter that defaults to 0, for models that return several outputs.
curl "https://api.sume.com/v1/videos/$JOB_ID/content?index=0" \
-H "Authorization: Bearer $SUME_API_KEY" \
--output video.mp4Does the one-hour rule carry over?
| Question | Sora (guide) | Sume (docs) |
|---|---|---|
| Where is the file | Content download on the job | unsigned_urls or /content |
| Stated lifetime | 1 hour maximum | Not stated on this page |
| Advice | Copy to your own storage | Store the file if your product needs it |
| Stills from a clip | Thumbnail variant | Durable artf_ images via video frames |
What should my pipeline do?
Download on the completed webhook or poll result, write the file to your own storage, and keep your own record of the job id. For expiry rules on other Sume outputs, see do Sume video URLs expire.
What about preview images?
Video frames returns "durable artf_ images" from a clip you import, so previews do not depend on the clip's download link. The steps are in the Sora thumbnail replacement post.
Sources
Related posts
More in Developers
- Sora input image must match size: the Sume frame_images rule
Sora's input image was the first frame and had to match the video size. Sume uses frame_images plus aspect_ratio, and rejects size on v1 models.
- Sora video.completed webhook to Sume job.completed
Sora emitted video.completed and video.failed. Sume sends job.completed, job.failed and job.canceled with an x-sume-webhook-signature header. Map the handler.
- Sora Videos API replacement: seconds and size on Sume
OpenAI removed the Videos API on 2026-09-24. Map its seconds and size fields to Sume's duration, resolution and aspect_ratio; size returns 400 on Sume.
- Speech to text custom vocabulary: Sume STT takes a language hint only
Gemini 3.5 Transcribe biases up to 1,000 custom terms. Sume STT has no vocabulary field, only a language_code hint, so fix names after transcription.
Written by Sume