What exactly is being discontinued?
Keep the consumer Sora app separate from the developer Videos API. OpenAI's help center says the Sora web and app experiences were discontinued on April 26, 2026. The same article, the deprecations page, and the current Videos API guide say the API shutdown is September 24, 2026. OpenAI's deprecations table does not name a successor video API.
| Item | Status | Date | Developer impact |
|---|---|---|---|
| Videos API / Sora API | Discontinuation announced; shutdown listed | September 24, 2026 | Existing POST /videos integrations need a replacement plan. OpenAI lists no recommended replacement. |
| Sora 2 / Sora 2 Pro API models | Named on the deprecations page; still described on model docs when last checked | September 24, 2026 | Aliases and snapshots sora-2, sora-2-pro, sora-2-2025-10-06, sora-2-2025-12-08, and sora-2-pro-2025-10-06 are listed for removal. Current model pages are not a stay of that date. |
| Sora consumer product | Web and app experiences discontinued | April 26, 2026 | Do not treat consumer-app availability as API availability. Export remaining Sora app content through OpenAI's published export path if you still need those files. |
Sources: OpenAI deprecations, Video generation with Sora, Sora discontinuation help article, Sora 2 model page, and Sora 2 Pro model page. Last verified 2026-09-15.
OpenAI's current Videos guide still describes an asynchronous job: create with POST /videos, poll GET /videos/{video_id} or wait for video.completed / video.failed webhooks, then download with GET /videos/{video_id}/content. It documents text prompts, an optional first-frame input_reference, size and seconds controls, 16- and 20-second generations, and 1080p exports on sora-2-pro. Those facts are what your adapter must replace. They are not Studio API syntax.
Migration checklist
- Inventory every Sora-dependent endpoint, job, queue, webhook, and workflow, including Batch API render queues if you use them.
- Record actual input types, output requirements, duration, resolution, audio needs, and latency tolerance from production traffic, not from marketing pages.
- Isolate Sora-specific assumptions:
POST /videos, job statuses, webhook event names,input_referencesize-matching rules, and moderation rejections such as human-face stills. - Identify polling, webhook, storage, and content-moderation dependencies that sit outside the model call itself.
- Choose replacement candidates by that workload, not by brand popularity.
- Put an adapter layer in front of production callers before you change those callers, where practical.
- Run representative prompts through each candidate and keep the outputs for human review.
- Compare accepted-output economics—cost per delivered second at the resolution and duration you actually ship—not only advertised headline rates.
- Test failure, timeout, retry, and quota behavior before you cut over.
- Migrate gradually and keep rollback until the old route is gone. OpenAI has not documented a grace period after September 24, 2026.
What to compare in a Sora replacement API
Use one decision sheet for every vendor. Do not fill this sheet from memory. Read the current primary docs on the day you decide, and write the verification date next to every cell you keep.
| Field | Why it matters |
|---|---|
| Provider and model | Identity of the thing you will actually call, including snapshot or version pins. |
| Text-to-video / image-to-video | Whether your current Sora jobs are prompt-only, first-frame guided, or mixed. |
| Native audio | Sora 2 docs describe synced audio. A silent replacement changes the product, not just the vendor. |
| Maximum duration and sizes | OpenAI documents 16- and 20-second generations and model-specific sizes. Other APIs use different envelopes. |
| Async job model | Create, poll, webhook, and download contracts almost never match /v1/videos. |
| Advertised price unit | Per second, per job, or credit packs. Normalize before you compare. |
| Cost per delivered second | Only after you know resolution, duration, audio, and retry waste. |
| Observed latency and availability | Record these only if you measured them. Do not publish guessed benchmarks. |
| Docs URL and last verified date | Deadline-driven pages go stale. Keep the source next to the claim. |
This page does not publish a third-party replacement price matrix. Those figures change, and unverified cells would be invented pricing.
Replacement categories
Organize choices by architecture. There is no supported universal winner, and none of these categories is a drop-in Videos API clone.
1. Direct hosted video-model APIs
You call one vendor's video API and own that vendor's job lifecycle. This is the closest category to today's Sora integration, and it repeats the same single-provider shutdown risk. Confirm current docs for each candidate; do not assume feature parity with Sora 2's audio, duration, or reference-image rules.
2. Multi-model inference providers
One account exposes several video models behind that provider's own request schema. You still adapt to their job object. Switching models later is easier than switching the entire access layer only if you already hid their schema behind your adapter.
3. Unified or router-style video APIs
A router compares compatible routes for a fixed request—duration, resolution, input mode—then locks a price before generation. That is useful when you want to avoid another hard-coded vendor SDK. OfflineCreator Studio publishes an AI generation router and a video-route comparison page. Those pages describe how Studio quotes catalog routes. They do not claim Sora request compatibility, automatic Sora failover, or an OpenAI Videos API stand-in.
4. Local or self-hosted video generation
Local generation is a different product decision: hardware, privacy, and operational ownership instead of a hosted API. It is not a Videos API substitute. If you specifically want to run AI video generation locally, use OfflineCreator's local image-to-video guide. Keep hosted API replacement intent on this Studio page.
Published Studio video models
Studio currently lists 41 launch catalog models whose workflow is text-to-video, image-to-video, reference-to-video, or video-to-video. The table below is generated from the live catalog. It is a hosted option list, not a Sora compatibility matrix. Duration and resolution values come from each model's published options. Confirm the model card in Studio models before you quote a job.
Image to video
| Model | Duration | Resolutions |
|---|---|---|
| FLUX.3 first last frame to video | 5–20s | 720p, 1080p |
| FLUX.3 first last frame to video Draft | 5–20s | 720p |
| FLUX.3 image to video | 5–20s | 720p, 1080p |
| FLUX.3 image to video Draft | 5–20s | 720p |
| FLUX.3 keyframes to video | 5–20s | 720p, 1080p |
| FLUX.3 keyframes to video Draft | 5–20s | 720p |
| Gemini Omni Flash Image | 3–10s | 720p |
| Happy Horse 1.1 Image | 3–15s | 720p, 1080p |
| Kling 2.6 Pro Motion | 5s | 720p |
| Kling 3.0 Pro Image | 3–15s | 720p |
| MiniMax H3 Image | 5–15s | 768P, 2K, 4K |
| MiniMax Hailuo 2.3 Pro Image | See model card | See model card |
| Seedance 2.0 4K Image | 4–15s | 480p, 720p, 1080p, 4k |
| Seedance 2.5 Image | 4–30s | 480p, 720p |
| Sync Lipsync 3 Avatar | 1–120s | See model card |
| Wan 2.7 Image | 2–15s | 720p, 1080p |
Reference to video
| Model | Duration | Resolutions |
|---|---|---|
| Grok Imagine Video 1.5 Reference | 1–15s | 480p, 720p |
| Seedance 2.5 Reference | 4–30s | 480p, 720p |
Text to video
| Model | Duration | Resolutions |
|---|---|---|
| FLUX.3 text to video | 5–20s | 720p, 1080p |
| FLUX.3 text to video Draft | 5–20s | 720p |
| Gemini Omni Flash Text | 3–10s | 720p |
| Grok Imagine Video 1.5 Text | 1–15s | 480p, 720p, 1080p |
| Happy Horse 1.1 Text | 3–15s | 720p, 1080p |
| Kling 2.6 Pro | 5s | 720p |
| Kling 3.0 Pro Text | 3–15s | 720p |
| MiniMax H3 Text | 5–15s | 768P, 2K, 4K |
| MiniMax Hailuo 2.3 Pro Text | See model card | See model card |
| Seedance 2.0 4K Text | 4–15s | 480p, 720p, 1080p, 4k |
| Seedance 2.5 Text | 4–30s | 480p, 720p |
| Veo 3.1 Fast | 8s | 720p |
| Wan 2.7 Text | 2–15s | 720p, 1080p |
Video to video
| Model | Duration | Resolutions |
|---|---|---|
| FLUX.3 Draft Enhance | 5–20s | See model card |
| FLUX.3 extend video | 5–20s | 720p, 1080p |
| FLUX.3 extend video Draft | 5–20s | 720p |
| HeyGen Filler Word Removal | See model card | See model card |
| Kling 3.0 Pro Motion Control | 3–30s | See model card |
| Kling O3 Edit Standard | 3–15s | See model card |
| Kling O3 Omni Edit Pro | 3–15s | See model card |
| LTX 2.3 Reframe | 1–60s | 720p, 1080p |
| Sync Lipsync 3 | 1–120s | See model card |
| Topaz Video Upscale | 1–600s | 720p, 1080p, 4k |
For MCP-oriented model discovery see text-to-video model selection and image-to-video model requirements. Seedance-specific Studio workflows live on Seedance video. Credit plans are on pricing.
Migration architecture
The durable pattern is application → internal video-generation adapter → provider implementation. The adapter owns prompt mapping, job status, and output retrieval so a later vendor change does not rewrite every caller. This is a conceptual pattern. It is not a documented OfflineCreator SDK, and the TypeScript below is an architecture example—not Studio API syntax.
interface VideoGenerationRequest {
prompt: string;
imageUrl?: string;
durationSeconds?: number;
aspectRatio?: string;
}
interface VideoGenerationResult {
id: string;
status: "queued" | "running" | "completed" | "failed";
outputUrl?: string;
}
interface VideoProvider {
generate(request: VideoGenerationRequest): Promise<VideoGenerationResult>;
getStatus(id: string): Promise<VideoGenerationResult>;
}If you later map a provider-specific script onto Studio's public REST generation API, start from the existing comparison migrate a provider API to OfflineCreator REST. That page maps model IDs, auth, job states, and retrieval without claiming full parity. For job notification shape, see polling versus webhooks. For CLI video jobs, see generate video with the CLI and the MCP and CLI hub.
Sora replacement cost comparison
Normalize cost as estimated generation cost divided by delivered video seconds, and keep resolution, duration, and audio assumptions on the same row. OpenAI's current Sora 2 model page lists video generation at $0.10 per second for the documented 720×1280 / 1280×720 sizes. The Sora 2 Pro page lists $0.30, $0.50, and $0.70 per second across the three documented size bands. Those are OpenAI-advertised rates last verified 2026-09-15; they are not OfflineCreator prices and they are not a promise that those endpoints will remain billable through September 24, 2026.
Studio credit quotes are option-aware and belong on the model catalog and pricing. This page does not restate those quotes as a cross-vendor table.
When a router makes sense
Another single-provider SDK repeats the Sora lifecycle problem: model retirement, outages, price changes, quotas, and workload-specific fit all become emergency work. A router is worth evaluating when you have more than one compatible route for the same request and you want the price locked before credits move. Studio's router documentation explains that comparison for catalog models. Use it as a routing overview, not as evidence that Studio will absorb your current Sora jobs without an adapter.
Migration timeline
Use September 24, 2026 as the hard stop, not the start date. Finish inventory and adapter design first, then run representative replacements with enough time to reject a candidate and still migrate. Do not invent an OpenAI grace period. If OpenAI changes the shutdown date or names a successor API, re-read the deprecations page and refresh this page before you treat either fact as current.