Sora video ids in your database after the shutdown: what to keep
OpenAI's Videos API shut down 2026-09-24. Old video_ids no longer resolve, so store your own file URL and the model used. Schema fields included.

After 2026-09-24, a stored Sora video id is a label, not a handle: the Videos API it pointed to is gone, per OpenAI's deprecations page (read 2026-10-03). Any file you did not download is something you cannot fetch by that id. Keep the id as history, and make the new table point at files you hold.
Columns for the next vendor
| Column | Why |
|---|---|
| provider and model | A row must say which model made it, so a retired id explains itself |
| job_id | Sume's id for GET /v1/jobs/{id}/status and /result |
| artifact_url | The media.sume.com URL from the result artifacts |
| request_json | Replay the same request on a different model |
| legacy_vendor_id | Old Sora id, never used for lookups |
Where Sume's output lives
Completed Sume jobs return result artifacts with media.sume.com URLs, readable through the jobs result endpoint. The video endpoint also exposes unsigned_urls and a content download. Store the artifact URL and your own copy if your retention rules require it.
Don't use a vendor id as a primary key again. Put your own id first and the vendor's id in a nullable column.
Sources
Related posts
More in Developers
- Speech-to-text audio too large? Sume STT takes up to 10 MB, hosted
Sume's stt_create needs a public HTTPS audio URL on the Sume media host, 10 MB at most. What fits: 16 kHz mono wav versus mp3, and how to cut a long file.
- SSML in text to speech: Sume takes a plain transcript, no ssml field
Does Sume's text to speech accept SSML? The tts_create body has a plain transcript and rejects unknown keys. What to use for speed, volume, emotion and pauses.
- Sume API rate limits by plan: requests per minute for writes and reads
Sume gives every API key a per-minute budget set by plan: 120 writes on Free up to 1200 on Scale, with reads at forty times the write number. Table and headers.
- Client timeouts for Sume jobs: SDK defaults and the 30-second cap
Sume's sync wait caps at 30 seconds, waitForRun defaults to 10 minutes, subscribeFormatRun and waitForJob to 20. Pick a deadline per job type, keep the job id.
Written by Sume