Sora 2 APIは、OpenAIが2025年10月6日に公開した動画生成API(Videos API、/v1/videos)と、そこで使うsora-2・sora-2-proモデルの総称です。2026年9月24日にVideos APIとsora-2系の全モデルが停止し、2026年11月時点では呼び出せません。OpenAIは1対1で置き換えられるAPIはないとしています。この記事では、残ったコードの保守と移行に必要なエンドポイント・パラメータ・料金を記録として整理し、Gemini Omni 1.2 Flashへの書き換え例と、Veo 3.1のGA版を選ぶ条件を示します。
まとめ:Sora 2 APIの仕様と停止後の移行先
- 提供状況:2026年3月24日に廃止が告知され、9月24日にVideos APIと
sora-2系5つのモデルIDが停止しました。推奨移行先は示されていません。 - 使い方:
POST /v1/videosでジョブを作り、GET /v1/videos/{id}で完了を待ち、/contentからMP4を取得する非同期型でした。 - 料金:生成した動画1秒あたりの従量課金で、
sora-2は0.10ドル、sora-2-proは解像度に応じて0.30〜0.70ドルでした。 - 移行先:この記事で書き換え例を示すのは、APIキーと従量課金で使えるGemini APIのGemini Omni 1.2 Flash(720pの動画出力で約0.07ドル/秒)です。Gemini API版のVeo 3.1は2026年10月22日に停止しており、Veo 3.1を使い続けるならGoogle CloudのGA版(
veo-3.1-generate-001)に移ります。どちらもSoraの20秒を1回では作れません。
Sora 2 APIの提供期間と停止の経緯
Sora 2 APIは公開から1年足らずで停止しました。その間に仕様が一度大きく広がっています。日付はOpenAI APIの変更履歴と廃止告知のページによります。
| 日付 | 変更内容 |
|---|---|
| 2025年10月6日 | Videos APIとsora-2・sora-2-proを公開 |
| 2026年1月13日 | sora-2の参照先をsora-2-2025-12-08へ変更 |
| 2026年3月12日 | 最長20秒、proの1080p、キャラクター、延長、Batchに対応 |
| 2026年3月12日 | 編集用の/videos/editsを追加し、remixの廃止を予告 |
| 2026年3月24日 | Videos APIとSora 2モデルの廃止を告知 |
| 2026年9月24日 | Videos APIとsora-2系5つのモデルIDを停止 |
停止したのはエイリアスのsora-2・sora-2-proと、日付付きのsora-2-2025-10-06・sora-2-2025-12-08・sora-2-pro-2025-10-06です。スナップショットを固定していたシステムも例外ではありません。OpenAIの動画生成ガイドは停止後も「過去の参照用」として公開が続いており、この記事の仕様はそのガイドとモデルページに基づきます。アプリ版Soraの終了日程や、作った動画の書き出し手順はSora 2の終了はいつ?復活の見込み・終了理由と動画の保存方法、APIの移行先にまとめています。
Videos APIのエンドポイントと非同期ジョブの流れ
Videos APIのエンドポイントと用途
Videos APIのエンドポイントは次の10本でした。パスはすべてhttps://api.openai.com/v1以下です。
| メソッドとパス | 用途 |
|---|---|
POST /videos |
生成ジョブの作成 |
GET /videos/{video_id} |
状態と進捗の取得 |
GET /videos/{video_id}/content |
MP4・サムネイル・スプライトの取得 |
GET /videos |
一覧(limit・after・order) |
DELETE /videos/{video_id} |
保存済み動画の削除 |
POST /videos/edits |
既存動画の部分編集 |
POST /videos/{video_id}/remix |
旧方式の再編集(editsに移行予定だった) |
POST /videos/extensions |
完成した動画の続きを生成 |
POST /videos/characters |
再利用するキャラクターの登録 |
GET /videos/characters/{character_id} |
キャラクターの取得 |
ジョブの状態遷移と完了待ちの実装
生成は非同期です。作成直後のジョブはqueuedかin_progressで、最終的にcompletedかfailedになります。OpenAIの動画生成ガイドは、1本の生成に数分かかることがあるとして、10〜20秒間隔のポーリングか、Webhook(video.completed・video.failed)での通知を勧めていました。
Python SDKで書くと、作成・待機・取得は次の流れです。2026年11月8日時点でPyPIの最新版だったopenai 3.46.0でHTTP通信をモックに差し替え、この順でリクエストが出ることを確認しました。
import time
from openai import OpenAI
client = OpenAI()
video = client.videos.create(
model="sora-2",
prompt="A paper airplane flying over a forest",
seconds="8",
size="1280x720",
)
deadline = time.monotonic() + 600 # 待機の上限(例)
while video.status in ("queued", "in_progress"):
if time.monotonic() >= deadline:
raise TimeoutError("Video generation timed out")
time.sleep(15)
video = client.videos.retrieve(video.id)
if video.status != "completed":
raise RuntimeError(video.error.message if video.error else video.status)
client.videos.download_content(video.id, variant="video").write_to_file("out.mp4")
取得で見落としやすいのは保存期限です。ダウンロードURLの有効期限は生成から最長1時間、Batch経由の動画はバッチ完了から24時間でした。完了通知を受けたら、すぐ自社のストレージへ移す作りが前提でした。停止後はこの取得エンドポイントも呼べないため、OpenAI側に残っていた動画をAPIで回収する手段はありません。
リクエストパラメータと料金・レート制限
model・seconds・sizeとinput_referenceの指定値
POST /videosの主なパラメータは次のとおりです。secondsとsizeは数値ではなく文字列で渡します。
| パラメータ | 指定値 | 既定値 |
|---|---|---|
model |
sora-2/sora-2-pro/日付付きID | sora-2 |
seconds |
“4”・”8″・”12″、2026年3月12日以降は”16″・”20″も可 | “4” |
size |
720×1280・1280×720(両モデル)、1024×1792・1792×1024(proのみ) | 720×1280 |
size(proのみ) |
1080×1920・1920×1080(2026年3月12日以降) | - |
input_reference |
JPEG・PNG・WebP、sizeと同じ解像度 | なし |
characters |
登録済みキャラクターのID(1本に最大2体) | なし |
input_referenceの画像は動画の最初のフレームとして使われます。キャラクターは短い動画(2〜4秒が推奨)から登録して複数の生成で使い回す別の仕組みで、IDを渡すだけでは効きにくく、プロンプトにキャラクター名をそのまま書くよう案内されていました。
APIリファレンス・SDK・ガイドの記載の食い違い
Sora 2 APIは、2026年3月の拡張がドキュメント全体に行き渡らないまま停止しました。停止後に残ったページを照合すると、次の3点が食い違っています。
- 秒数と解像度:ガイドと変更履歴は16・20秒と1080pを案内する一方、APIリファレンスの
secondsは「4, 8, 12」、sizeは4種類のままです。 - SDKの型定義:
openai3.46.0のVideoSecondsも"4"・"8"・"12"の3値だけです。実行時の検査はなく、seconds="20"はそのまま送信されることをモックで確かめました。型チェッカーを通しているプロジェクトでは、20秒の指定に警告が出ます。 - Batch対応:
sora-2のモデルページはBatchを「Not supported」と書いていますが、ガイドと2026年3月12日の変更履歴はPOST /v1/videosのBatch対応を明記しています。
過去のコードで20秒や1080pの指定を見つけても、リファレンスと合わないことを理由にバグと決めつけないでください。仕様は変更履歴とガイドの記述が新しく、リファレンスと型定義が追いついていなかっただけです。
1秒あたりの料金とRPM上限
料金はsora-2とsora-2-proのモデルページに停止後も残っています。
| モデルと解像度 | 1秒あたり | 20秒の場合 |
|---|---|---|
| sora-2(720p) | 0.10ドル | 2ドル |
| sora-2-pro(720p) | 0.30ドル | 6ドル |
| sora-2-pro(1024×1792) | 0.50ドル | 10ドル |
| sora-2-pro(1080p) | 0.70ドル | 14ドル |
1分あたりのリクエスト数(RPM)の上限は、利用実績で上がる使用量ティアごとに決まっていました。稼働中のティアは5段階で、2026年4月4日時点のモデルページ(Internet Archiveの記録)ではsora-2がTier 1で25、Tier 5で375、sora-2-proがTier 1で10、Tier 5で150でした。Tier 1でsora-2-proを並列に回すと、1分10件で上限に届きます。
停止後の2026年10月6日、OpenAIはティアをBuild・Launch・Growの3段階に整理し、モデルページのRPM表も新しい区分(sora-2はBuildが50、Growが375)に書き換わりました。この値は稼働中には適用されていません。過去のログで429の発生条件を調べるときは、旧5段階の上限と突き合わせてください。
HTTP 429(Too Many Requests)の原因はRPM超過だけではありませんでした。OpenAIのレート制限ガイドによると、動画リクエストはジョブ作成前に拒否された場合、急なトラフィック増加でもモデルの過負荷でも、以前は同じ429(rate_limit_exceeded)を返していました。現在の仕様では、急増は429のslow_down、過負荷は503のserver_is_overloadedに分かれています。古いエラーハンドラーで429を一律にRPM超過と扱っていた場合、実際は過負荷だったケースが混ざっています。
画像参照・延長・編集の制約と生成が拒否される条件
input_reference・characters・extensions・editsの使い分け
2026年3月の拡張で、既存の素材を生かす手段が4つに増えました。組み合わせの可否が細かく分かれています。
| 機能 | 入力 | 主な制約 |
|---|---|---|
| input_reference | 画像1枚 | 最初のフレームになる、sizeと同じ解像度 |
| characters | 短いMP4(2〜4秒推奨) | 1本に最大2体、人物の肖像は既定でブロック |
| extensions | 完成済みの動画 | 1回最大20秒、最大6回、完成動画は合計120秒まで |
| edits | 動画IDかアップロード動画 | アップロード動画の編集は対象顧客のみ |
延長はキャラクターや画像参照と併用できず、受け付けるのは元動画とプロンプトだけでした。キャラクターとinput_referenceは併用できます。
コンテンツ制限による拒否と失敗
APIが強制していた次のコンテンツ制限は、生成が拒否される原因になります。
- 18歳未満の視聴に適した内容しか生成できない
- 著作権のあるキャラクターと音楽を含む指示は拒否される
- 公人を含む実在の人物は生成できない
- 人の顔が写った入力画像は拒否される
失敗したジョブはstatusがfailedになり、error.codeとerror.messageに理由が入ります。前述のコード例のように、取得へ進む前に完了状態を確認し、失敗したジョブは理由を記録して後工程から除外してください。
停止後に残ったSora 2 APIコードの移行先と書き換え
Gemini Omni 1.2 FlashとVeo 3.1 GA版の比較
GoogleのGemini APIの動画生成ガイドは、動画生成のモデルにGemini Omni Flash(gemini-omni-1.2-flash)を指定し、Gemini API版のVeo 3.1(veo-3.1-generate-preview・Fast・Lite)は2026年10月22日に停止したと明記しています。この記事で比較するGoogleの移行候補は、Omni 1.2 FlashとGoogle CloudのGemini Enterprise Agent Platformで提供されるVeo 3.1のGA版です。RunwayなどもAPIキーとクレジット課金の動画生成APIを提供しており、他社の選択肢は末尾のFAQで紹介する比較記事にまとめています。Omni 1.2 Flashは2026年11月5日にGAとなり、旧版のgemini-omni-1.1-flashへの呼び出しは12月3日から自動で1.2へ振り替わります。
| 項目 | Sora 2 API | Omni 1.2 Flash | Veo 3.1 GA版 |
|---|---|---|---|
| 提供元 | OpenAI(停止) | Gemini API | Google Cloud |
| モデルID | sora-2・sora-2-pro | gemini-omni-1.2-flash | veo-3.1-generate-001 |
| 1回の尺 | 4〜20秒 | 3〜15秒(既定10秒) | 4・6・8秒 |
| 延長 | 合計120秒まで | 合計30秒まで | 対応 |
| 最高解像度 | 1080p(pro) | 4K(アップスケール) | 4K |
| 720pの単価 | 0.10ドル/秒 | 約0.07ドル/秒 | Google Cloudの料金表 |
| 課金・容量の方式 | 従量課金 | 従量課金(無料枠なし) | 固定クォータか専有枠 |
| 提供地域 | - | 一部機能はEEA等で不可 | us-central1のみ |
| 終了予定 | 2026年9月24日に停止 | 未発表 | 2027年5月4日以降 |
Omni 1.2 Flashの料金はGemini APIの料金表で動画出力100万トークンあたり12.00ドルです。720pの動画は1秒5,792トークンとして数えるため、1秒約0.07ドル、10秒で約0.70ドルになります。1080pは約0.104ドル、4Kは約0.209ドル/秒です。これは動画出力の料金で、プロンプトや参照画像の入力は100万トークンあたり1.50ドルが別にかかります。動画出力だけで比べるとsora-2の0.10ドルより安く、sora-2-proの1080p(0.70ドル)と比べると約7分の1です。
Veo 3.1のGA版はGoogle Cloudのモデルページで、従量課金(Pay-as-you-go)に対応せず、固定クォータかProvisioned Throughputでの利用と書かれています。Soraと同じ感覚でAPIキーを発行して使い始めるならOmni 1.2 Flash、既にGoogle Cloudの契約があり8秒以下の短尺をVeoで作りたいならVeo 3.1のGA版、が判断の分かれ目です。Veo 3.1の各経路の違いはVeo 3.1とは?料金・日本語対応と、Gemini API版停止後に使えるVertex AI・Flowの仕様差、Omniの機能全般はGemini Omniとは?1.2 Flashの秒数・料金・使い方と1.1からの移行【2026年11月】で扱っています。
Gemini Omni 1.2 Flashへの書き換え例
前述のSoraのコード(8秒・1280×720)をOmni 1.2 Flashに置き換えると次のようになります。実行にはgoogle-genaiをインストールし、Gemini APIのキーを環境変数GEMINI_API_KEYに設定しておきます。Omniはinteractions.createの戻り値に動画のbase64が入るのが基本形ですが、4MBを超える動画(目安は720p超)はdelivery: "uri"で受け取り、Files APIでACTIVEになるまで待ってからダウンロードするようOmniのガイドが勧めています。この形にすると、Soraの「作成→ポーリング→取得」の3段構成をそのまま残せます。
import time
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-omni-1.2-flash",
input="A paper airplane flying over a forest",
response_format={
"type": "video",
"duration": "8s",
"aspect_ratio": "16:9",
"resolution": "720p",
"delivery": "uri",
},
)
video = interaction.output_video
if video is None or not video.uri:
raise RuntimeError(f"No video returned: status={interaction.status}")
file_name = video.uri.split("/")[-1]
deadline = time.monotonic() + 600 # 待機の上限(例)
while True:
if time.monotonic() >= deadline:
raise TimeoutError("Video processing timed out")
info = client.files.get(name=f"files/{file_name}")
if info.state.name == "ACTIVE":
break
if info.state.name == "FAILED":
raise RuntimeError("Video processing failed")
time.sleep(5)
client.files.download(file=video.uri, destination="out.mp4")
2026年11月8日時点の最新版google-genai 3.0.0でHTTP通信をモックに差し替え、interactionsへの送信、Files APIの状態取得、ダウンロードの順にリクエストが出ることと、FAILEDで例外になることを確認しました。Soraのsize="1280x720"はaspect_ratioとresolutionの2つに分かれ、seconds="8"は"8s"のように単位付きの文字列で渡します。durationを指定すると、プロンプト中の秒数の記述より優先されます。
モデル名の置換だけで済まない差分
移行で失敗しやすいのは尺の前提です。Soraでseconds="16"や"20"を指定していた処理は、Omni 1.2 Flashでも1回では再現できず、16秒以上を指定すると引数エラーになります。延長はprevious_interaction_idで前回の結果を参照し、1ターン3〜10秒ずつ、合計30秒までです。Soraの延長(1回最大20秒・最大6回、完成動画は合計120秒まで)を前提にした長尺の生成は、移行先の上限内に収まらなければ、複数の動画を結合する設計などに組み替える必要があります。Veo 3.1のGA版は1回8秒が上限です。
アップロードした既存動画の編集と延長には地域の制限があります。Omniは欧州経済領域・スイス・英国の利用者に対してアップロード動画の編集・延長を提供しておらず、入力動画も15秒以下に限られます。延長は末尾にだけ付け足せ、先頭や途中には挿入できません。
プロンプトの言語にも差があります。Omniのガイドは英語だけを完全サポートとし、他の言語は評価していないと明記しています。Veo 3.1のGA版もプロンプト言語は英語です。日本語プロンプトで運用していたシステムは、英語に翻訳する層を挟むか、出力品質を検証してから切り替えてください。Omniはシステム指示、temperature、否定プロンプト専用の指定を受け付けませんが、「音楽を入れない」などの否定指示は通常のプロンプトに書けます。
残っている呼び出しを探すには、openai 3.46.0のvideosの各メソッドに付いた非推奨の印が使えます。テストをpython -W error::DeprecationWarningで走らせれば、Soraを呼ぶ箇所が例外として止まることをモックで確かめました。動画生成を組み込んだ社内システムの改修範囲の見積もりは、API開発・システム連携で相談を受けています。
よくある質問
Sora 2 APIは今も使えますか?
使えません。Videos APIとsora-2・sora-2-proを含む5つのモデルIDは2026年9月24日に停止しており、OpenAIのAPIキーを新たに発行しても呼び出せません。廃止告知の推奨移行先も空欄です。「Sora 2 API」を掲げる他社の販売ページには停止前に書かれたものが残っており、移行計画を紹介していたPixoのブログも2026年10月17日に「現在Soraを利用するための手順ではない」と注記しました。
Sora 2 APIの料金はいくらでしたか?
生成した動画1秒あたりの課金で、sora-2の720pが0.10ドル、sora-2-proは720pが0.30ドル、1024×1792が0.50ドル、1080pが0.70ドルでした。20秒の動画ならsora-2で2ドル、sora-2-proの1080pで14ドルです。
Sora 2 APIで1本の生成にかかる時間はどのくらいでしたか?
OpenAIのガイドは、モデル、APIの混雑、解像度によって1本に数分かかることがあるとしていました。長い尺や1080pは720pの短い動画より時間がかかるため、10〜20秒間隔のポーリングかWebhookで完了を待つ設計が勧められていました。
Sora 2 APIで「Too Many Requests」が出たのはなぜですか?
主な原因は使用量ティアごとのRPM上限で、稼働中のTier 1の上限はsora-2が1分25件、sora-2-proが1分10件でした。ただし、動画リクエストは以前、急なトラフィック増加やモデルの過負荷でジョブ作成前に拒否された場合も同じ429を返していました。上限内なのに出る場合は、間隔を空けて再試行するのが対処でした。
Sora 2 APIの代わりに使えるAPIはありますか?
APIキーと従量課金で使える移行候補の一つがGemini APIのGemini Omni 1.2 Flashで、720pの動画出力は約0.07ドル/秒とsora-2より安くなります。Veoを使いたい場合、Gemini API版は2026年10月22日に停止しているため、Google CloudのVeo 3.1 GA版が対象です。Runwayなどの動画生成サービスを含めた比較は動画生成AIランキング|業務利用で選ぶ主要9ツールの実額比較と生産投入の判断基準【2026年最新】を参照してください。