Technology

OpenAI Shut Down Sora 2: Where to Move Your Video API Calls

OpenAI removed the Sora 2 API on Sep 24, 2026 with no replacement. How to choose between another AI video model and a template API that costs 24x to 242x less.

Phil Duong

Founder

OpenAI Shut Down Sora 2: Where to Move Your Video API Calls

On OpenAI's deprecations page, the Videos API row has a column called "Recommended replacement." For the Videos API, for sora-2, for sora-2-pro and for all three dated snapshots, that column is empty.

So if your product called Sora 2, you have no successor model to move to at OpenAI. You have a dead endpoint and a choice to make. Most migration guides answer that choice with a list of other AI video models. That is the right answer for some teams, and an expensive mistake for many others. This post helps you find out which team you are on before you rewrite the integration.

TL;DR: OpenAI removed the Videos API and every Sora 2 model on September 24, 2026, and names no replacement. If you need new footage from a prompt, move to another generative model at $4.80 to $24.00 per 1080p minute. If you fill the same layout with new text, images and voice, a template render API does the job for $0.10 to $0.20 per minute, and gives the same result every time.

What exactly did OpenAI remove, and when?

OpenAI removed six items on September 24, 2026, and announced the removal on March 24, 2026. The list on the OpenAI deprecations page is:

Removed itemRecommended replacement
Videos APInone
sora-2none
sora-2-pronone
sora-2-2025-10-06none
sora-2-2025-12-08none
sora-2-pro-2025-10-06none

The whole endpoint family went with it: POST /v1/videos to start a job, GET /v1/videos/{video_id} to poll it, GET /v1/videos/{video_id}/content to download the MP4, and the video.completed and video.failed webhooks. OpenAI's archived video generation guide now says the same thing: "No one-to-one replacement API is available."

OpenAI removed its Videos API and all Sora 2 models on September 24, 2026, six months after it announced the change. Its deprecations page lists no recommended replacement for any of the six removed items, so teams that generated video through OpenAI must move that work to a different provider.

One more date on the same page is worth a look if Sora was part of a larger media pipeline. whisper-1 is removed on February 26, 2027. OpenAI does name replacements there (gpt-live-transcribe and gpt-transcribe). If you used Whisper only to put captions on videos, a render API with built-in auto-captions removes that dependency too.

What were you actually using Sora 2 for?

This is the question to answer before you choose anything. Sora 2 calls fell into two very different groups.

Group 1: new footage. A scene that does not exist yet. A drone shot over a city you never filmed, a product in a setting you never photographed, a character that moves. Only a generative model can make this, and the output is the point.

Group 2: the same layout with new data. A 15-second vertical promo with a product photo, a headline, a price and captions. A listing video with the address and five photos. A personalized clip with the customer's name. The structure is the same on every call. Only the text, images and voice change.

A lot of Group 2 work went through Sora because a prompt was the easiest interface to reach for, not because the job needed generation. A prompt like "15-second vertical product promo, show this photo, headline 'The Everyday Tote', price £129, captions" asks a model to guess a layout that you already know.

Here is a quick test: if you could draw the video as a storyboard before you called the API, you need a template, not a model.

Most templated short-form video does not need a generative model. When the layout is known before the API call and only the text, images, voice and captions change, the job is a deterministic render, and a template render API does it for a small fraction of the per-second price of generation.

The decision tree

Three questions route every Sora workload to one of three exits.

Where should a former Sora 2 call go?1. Does each video need footagethat does not exist yet?NOYESTemplate render API$0.10-$0.20 per 1080p minute2. Does the layout staythe same across videos?YESNOHybridgenerate the new clip,compose it in a templateGenerative model$4.80-$24.00 per1080p minute (Veo 3.1)3. Must the same input give the same output? If yes, a template belongs somewhere in the path.

1. Does each video need footage that does not exist yet? If no, stop here. You need a template render API. Nothing in the video is invented, so nothing needs a model.

2. If yes, does the layout stay the same across videos? If it does, take the hybrid path. Generate only the clip that must be new, and let a template place it with the text, captions and brand elements. If the layout changes every time, you need a generative model.

3. Must the same input give the same output? Sora gave a different video on each call with the same prompt. That is fine for creative exploration. It is a bug if your product shows a customer a preview and then renders a final that looks different. A template render is repeatable from the same props, so if repeatability matters, a template must be in the path somewhere.

What does each exit cost per minute?

At 1080p, a finished minute costs $4.80 to $24.00 from Google's Veo 3.1 and $0.099 to $0.20 from Renderly. That is 24x at the closest comparison and 242x at the widest.

Google publishes Veo 3.1 prices per second, audio included, with no free tier (Gemini API pricing, read September 25, 2026). At 1080p, Standard is $0.40 per second, Fast is $0.12 and Lite is $0.08. Multiply by 60 for a minute. Our rate is $0.20 per minute on pay-as-you-go and $0.099 on the Business plan.

Cost per finished 1080p minute (USD)Veo 3.1 Standard$24.00Veo 3.1 Fast$7.20Veo 3.1 Lite$4.80Renderly PAYG$0.20Renderly Business$0.099Sources: Google Gemini API pricing page (Sep 25, 2026); Renderly published rates. Linear scale.

