Updated

Sora API alternatives for video generation after the shutdown

The Sora API shut down on September 24, 2026. Compare Runway, Kling, fal, Replicate and Sume by models, audio, price unit, API shape and limits.

8 min readSume
All posts

It depends on which model you want to move to and how you want to buy it. OpenAI shut the Sora API down on September 24, 2026 and lists no replacement, so the alternative is another video API, chosen by five things: the model family, whether you need native audio, clip length and resolution, the API shape (one vendor's own API or a multi-model host), and the price unit and limits. Runway's API, Kling's API, fal, Replicate and Sume all run video as an asynchronous job, but they serve different models and bill in different units.

If you are weighing Google's Veo 3.1, Kling 3.0, Runway Gen-4.5 or Seedance 2.0, the table below shows where each one can be called. Veo is not in Sume's catalog, and neither is Sora. The shutdown dates come from OpenAI's help center and Deprecations page, each vendor's facts from its own pages, and the Sume side from the Video Generation docs and catalog code, all read on 2026-09-29. For hosts only, see alternatives to fal.ai and Replicate for video.

What did OpenAI shut down, and when?

OpenAI's help center dates the end of the Sora web and app experiences to April 26, 2026, and the Sora API to September 24, 2026. OpenAI notified developers on March 24, 2026. Its Videos API reference now says the models and the API are no longer available, that no one-to-one replacement API is available, and that the page is kept for historical reference.

Sora 2 API pricing lists the retired model ids and what each clip cost, and Seedance vs Sora 2 sets the old specs beside the Seedance ids.

What should you check before picking a Sora API alternative?

Start from what your Sora integration relied on. Its create call took 4, 8 or 12 seconds and four sizes up to 1792x1024, so check each option on these points:

  • **Models:** does the API serve the model family you want, or only its own?
  • **Audio:** does the model generate a sound track with the video, and does that change the price?
  • **Length and resolution:** the clip lengths and resolutions each model accepts.
  • **API shape:** async submit and poll, a webhook, idempotent retries, and one request body across models or one per model.
  • **Price unit and limits:** per second, per video, per credit or per GPU second, plus concurrency caps and how long results stay downloadable.

What are the alternatives to the Sora API?

Five video APIs, in alphabetical order. Each row uses only that company's own pages; prices are examples of the unit, not a full price list.

From Runway (tiers), Kling, fal (concurrency), and Replicate (rate limits) pages and Sume's Video Generation docs and pricing code, read 2026-09-29.
OptionModelsPrice unit (example)API shapeLimits
falA gallery of hosted models; its pricing page lists Kling 3.0, Veo 3.1, Seedance 2.0 and 2.5Per second of output or per video, by model. Kling 2.5 Turbo Pro: $0.07 per secondA queue: poll for status, or pass a webhook_urlNew accounts start at 2 concurrent requests, self-serve up to 40; extra requests wait in the queue
Kling APIKling's own: Kling 3.0 Turbo, 3.0, 3.0 Omni, O1, 2.6, 2.5 TurboUnits per second. Kling 3.0 at 720p: 0.6 Units ($0.084) /s with no native audio, 0.9 Units ($0.126) /s with native audioAsync tasks; a callback_url is notified when the status changesKling 3.0: 3~15s, 720P to 4K; results are cleared after 30 days
ReplicatePublic models, including kwaivgi/kling-v3-video, google/veo-3.1, runwayml/gen-4.5 and bytedance/seedance-2.0By hardware time or by input and output, per model. One image-to-video model: $0.09 / second of output videoAsync by default with a prediction id; a webhook URL on create600 prediction creates per minute; API inputs and outputs are deleted after an hour
Runway APIgen4.5, veo3.1, seedance2 and other listed models; a Model Router can pick one for youCredits at $0.01 each. gen4.5: 12 credits per second; veo3.1 with audio: 40 credits per secondAsync: POST /v1/text_to_video and similar, then poll GET /v1/tasks/{id}Concurrency and daily caps per model by usage tier; tasks over the cap wait as THROTTLED
SumeCatalog ids such as kling-3, seedance-2.5, or sume/auto, through one POST /v1/videos contractPer second or per 1,000 video tokens, by model, at provider list × 1.25: from $0.0125 to about $1.43 per second, plus a 5.5% agent fee by defaultAsync: poll GET /v1/videos/{id}, or pass an HTTPS callback_url; Idempotency-Key on submitPer-model durations and resolutions on GET /v1/videos/models; 429 rate_limited or queue_full when full

Where can you call Veo, Kling, Runway and Seedance models?

Most Sora replacements are a model family first and a vendor second. This table shows which of the five APIs list each family on the pages read. A dash means the page read did not list it.

From Runway, Kling, fal, and Replicate pages and Sume's catalog code, read 2026-09-29.
Model familyRunway APIKling APIfalReplicateSume
Veo 3.1veo3.1, veo3.1_fast—Listedgoogle/veo-3.1Not in the catalog
Kling 3.0—Kling 3.0, 3.0 Omni, 3.0 TurboListedkwaivgi/kling-v3-videokling-3
Runway Gen-4.5gen4.5——runwayml/gen-4.5Not in the catalog
Seedance 2.xseedance2, seedance2_fast, seedance2_mini, seedance2_5—Listedbytedance/seedance-2.0seedance-2.5, seedance-2-mini, seedance-2, seedance-2-fast

Which alternative fits which job?

Start from the model and audio you need, then from how you want to be billed. Web apps and editors are a separate choice; every option here is an API.

  • **Runway's API** if you want gen4.5 or Veo 3.1 behind one key. Request bodies differ per model there, so the valid ratio and duration depend on the model you pick. Its Model Router saves a routing configuration so you don't hardcode a model id.
  • **Kling's API** if Kling models are all you need, including what its capability map lists per model: multi-shot generation, native audio, first and last frames, and 4K on Kling 3.0.
  • **fal or Replicate** if you want one account for many hosted models, including Veo 3.1, or to run your own weights: fal prices GPUs for custom deployments, and Replicate documents deploying custom models.
  • **Sume** if you want one request body, idempotent submits, and one USD balance across the Kling, Seedance and other families in its catalog. One API for Kling, Seedance and other video models covers that setup.
  • **Not Sume** if you need Veo, Runway's gen4.5, a Sora model, clips over 30 seconds, or your own weights.

Where does Sume fit, and does it have a Sora model?

Sume has no Sora or Veo model. The ids its 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, h3-max-recast. You can also send sume/auto and let Sume pick: the response echoes sume/auto, and Sume never discloses which family ran.

Limits are per model. seedance-2.5 and wan-3.0 accept up to 30 seconds and gemini-omni-flash-1.1 3 to 10 seconds, and the others top out at 15 seconds. gemini-omni-flash-1.1 lists 4K, and seedance-2.5 and seedance-2 offer 1080p. generate_audio asks for a sound track on models that can make one; minimax-h3-max and gemini-omni-flash-1.1 document native audio.

Prices come from each model's pricing_skus on GET /v1/videos/models. As one example, kling-3 is billed per second: $0.14 silent, $0.21 with sound, plus a 5.5% agent fee by default. How much an AI video costs has every model's rate, and listing video models walks through the capability 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:

From OpenAI's Videos API reference, Sume's Video Generation docs, and the Sume OpenAPI reference, read 2026-09-29.
OpenAI Videos APISume POST /v1/videosWhat to change
POST /videosPOST https://api.sume.com/v1/videosSend a JSON body with Content-Type: application/json.
model, such as sora-2modelRequired: a catalog id or sume/auto.
promptpromptSame field.
seconds, a string such as "8"durationAn integer number of seconds from the model's supported_durations.
size, such as 720x1280resolution and aspect_ratio, such as 720p and 9:16Every v1 model reports supported_sizes: null, so size returns 400 unsupported_parameter.
input_reference (image_url or file_id)frame_images or input_referencesA 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}/contentGET /v1/videos/{id}/content?index=0Send 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-Key: a replay with the same key and the same body 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 with x-sume-webhook-signature.
  • The same job is also visible at GET /v1/jobs/{id}/status and GET /v1/jobs/{id}/result.
  • Downloads from GET /v1/videos/{id}/content need your API key and answer with a redirect to the file, so use curl -L.
  • On 429, back off and use retry-after when present. queue_full means the workspace can't take another paid job until a queued or running one finishes or is canceled.
  • Billing draws on your workspace USD balance, reserved on submit, and usage.cost on the poll response is the billable amount.

Sources

Related posts

More in Models

All Models posts

Written by Sume