Sora ended Sept 24, Veo 3.1 previews end Oct 22: one plan for both
OpenAI's Sora API ended Sept 24 and Google's Veo 3.1 preview ids end Oct 22, 28 days later. One adapter and one Sume model id can cover both moves.

Treat the two shutdowns as one migration. OpenAI's Sora API and Videos API ended on September 24, 2026, and Google's three Veo 3.1 preview model ids end on October 22, 2026. That is 28 days apart, and today (October 8) the second date is 14 days away. If your code still calls either vendor, put both behind one function and point that function at one catalog id. Sume lists gemini-omni-flash-1.1, which is the same model family Google now names as its replacement, so the swap is a model id and a base URL, not a rewrite.
The two dates side by side
Both dates come from the vendors' own deprecation tables. The OpenAI table lists the ids and the Videos API under one shutdown date and shows no replacement. The Google table lists each Veo 3.1 preview id with a named replacement.
| Vendor | What is shut down | Shutdown date | Replacement named by vendor |
|---|---|---|---|
| OpenAI | sora-2, sora-2-pro, three dated snapshots, and the Videos API | September 24, 2026 | None listed |
| veo-3.1-generate-preview, veo-3.1-fast-generate-preview, veo-3.1-lite-generate-preview | October 22, 2026 | gemini-omni-1.1-flash | |
| Gap | Sora end to Veo preview end | 28 days (6 days left in September plus 22 in October) | Not applicable |
What Sume lists for the replacement
Sume does not list a Sora model or a Veo model, so there is nothing to alias. What it lists is gemini-omni-flash-1.1, plus Seedance, Wan, Kling and MiniMax rows in the same catalog. Google's own video page now says to use Gemini Omni Flash as the default model for video generation, so the id Google tells Veo users to move to is the id you can call on Sume.
The Sume docs describe the row this way: 3 to 10 seconds per clip, 360p, 720p, 1080p or 4K, 16:9 or 9:16, native synced audio that is always on, and image and video references. Sume bills the provider list price times 1.25 for each output second.
- Duration: 3 to 10 seconds per job (the Seedance 2.5 and Wan 3.0 rows go to 30 seconds).
- Aspect ratio: 16:9 or 9:16 only.
- Audio: always on; the API rejects
generate_audio: false. - References: up to 10 images and up to 3 videos of 3 seconds each.
One adapter, two callers
The cheapest way to survive two deadlines is a single internal function such as make_clip(prompt, seconds, resolution) that returns a Sume job id. Your Sora callers and your Veo callers both call it. The function sends POST /v1/videos with a bare model id (Sume ids never carry a provider prefix), then polls GET /v1/videos/{jobId} until the status is completed or failed, then downloads from unsigned_urls[0].
Clamp the length inside the adapter. A Sora call that asked for a longer clip needs either a model whose range reaches it or several Omni jobs joined afterward. Check each Veo caller against the 3 to 10 second window before you switch it.
What to do this week
Search the repository for the five Sora ids and the three Veo preview ids, route them to the adapter, and run one real clip through the new path before October 22. Send an Idempotency-Key header on every submit so a retry returns the original job instead of creating a second paid one. Then remove the old keys and the old base URLs. The vendor pages above are the source for the dates; check them again before you act, because deprecation tables change.
Sources
Related posts
More in Developers
- Sora input_reference image: upload with uploadFile, use frame_images
OpenAI took the first-frame image as multipart input_reference. Sume wants an HTTPS URL: upload with the SDK's uploadFile, then pass it as frame_images.
- Sora jobs in flight at shutdown: reconcile, then resubmit to Sume
OpenAI's page gives the removal date but not in-flight jobs. Mark every unfinished Sora row, then resubmit its prompt to Sume with a key built from the old id.
- Measure your own render time on Sume from job event timestamps
No published Sora timing carries over. Read GET /v1/jobs/{id}/events, diff created, started and completed, and keep your own queue and render split per model.
- Sora to Sume pull request review: eight lines to check before merge
A reviewer's checklist for a Sora-to-Sume PR: duration and resolution types, status words, the 302 download, the webhook body, idempotency and removed fields.
Written by Sume