# OpenAI Sora API 2026年版: 公式 Videos API の使い方

> ここでいう「OpenAI Sora API」が OpenAI プラットフォーム上の公式なプログラム利用向け動画生成を指すなら、答えは yes です。ただし正しく理解するなら、それは Sora アプリではなく Sora 2 / Sora 2 Pro を使う Videos API です。このガイドでは consumer 向け Sora と developer surface を切り分け、最短の実装経路、現在の料金、advanced endpoints、そして今の開発者が知っておくべき docs の食い違いまで整理します。

- URL: https://blog.laozhang.ai/ja/posts/openai-sora-api
- Published: 2026-03-28
- Updated: 2026-03-28
- Author: AI Free API Team (https://blog.laozhang.ai/ja/about)
- Category: AI API
- Tags: OpenAI Sora API, Sora 2, OpenAI Videos API, 動画生成 API, OpenAI API

---
「OpenAI Sora API」で意味しているのが OpenAI プラットフォーム上の公式なプログラム利用向け動画生成なら、答えは **あります**。OpenAI が現在提供している開発者向け surface は [`Videos API`](https://developers.openai.com/api/docs/guides/video-generation/) で、中心になるのは `POST /v1/videos` と `sora-2` / `sora-2-pro` です。混乱の原因は、OpenAI には同時に **consumer 向けの Sora アプリ / editor** と **ChatGPT 内の Sora 利用** も存在し、それぞれが同じ「API」という言葉で説明されていないことです。だから 2026 年 3 月時点でも検索結果が矛盾して見えます。

このガイドが答えるのは app の使い方ではなく、開発者の問いです。今実際に存在する official developer contract、最短の create -> wait -> download フロー、実装前に押さえるべき pricing と policy 制約、そして 2026 年 3 月の更新で古い Sora API 解説が不完全になった理由に絞って整理します。

_Freshness note: 2026 年 3 月 28 日時点で OpenAI Developers docs、pricing、model pages、help-center materials を確認しています。_

## TL;DR

- **公式な developer access は現在あります。** 使うべき surface は [`/v1/videos`](https://developers.openai.com/api/reference/resources/videos/methods/create/) であり、consumer 向け Sora editor ではありません。
- **まずは `sora-2`** を使い、prompt、構図、motion を低コストで詰めるのが良いです。
- **高品質な最終出力が必要なら `sora-2-pro`**、特に `1920x1080` または `1080x1920` が必要なときはこちらです。
- **workflow は最初から async 前提で考えるべきです。** job を作成し、`GET /videos/{video_id}` を polling するか webhook を使い、最後に `GET /videos/{video_id}/content` でダウンロードします。
- **OpenAI の Sora docs はいま部分的に同期していません。** 最新 guide と 2026 年 3 月 changelog には 16/20 秒、edits、extensions、reusable characters、Batch、1080p `sora-2-pro` が載っていますが、古い reference snippets の一部は短い秒数と低い解像度だけを示しています。

![OpenAI Sora の surface map。Sora アプリ、ChatGPT、公式 Videos API を別の層として示す図](https://blog.laozhang.ai/posts/ja/openai-sora-api/img/api-route-map.png)

## いま「OpenAI Sora API」が意味するもの

このテーマで一番ありがちな誤解は、**Sora** を単一の product surface だと思うことです。実際には少なくとも 3 つに分かれます。

| Surface | 何か | 誰向けか | 何に使うか |
| --- | --- | --- | --- |
| Sora アプリ / editor | OpenAI の consumer 向け Sora 体験 | 手動で動画を作る個人ユーザー | アプリや web editor での creative exploration |
| ChatGPT access | ChatGPT plan 内での Sora 生成 | バックエンドなしで手動生成したい consumer / pro | 対話的な one-off 生成 |
| Videos API | OpenAI の公式 developer surface | 開発者、スタートアップ、プロダクトチーム | プログラム生成、edits、extensions、Batch、asset handling |

この分離があるからこそ、OpenAI の公式ページ同士が矛盾して見えます。Help Center の Sora 記事は **consumer product** を説明しています。一方 developer docs は、現時点で動いている [`Video generation with Sora`](https://developers.openai.com/api/docs/guides/video-generation/) の stack を、endpoint、models、pricing、samples とともに公開しています。

したがって、いま一番安全な mental model は次です。

**「Sora アプリ」を統合するのではなく、OpenAI の Videos API を統合する。**

一度そう捉えると単純ですが、検索結果で一番欠けているのはまさにこの切り分けです。

## いま最短で動く OpenAI の実装パス

ゼロから最短で公式な動作結果まで持っていきたいなら、流れはかなり明快です。

まず [`POST /v1/videos`](https://developers.openai.com/api/reference/resources/videos/methods/create/) に prompt、model、size、duration を送ります。OpenAI は動画生成を async job として扱うので、最初のレスポンスは `queued` や `in_progress` といった状態付きで job が作られたことを返すだけです。その後は [`GET /v1/videos/{video_id}`](https://developers.openai.com/api/docs/guides/video-generation/#poll-the-status-endpoint) を polling して `completed` になるまで待つか、webhook を登録して `video.completed` / `video.failed` を受け取ります。完了したら [`GET /v1/videos/{video_id}/content`](https://developers.openai.com/api/docs/guides/video-generation/#download-the-mp4) でバイナリを取得します。

prototype なら polling で十分です。production では webhook の方が契約としてきれいです。長い render は数分かかることがあり、「まだ終わっていない」と知るためだけに無駄な request を打ち続けるべきではありません。

現在の OpenAI SDK パターンに沿った最小の JavaScript 例は次の通りです。

```javascript
import OpenAI from "openai";
import { writeFile } from "node:fs/promises";

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

const video = await openai.videos.createAndPoll({
  model: "sora-2",
  prompt:
    "Wide tracking shot of a yellow taxi crossing a rain-soaked city street at blue hour, neon reflections, natural ambient audio.",
  size: "1280x720",
  seconds: "8",
});

if (video.status !== "completed") {
  throw new Error(`Video failed with status ${video.status}`);
}

const content = await openai.videos.downloadContent(video.id);
const buffer = Buffer.from(await content.arrayBuffer());

await writeFile("video.mp4", buffer);
// In production, copy the file into your own object storage immediately.
```

同じ lifecycle を raw HTTP で書くとこうなります。

```bash
curl -X POST "https://api.openai.com/v1/videos" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F model="sora-2" \
  -F prompt="Wide tracking shot of a yellow taxi crossing a rain-soaked city street at blue hour, neon reflections, natural ambient audio." \
  -F size="1280x720" \
  -F seconds="8"

curl "https://api.openai.com/v1/videos/$VIDEO_ID" \
  -H "Authorization: Bearer $OPENAI_API_KEY"

curl -L "https://api.openai.com/v1/videos/$VIDEO_ID/content" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  --output video.mp4
```

これが core integration です。現在の Sora stack の他の機能は、この job model の外側に積み上がっています。

![OpenAI Videos API の async lifecycle。create、poll または webhook、download を示す図](https://blog.laozhang.ai/posts/ja/openai-sora-api/img/integration-lifecycle.png)

## 料金、モデル、そして開発者が気付くべき docs のズレ

現在の公式 [pricing page](https://developers.openai.com/api/docs/pricing/#video) を見ると、モデルの役割分担はかなり分かりやすいです。[`sora-2`](https://developers.openai.com/api/docs/models/sora-2) は安くて速い iteration 向け。[`sora-2-pro`](https://developers.openai.com/api/docs/models/sora-2-pro) はより polished な output 向けで、1080p が必要ならこちらです。

OpenAI の pricing docs が現在示している standard pricing は以下です。

| Mode | Model | Output | Official price |
| --- | --- | --- | --- |
| Standard | `sora-2` | `720x1280` or `1280x720` | `$0.10/sec` |
| Standard | `sora-2-pro` | `720x1280` or `1280x720` | `$0.30/sec` |
| Standard | `sora-2-pro` | `1024x1792` or `1792x1024` | `$0.50/sec` |
| Standard | `sora-2-pro` | `1080x1920` or `1920x1080` | `$0.70/sec` |

Batch では現在、同じラダーが半額になっています。

| Mode | Model | Output | Official price |
| --- | --- | --- | --- |
| Batch | `sora-2` | `720x1280` or `1280x720` | `$0.05/sec` |
| Batch | `sora-2-pro` | `720x1280` or `1280x720` | `$0.15/sec` |
| Batch | `sora-2-pro` | `1024x1792` or `1792x1024` | `$0.25/sec` |
| Batch | `sora-2-pro` | `1080x1920` or `1920x1080` | `$0.35/sec` |

これだけでも大半の判断はできます。

- prompt を詰める段階では `sora-2` から始める。
- 最終アセットで画質が重要なら `sora-2-pro` に上げる。
- shot list を offline で回すなら、Batch の economics は十分に検討価値があります。

さらに重要なのは、**OpenAI の Sora docs が現時点で部分的に out of sync だという点**です。これは current official sources からの inference です。

- メインの video guide は `sora-2` と `sora-2-pro` の両方で `16` 秒と `20` 秒の生成をサポートすると書いています。
- 2026 年 3 月の changelog は longer generations up to 20 seconds と 1080p `sora-2-pro` を明示しています。
- しかし古い create-reference snippets の一部は、依然として `4`、`8`、`12` 秒とより狭い size matrix を表示しています。

いま actual contract を把握したいなら、より安全な読み方はこうです。

**guide、pricing page、2026 年 3 月 changelog を、古い reference fragments より優先して信頼する。**

この注意点は明示しておく価値があります。なぜなら resolution picker、quota planning、product messaging にそのまま影響するからです。

## 公式 API が plain text-to-video 以外にできること

現在の guide は、もはや単なる text prompt の入口ではありません。OpenAI の Sora stack は、生成と反復のより広い lifecycle をカバーしています。

### 画像リファレンス

[`input_reference`](https://developers.openai.com/api/docs/guides/video-generation/#use-image-references) を使うと、uploaded asset または `file_id` / `image_url` を含む JSON object で generation を誘導できます。OpenAI は reference image を実質的に動画の first frame と説明しています。重要な制約は、reference image が target `size` と一致している必要があること、そして document 上の対応 format が `image/jpeg`、`image/png`、`image/webp` であることです。

これは brand asset、art direction、あるいは reusable character よりも opening composition を重視するケースに向いています。

### 再利用可能な characters

OpenAI は現在 [characters workflow](https://developers.openai.com/api/docs/guides/video-generation/#use-characters-for-consistency) を公開しており、アップロードした動画から reusable な non-human character assets を作れます。guide では characters は動物、マスコット、オブジェクトの consistency tool として位置付けられており、1 本の生成で最大 2 体まで使えます。また、human likeness を含む character uploads はデフォルトでブロックされるとも書かれており、これは「人間の俳優を学習させる surface」ではないことを意味します。

実務上の結論は単純です。characters は reusable な non-human subjects 用であり、real people 制限を回避する抜け道ではありません。

### 動画 extension

OpenAI は [video extensions](https://developers.openai.com/api/docs/guides/video-generation/#extend-completed-videos) も公開しています。completed 済みの clip を続けたいときに使うべきルートです。scene continuity や camera direction を保ちたいときはこちらで、単に opening frame を制御したいだけなら `input_reference` の方が適切です。current guide では、各 extension は最大 20 秒、1 本の動画は最大 6 回まで延長可能、しかも extensions は **characters や image references をサポートしない** と明記されています。

この最後の一点は重要です。advanced features は何でも組み合わせられると仮定すると、実際の contract から外れます。

### 動画 edits

2026 年 3 月の changelog で OpenAI は [video edits workflow](https://developers.openai.com/api/docs/guides/video-generation/#edit-existing-videos) を追加しました。既存の生成動画やアップロード済み動画に targeted changes を加えるなら、これが現在の推奨ルートです。guide は、以前の remix endpoint が deprecated 方向であり、edits は requested change が小さく明確なほど良いと明記しています。

これは OpenAI が Sora を単発ジェネレーターではなく、iterative media workflow として扱い始めている強いサインです。

### Batch

current guide は [Batch](https://developers.openai.com/api/docs/guides/batch) で `POST /v1/videos` をサポートしていますが、いくつか重要な制約があります。

- Batch がサポートするのは `POST /v1/videos` のみです。
- Batch requests は JSON でなければならず、multipart は使えません。
- assets は事前にアップロードし、JSON body から参照します。
- Batch 生成の動画は batch 完了後最大 `24` 時間ダウンロードできます。

offline render queues、studio workflows、shot-list pipelines を作るなら、Batch はもはや脇役ではありません。公式ルートの一部です。

![sora-2、sora-2-pro、Batch 割引、advanced endpoints を比較するビジュアル](https://blog.laozhang.ai/posts/ja/openai-sora-api/img/pricing-capabilities.png)

## 実装前に知っておきたい guardrails と operational gotchas

Sora stack には十分に多くの制約があるので、policy と retention は compliance の脚注ではなく product contract の一部として扱うべきです。

current guide によれば、API は以下の制約を現在適用しています。

- content は 18 歳未満向けでも許容される内容でなければならない。
- copyrighted characters と copyrighted music は reject される。
- real people と public figures は生成できない。
- human likeness を含む character uploads は default でブロックされる。
- human faces を含む input images は現在 reject される。

もし planned workflow がこのどれかに依存しているなら、それは小さな edge case ではなく routing problem です。

storage model も重要です。OpenAI は direct download URL の有効期限を **最大 1 時間** としています。Batch downloads は batch 完了後 **24 時間** です。つまり vendor-hosted URL は一時的な delivery asset と考えるべきで、長期保管先にしてはいけません。production では、自前の object storage へコピーする処理を completion workflow に組み込むべきです。

latency も無視できません。guide には、モデル、負荷、解像度によって single render に数分かかる可能性があると書かれています。つまり background jobs、progress states、retries、webhook-based completion handling は normal case であり、enterprise だけの話ではありません。

最後に access と rate ceilings は usage tier に依存します。OpenAI の [`Rate limits` guide](https://developers.openai.com/api/docs/guides/rate-limits/#usage-tiers) では、組織は spend に応じて usage tiers を上がり、effective caps は account settings 内の live Limits page を確認するよう明示されています。Sora の model pages にも tier-dependent ceilings はありますが、current search rendering は情報が省略されているため、半端な数字を読み解くより live limits view へ誘導する方が安全です。

## 結局 OpenAI のどの surface を使うべきか

本当の目的が **プロダクトを作ること** なら、答えは Videos API です。

本当の目的が **数本の動画を手で作ること** なら、ChatGPT や Sora アプリの方が適しています。async jobs、storage、webhooks を扱う必要がないからです。

この区別は小さく見えますが、実はテーマ全体を解く鍵です。「OpenAI Sora API」の混乱の多くは、app-oriented Sora help と developer-oriented Videos API docs を続けて読み、それらのどちらかが間違っているはずだと考えてしまうことから生まれています。実際には、違う仕事を説明しているだけです。

開発者向けの最短で良い答えはこうです。

**はい、OpenAI はすでに公式の programmatic video generation を提供しています。統合すべきは consumer 向け Sora surface ではなく Videos API です。**

## FAQ

### OpenAI は今、API 経由の Sora 動画生成を公式にサポートしていますか。

はい。公式の developer route は現在の `Videos API` であり、video-generation guide と `POST /v1/videos` reference に明記されています。

### どうして OpenAI の一部ページでは Sora に API がないように見えるのですか。

一部の official surfaces は依然として **consumer 向けの Sora アプリ / editor** を説明しており、developer `Videos API` について話していないからです。これが現在の検索上の混乱の根本です。

### どのモデルから始めるべきですか。

prompt iteration と低コストな試行には `sora-2` から始めてください。より高品質な output、特に 1080p が必要になったら `sora-2-pro` に上げます。

### 1080p はすでに公式対応ですか。

はい。current guide、pricing docs、2026 年 3 月 changelog のすべてが 1080p `sora-2-pro` を示しており、changelog では 1080p generations が `$0.70/sec` 課金であることまで明記されています。

### polling だけに頼っても大丈夫ですか。

prototype なら問題ありません。production では render に数分かかることがあるため、polling loop を常用 control plane にしないためにも webhook の方が適しています。

### reusable characters を使った上で、同じ clip を extension できますか。

現時点では fully composable な workflow にはできません。current guide では extensions が characters と image references をサポートしないと明記されています。