Here is what that means for one real video. Our Price Drop Alert template is a 27-second, 1080×1080 card. It costs 0.5 credits to render, because billing rounds up to the nearest half credit. That is $0.05 to $0.10 per video. Twenty-seven seconds from Veo 3.1 at 1080p costs $2.16 on Lite and $10.80 on Standard.

At 1080p, Google's Veo 3.1 costs $4.80 to $24.00 per finished minute on its published price list, and a template render costs $0.099 to $0.20 per minute on Renderly's published rates. For work that does not need new footage, that is a 24x to 242x difference.

Other generative models, such as Kling and Runway, sit in the same category as Veo. Check their current price pages yourself, because per-second prices in this market change often. For the full cost-at-scale arithmetic, see our template vs AI-generated video comparison, and for prices across template APIs, see the video API pricing comparison.

How do you move the calls?

The Sora Videos API was an async job API, and so is ours. So the shape of your integration does not change. Only the request body does.

StepOpenAI Videos API (removed)Renderly
Create a jobPOST /v1/videos with a promptPOST /api/v1/renders with a templateId and replacements
Check statusGET /v1/videos/{video_id}GET /api/v1/renders/{jobId}
Get notifiedvideo.completed / video.failedrender.completed / render.failed
Get the fileGET /v1/videos/{video_id}/contentoutputUrl on the completed job

The prompt becomes a set of named values. This is the Sora-style promo from earlier, sent to the Price Drop Alert template:

curl -X POST https://renderly.video/api/v1/renders \
  -H "Authorization: Bearer $RENDERLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "templateId": "price-drop-alert",
    "replacements": {
      "product_image": "https://example.com/tote.jpg",
      "product_name": "The Everyday Tote",
      "product_price_was": "£185",
      "product_price": "£129",
      "cta_label": "Shop it now",
      "cta_url": "example.com/tote"
    },
    "webhookUrl": "https://your-app.com/hooks/render"
  }'

The response gives you a jobId. When the render finishes, the webhook sends a render.completed event, signed with HMAC-SHA256 in the X-Renderly-Signature header, with up to three delivery attempts. The job then carries an outputUrl. Our guide to render webhooks covers signature checks and retries.

Two differences are worth planning for:

  • You design the layout once. A prompt let the model choose the layout each time. A template makes you choose it once, in the editor or from a ready-made template. That is more work on day one and no work after it.
  • A template cannot invent anything. No new camera moves, no new scenes, no footage you do not supply. If a video needs one of those, send that part down the hybrid path.

The hybrid path is two calls. Generate the clip that must be new with a generative model, then pass its URL as a video replacement in the template. The template adds the text, captions, voiceover and brand layout around it. You pay generative prices only for the seconds that need them.

If your Sora calls came from an AI agent and not from your own code, the move is shorter still. Renderly has an MCP connector, so an agent can create and check renders over MCP with the same templates and the same replacements.

Model risk is a cost too

The deprecation page is its own lesson. A generative model can be removed with six months' notice and no successor, and your product then depends on a decision someone else made. A template is your own JSON. The same props render the same video next year, and if you ever move providers, the layout decisions are written down and portable.

That does not make generative models the wrong choice. For new footage, they are the only choice. But for the templated, captioned, repeatable work that a lot of Sora traffic really was, you can remove the model from the path, and with it the per-second price and the risk of another empty replacement column.

The short version

  • OpenAI removed the Videos API and all Sora 2 models on September 24, 2026, and named no replacement.
  • Sort your calls before you migrate them. New footage goes to another generative model. The same layout with new data goes to a template render API. Both together go down the hybrid path.
  • At 1080p, generation costs $4.80 to $24.00 per minute and a template render costs $0.099 to $0.20.
  • The integration shape stays the same: create a job, get a webhook, download the file.

To try the template path, pick a design from the template library and render it with the free credits every new account gets.

Frequently asked

Is the Sora 2 API still available?
No. OpenAI removed the Videos API, sora-2, sora-2-pro and all three dated snapshots on September 24, 2026. The removal was announced on March 24, 2026. OpenAI's own video generation guide now says the models and the Videos API were shut down and are no longer available.
Did OpenAI name a replacement for Sora 2?
No. On OpenAI's deprecations page, the Recommended replacement column is empty for every Videos API and Sora 2 row. There is no OpenAI video model to migrate to, so every team that called the Videos API has to leave the platform for video.
What is the cheapest way to replace Sora for templated videos?
A template render API. At 1080p, Google's Veo 3.1 costs $4.80 to $24.00 per finished minute on its published price list. Renderly's published rate is $0.099 to $0.20 per rendered minute, which is 24x to 242x less. The trade-off is that a template cannot invent footage, so it fits only when the layout stays the same from video to video.
Can I still use AI-generated footage inside a template?
Yes. Generate the one clip that must be new with a generative model, then pass its URL into a template as a video replacement. The template adds the text, captions, voiceover and brand layout. You pay generative prices only for the seconds that need them.