Sora 2 API shutdown: moving video generation calls
OpenAI shut down its Videos API and Sora 2 models on 2026-09-24. How the old fields map to Sume's POST /v1/videos, and why the model id must change.

OpenAI shut down its Videos API and the Sora 2 models, sora-2 and sora-2-pro among them, on September 24, 2026, and its deprecations page lists no replacement. To move those calls to Sume, send your prompt to POST https://api.sume.com/v1/videos with a model id from Sume's video catalog or sume/auto. Sume has no Sora model, so the model id always changes.
This is a dated note. The shutdown facts come from OpenAI's Deprecations page and the old field names from its Videos API reference, both read on 2026-09-27. The Sume side comes from the Video Generation docs, the OpenAPI schema, and Sume's catalog code. Sume's own retiring Video 1.0 route is covered in moving to sume/auto.
What did OpenAI shut down, and when?
OpenAI notified developers on March 24, 2026. Its Videos API reference is now kept for historical reference only and says no one-to-one replacement API is available.
| Shutdown date | Model or system | Replacement listed |
|---|---|---|
| 2026-09-24 | Videos API | None |
| 2026-09-24 | sora-2 | None |
| 2026-09-24 | sora-2-pro | None |
| 2026-09-24 | sora-2-2025-10-06 | None |
| 2026-09-24 | sora-2-2025-12-08 | None |
| 2026-09-24 | sora-2-pro-2025-10-06 | None |
Does Sume have a Sora model?
No. The ids Sume's video catalog lists are seedance-2.5, seedance-2-mini, seedance-2, seedance-2-fast, kling-3, wan-3.0, grok-imagine-video-1.5, minimax-h3, minimax-h3-max, gemini-omni-flash-1.1; none is a Sora model. You can also send sume/auto and let Sume pick: the response echoes sume/auto, and Sume never discloses which family ran.
Each model publishes its own supported_durations, supported_resolutions, and supported_aspect_ratios on GET /v1/videos/models, so check the model before you carry old settings over. Listing video models walks through those fields.
How do the old Videos API fields map to POST /v1/videos?
Sume does not take the old request body as is. Its OpenAPI schema for POST /v1/videos has no seconds or input_reference field and refuses fields it does not list, so rename each field:
| OpenAI Videos API | Sume POST /v1/videos | What to change |
|---|---|---|
POST /videos | POST https://api.sume.com/v1/videos | Send a JSON body with Content-Type: application/json. |
model, such as sora-2 | model | Required: a catalog id or sume/auto. |
prompt | prompt | Same field. |
seconds, a string such as "8" | duration | An integer number of seconds from the model's supported_durations. |
size, such as 720x1280 | resolution and aspect_ratio, such as 720p and 9:16 | Every v1 model reports supported_sizes: null, so size returns 400 unsupported_parameter. |
input_reference (image_url or file_id) | frame_images or input_references | A first_frame entry opens the clip; input_references guide it. Entries carry a public HTTPS URL, so a file id or data URL must become a hosted image first. |
GET /videos/{video_id} | GET /v1/videos/{id} | Statuses are pending (the old queued), in_progress, completed, failed, and cancelled. |
GET /videos/{video_id}/content | GET /v1/videos/{id}/content?index=0 | Send your API key. unsigned_urls[0] on a completed poll points here. |
What does the migrated request look like?
This is the docs' sume/auto request with an idempotency key added. Swap in a catalog id to pin a model.
curl -X POST "https://api.sume.com/v1/videos" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: clip-001" \
-d '{
"model": "sume/auto",
"prompt": "A vertical UGC-style product clip on a desk, natural light",
"aspect_ratio": "9:16",
"duration": 5
}'What else changes when I switch?
The request shape is not the only difference. Plan for these on day one:
- Auth is
Authorization: Bearer $SUME_API_KEY, sent from your server. - Send an
Idempotency-Keyso a retried submit returns the original job instead of a second one. - For push instead of polling, pass an HTTPS
callback_url. Sume posts its own job webhook envelope, signed withx-sume-webhook-signature. - The same job is also visible at
GET /v1/jobs/{id}/statusandGET /v1/jobs/{id}/result. - Billing draws on your workspace USD balance, and
usage.coston the poll response is the billable amount. Each model'spricing_skusare onGET /v1/videos/models.
Sources
Related posts
More in Models
- Image generation API with reference images: POST /v1/images
Send a prompt plus public HTTPS reference images to Sume's POST /v1/images. Pin a catalog model or send sume/auto; the catalog lists each model's limits.
- Music generation API: the Sume Music Router with Lyria 3.5
Sume's Music Router turns a text prompt into a track via POST /v1/music-router/generate. sume/music-auto picks the engine, Lyria 3.5 today.
- TikTok trending video search API: ranked metadata for research
Sume's POST /v1/trending-videos/search returns ranked public TikTok video metadata for a brand, product, creator, or keyword. It does not download videos.
- 4K AI video generation API: resolutions by model, 360p to 4K
For 4K on Sume, pin gemini-omni-flash-1.1 with resolution 4K; minimax-h3 upscales to 2K or 4K. Resolutions for every video model, and the price effect.
Written by Sume