Sora's GET /videos and DELETE /videos/{id}: what Sume offers instead

Sora had list and delete routes. Sume lists your key's own jobs with GET /v1/jobs and documents no public delete, so plan retention in your own storage.

4 min readSume
All posts

Sora's API listed videos with GET /videos and removed one with DELETE /videos/{video_id}. On Sume the list half exists as GET /v1/jobs, which returns the jobs your key's member created. There is no public job-delete route in the docs, so clean-up becomes a storage decision in your own system, not an API call.

Route by route

Check your application for the three places this matters: an admin page that lists a user's videos, a nightly clean-up job, and a user-facing delete button. Each one called an OpenAI route that no longer exists, so each needs a local data model before it needs any Sume call.

Sora video routes against Sume (read 2026-10-07)
Sora step (OpenAI guide)Sume equivalentNote
Create: POST /videosPOST /v1/videosReturns 202 with id, polling_url, status, model
List: GET /videosGET /v1/jobsA key reads only its own member's jobs
Poll a jobGET /v1/videos/{id}Statuses include cancelled
DownloadGET /v1/videos/{id}/content?index=0Redirects to the artifact
Delete: DELETE /videos/{video_id}None documentedDelete in your own storage
RemixPOST /v1/videos with video_urlgemini-omni-flash-1.1 edit mode

Why you would have deleted

OpenAI's guide, read 2026-10-07, also says download URLs were valid for at most one hour. With the Videos API shut down on September 24, 2026, those links are gone, which is the practical reason to keep your own copy of every file you still need.

Listing

Page through GET /v1/jobs when you need an inventory: which jobs ran, which failed, what they cost. The pagination post shows the cursor loop. Treat the list as a reconciliation tool against your own table of job ids, not as your system of record.

Delete on your side

If your product had a delete button, keep it, but point it at your own row and file. A reasonable shape is a soft delete flag in your database, removal of your stored mp4, and no call to Sume at all.

For inventory, filter your own table by job id first and call GET /v1/jobs only to find jobs you never recorded, for example after a crash between submit and save. The cursor loop in the linked post pages newest first, which suits that reconciliation job.

  • Store the job id, model and cost beside each file.
  • Mark rows deleted instead of dropping them, so billing reconciles.
  • Never expose the API key to the browser; delete through your server.

Where to check

The submit, poll and content routes are in the video generation docs, and the list route is described under jobs and results. If a documented delete appears later, those pages will say so before this post does.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume