> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sora 2 動画生成

> OpenAI Sora 2 / Sora 2 Pro の公式リレーによる動画生成の完全ガイドです。テキストから動画、画像から動画を統合された非同期エンドポイントで提供し、720p / 1024p / 1080p で 4 / 8 / 12 秒のクリップをサポートします。

## 概要

**Sora 2** は OpenAI のフラッグシップ動画生成シリーズで、prompt または参照画像から、**同期音声**付きの 4〜12 秒の高品質クリップを生成します。APIYI は、リクエストを OpenAI の `/v1/videos` エンドポイントへ直接転送する **透明プロキシ（公式リレー）** チャネルを提供し、リクエストとレスポンスの挙動は完全に同一です。

<Note>
  **🎬 特長**: 公式 OpenAI API への透明プロキシ、同期音声 + 動画出力、柔軟な 4 / 8 / 12 秒の長さ、そして 3 つの解像度階層 — Standard (720p)、HD (1024p)、Full HD (1080p、Pro のみ)。**広告用短尺、eコマース素材、ソーシャルメディア用クリップ、製品デモに最適**で、正確な指示追従と一貫した品質が重要な用途に向いています。
</Note>

<CardGroup cols={2}>
  <Card title="テキストから動画への API" icon="wand-sparkles" href="/ja/api-capabilities/sora-2/text-to-video">
    `POST /v1/videos`、テキストのみから動画を生成します — JSON リクエストボディ、最もシンプルなエントリーポイントです。
  </Card>

  <Card title="画像から動画への API" icon="image" href="/ja/api-capabilities/sora-2/image-to-video">
    `POST /v1/videos` + multipart upload of `input_reference` を使って、静止画像をクリップにアニメーション化します。
  </Card>

  <Card title="ビジュアル API テスト" icon="flask-conical" href="https://icover.ai/sora-official">
    このエンドポイントを iCover のビジュアルテストツールで直接デバッグできます — コードは不要です。
  </Card>

  <Card title="非同期タスクのルックアップ / ダウンロード" icon="list-checks" href="https://api.apiyi.com/task">
    送信済みの動画タスクを確認し、APIYI コンソールで動画リンクをダウンロードできます — API の外にあるルックアップ項目です。
  </Card>
</CardGroup>

## APIYIのSora 2 公式リレーを選ぶ理由

OpenAI公式チャネルのドロップイン代替として、**安定性**、**統合の手間**、**コスト**の面で本番シナリオ向けに最適化されています:

<CardGroup cols={2}>
  <Card title="Direct Official Connection · 99.99% Uptime" icon="shield-check">
    OpenAIの公式`/v1/videos`へ透過的に転送されます。中間処理はなく、プロトコルの回避リスクもありません。リクエストとレスポンスの挙動は上流と完全に一致します。**OpenAIのアカウント階層やリスク制御の変動を管理する必要はありません**。
  </Card>

  <Card title="Unlimited Concurrency · Production Scale" icon="infinity">
    バッチ撮影、広告パイプライン、大規模アセット制作を線形にスケールできます。アカウントごとの階層上限はありません。**デフォルト容量は本番利用に対応済み**です。専用のリソースプールが必要な場合はご連絡ください。
  </Card>

  <Card title="Same Per-Second Pricing + Top-Up Bonuses" icon="percent">
    OpenAI公式と同じ秒単位の料金に加え、[チャージボーナス](/ja/faq/recharge-promotions)を重ねてさらに節約できます。失敗したタスクは課金されません。
  </Card>

  <Card title="Global Zero-Friction Access" icon="globe">
    **海外サーバーやプロキシは不要**です。中国本土のデータセンター、住宅回線、または海外ノードから `api.apiyi.com` に直接接続できます。OpenAIの越境設定は完全に不要です。
  </Card>

  <Card title="OpenAI-Compatible · Zero Code Changes" icon="plug">
    エンドポイントパス `/v1/videos` はOpenAIと完全に一致します。公式のOpenAI SDKをAPIYIの`base_url`に向けて、そのまま呼び出せます。パラメータ名とフィールド名は1対1で対応します。
  </Card>

  <Card title="Professional Support · Enterprise Onboarding" icon="handshake">
    当社チームは動画生成に関して深い専門知識を持っています。promptエンジニアリング、解像度選定、バッチ制作、後処理まで対応します。エンタープライズのお客様向けに、PoCから本番導入までの技術サポートをフルで提供します。
  </Card>
</CardGroup>

## Key Features

<CardGroup cols={2}>
  <Card title="Synchronized Audio + Video" icon="volume-2">
    Sora 2 natively outputs **video with synchronized audio tracks** (ambient sound, dialogue, score) — no separate audio post-production needed.
  </Card>

  <Card title="Multi-Resolution Tiers" icon="expand">
    `sora-2` supports 720p (`720x1280` / `1280x720`); `sora-2-pro` adds 1024p and 1080p tiers up to `1920x1080`.
  </Card>

  <Card title="Flexible 4 / 8 / 12 Second Durations" icon="clock">
    Per-second billing means you pay for exactly what you produce. 8 seconds is the most common tier — balancing visual continuity and cost.
  </Card>

  <Card title="Precise Instruction Following" icon="target">
    Sora 2 leads its tier on camera motion, object physics, and character expression fidelity — closer to your prompt intent than competitors.
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Image-to-Video (input_reference)" icon="image">
    Upload one image as the starting frame to animate static visuals. See [Image-to-Video](/ja/api-capabilities/sora-2/image-to-video).
  </Card>

  <Card title="Async Task Model" icon="list-check">
    Submit returns a `video_id` immediately. Poll status independently and download the final video — ideal for batch management and resume-on-failure flows.
  </Card>

  <Card title="OpenAI SDK Drop-In" icon="plug">
    `base_url=https://api.apiyi.com/v1` works as a drop-in replacement for the official OpenAI SDK.
  </Card>

  <Card title="Failures Are Free" icon="circle-check">
    In async mode, failed generations, content-policy rejections, and capacity errors are **not billed**.
  </Card>
</CardGroup>

## 料金

課金は **動画の秒数** に基づき、OpenAI 公式レートと同一です。 `sora-2-pro` には 3 つの解像度階層があり、それぞれ秒単位の料金が異なります。

### `sora-2`（標準）

| 解像度                     | 料金         | 4秒     | 8秒     | 12秒    |
| ----------------------- | ---------- | ------ | ------ | ------ |
| `720x1280` / `1280x720` | \$0.10/sec | \$0.40 | \$0.80 | \$1.20 |

### `sora-2-pro`（プロ）

| 解像度                       | 料金         | 4秒     | 8秒     | 12秒    |
| ------------------------- | ---------- | ------ | ------ | ------ |
| `720x1280` / `1280x720`   | \$0.30/sec | \$1.20 | \$2.40 | \$3.60 |
| `1024x1792` / `1792x1024` | \$0.50/sec | \$2.00 | \$4.00 | \$6.00 |
| `1080x1920` / `1920x1080` | \$0.70/sec | \$2.80 | \$5.60 | \$8.40 |

<Info>
  **課金に関する注意**:

  * **実際に生成された秒数**（`seconds` × rate）に対して課金され、prompt の長さや `input_reference` の有無には依存しません
  * 非同期モードでは、生成失敗 / コンテンツポリシーによる拒否 / 容量エラーは **いずれも課金されません**
  * リクエストでは、APIYI コンソールの **従量課金** モードを使用する必要があります（API Key 設定で切り替え）。リクエストごとの課金グループは official-relay チャンネルを経由できません
  * チャージ特典の階層は [チャージ特典](/ja/faq/recharge-promotions) に記載されています
</Info>

## グループ設定

Sora 2 の公式リレーは専用の `Sora2Official` グループ (1x) を経由します。token をチャネルに到達させるには、**2 つの条件**を満たす必要があります。

1. **課金モード**: **Usage-Based Priority**（従量課金優先）を選択してください — リクエスト単位課金の token は公式リレーにルーティングできません
2. **グループ**: `Sora2Official` を含める必要があります

<Frame caption="Token creation: pick Usage-Based Priority for the billing mode and select Sora2Official under groups to call sora-2 / sora-2-pro">
  <img src="https://mintcdn.com/apiyillc/bq0-YYlFr270FvfA/images/sora2-token-group-setup-20260501.png?fit=max&auto=format&n=bq0-YYlFr270FvfA&q=85&s=ca71feec9a647195cab7a5bfa41ada2e" alt="トークン作成 UI: 課金モードを usage-based priority に設定し、グループのドロップダウンに Sora2Official (1x) が表示される、安定版の OpenAI 公式リレーの秒単位課金チャネル" width="1260" height="970" data-path="images/sora2-token-group-setup-20260501.png" />
</Frame>

推奨セットアップは 2 つあります — 分離要件に合うほうを選んでください:

| セットアップ                | 使用する場面                                        | 方法                                                                                                                                                                |
| --------------------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **A. 単一 token、マルチ用途** | 同じ token で他のモデル (GPT / Claude / 画像 / …) も呼び出す | 通常の `Default`（または他のもの）をプライマリグループとして維持し、`Sora2Official` を **フォールバック** に設定します — Sora 以外のリクエストはプライマリに残り、`sora-2` / `sora-2-pro` の呼び出しは `Sora2Official` に自動ルーティングされます |
| **B. 専用 token**       | 動画ワークロードを分離しておき、課金とクォータ管理を分離したい               | `Sora2Official` グループだけを選択した新しい token を作成し、Sora 2 専用に使います                                                                                                          |

<Tip>
  本番の動画ワークロードには **B（専用 token）** を推奨します: 課金が分かりやすく、クォータとアラートの管理もしやすくなります。A は個人開発や低頻度利用に向いています。
</Tip>

## 技術仕様

| Dimension                    | sora-2                                                          | sora-2-pro                                                                      |
| ---------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| **モデル ID**                   | `sora-2`                                                        | `sora-2-pro`                                                                    |
| **現在のスナップショット**              | `sora-2-2025-12-08`                                             | エイリアスと同期済み                                                                      |
| **廃止済みスナップショット**             | `sora-2-2025-10-06`                                             | —                                                                               |
| **対応解像度**                    | `720x1280` / `1280x720`                                         | `720x1280` / `1280x720` / `1024x1792` / `1792x1024` / `1080x1920` / `1920x1080` |
| **対応時間（秒）**                  | `4` / `8` / `12`                                                | `4` / `8` / `12`                                                                |
| **音声トラック**                   | ✅ 同期済み                                                          | ✅ 同期済み                                                                          |
| **画像から動画（input\_reference）** | ✅                                                               | ✅                                                                               |
| **通常の生成時間**                  | 3〜5分                                                            | 5〜10分                                                                           |
| **動画保持期間**                   | 1日                                                              | 1日                                                                              |
| **レスポンスフィールド**               | `id` / `status` / `progress`; `/v1/videos/{id}/content` でダウンロード | 同じです                                                                            |

## APIエンドポイント

| エンドポイント                         | メソッド | 用途                                     | Content-Type                                |
| ------------------------------- | ---- | -------------------------------------- | ------------------------------------------- |
| `/v1/videos`                    | POST | 動画生成タスク（テキストから動画への変換と画像から動画への変換）を送信します | `application/json` or `multipart/form-data` |
| `/v1/videos/{video_id}`         | GET  | タスクのステータスと進捗をポーリングします                  | —                                           |
| `/v1/videos/{video_id}/content` | GET  | 生成された動画ファイルをダウンロードします                  | —                                           |

<Tip>
  **ドメインオプション**: `api.apiyi.com` が主要なエンドポイントです。`vip.apiyi.com` / `b.apiyi.com` は、同一の動作を持つ同等のバックアップゲートウェイです。
</Tip>

## キーパラメータ

### `seconds`（動画の長さ）

数値ではなく、文字列型の enum 値は 3 つだけです。

| 値      | 意味     | 用途                        |
| ------ | ------ | ------------------------- |
| `"4"`  | 4秒（既定） | 短いデモ、単発ショット、prompt の素早い反復 |
| `"8"`  | 8秒     | 標準的なショートフォーム動画、SNS クリップ   |
| `"12"` | 12秒    | 長回し、連続アクション、物語性のあるシーケンス   |

<Warning>
  `seconds` は **string** として `"4"` / `"8"` / `"12"` に渡す必要があります。整数の `4` や、`"10"` / `"15"` のような他の値を渡すと 400 が返ります。
</Warning>

### `size`（出力解像度）

対応するティアは `sora-2` と `sora-2-pro` で異なります。

| ティア             | ピクセル数       | sora-2 | sora-2-pro     |
| --------------- | ----------- | ------ | -------------- |
| 720p Portrait   | `720x1280`  | ✅      | ✅ (\$0.30/sec) |
| 720p Landscape  | `1280x720`  | ✅      | ✅ (\$0.30/sec) |
| 1024p Portrait  | `1024x1792` | ❌      | ✅ (\$0.50/sec) |
| 1024p Landscape | `1792x1024` | ❌      | ✅ (\$0.50/sec) |
| 1080p Portrait  | `1080x1920` | ❌      | ✅ (\$0.70/sec) |
| 1080p Landscape | `1920x1080` | ❌      | ✅ (\$0.70/sec) |

<Warning>
  * 1024p / 1080p のサイズを `sora-2` に渡すと 400 が返ります
  * sora-2 の 720p 動画の実際のレンダリング後の縦方向ピクセル数は **704**（720 ではありません）です。これは OpenAI の実際のアップストリームの挙動であり、表示には影響しません
  * **image-to-video では、`input_reference` の画像サイズが `size` と完全に一致していなければなりません**。一致しない場合、`Inpaint image must match the requested width and height` になります
</Warning>

## ベストプラクティス

<Steps>
  <Step title="用途に合うモデルを選ぶ">
    * **コスト重視** → `sora-2` (720pのみ、\$0.10/sec、4秒クリップで\$0.40)
    * **1080p フルHD / 最強の指示追従が必要** → `sora-2-pro` (最大 \$0.70/sec、`1920x1080` に対応)
    * **社内デモ / 初期の反復** → `sora-2` 4秒から始める
  </Step>

  <Step title="尺を伸ばす前に4秒で検証する">
    各新しい prompt はまず `seconds: "4"` で実行し、カメラの向き、スタイル、全体構図を確認してください（約3分、\$0.40）。見た目が固まってから 8 / 12 秒に延ばします。
  </Step>

  <Step title="先に従量課金に切り替える">
    APIYI コンソールで、API Key を **従量課金** にし、**Sora2官转 (Sora2 Official)** グループを設定してください。リクエストごとの課金グループは公式リレーチャンネルにルーティングできません。
  </Step>

  <Step title="同期待機ではなく、非同期ポーリングを使う">
    公式リレーチャンネルは **非同期専用** です。POST して `video_id` を取得し、`/v1/videos/{id}` を10〜30秒ごとにポーリングして `status: "completed"` になるまで待ち、その後 `/v1/videos/{id}/content` からダウンロードします。
  </Step>

  <Step title="クライアントのタイムアウトを30秒以上に設定する">
    POST 自体はタスクをキューに入れるだけで、生成が終わるまでブロックしません。multipart `input_reference` アップロードでは、大きな画像で接続時間が延びるため、まずは30秒のタイムアウトから始めてください。
  </Step>

  <Step title="動画はすぐにダウンロードする">
    動画は OpenAI のサーバーに **1日間のみ** 保持されます。それ以降は、`/content` が 404 を返します。本番フローでは、`status: "completed"` したらすぐに自前の OSS / CDN に保存してください。
  </Step>

  <Step title="画像から動画へのアップロード前に解像度を合わせる">
    `input_reference` をアップロードする際は、ffmpeg / Pillow で画像を事前に正確なターゲット `size`（たとえば `1280x720`）にトリミングして、400 エラーを避けてください。
  </Step>
</Steps>

## エラーコードと再試行

| ステータス         | 意味                                                                 | 推奨対応                                                |
| ------------- | ------------------------------------------------------------------ | --------------------------------------------------- |
| `400`         | パラメータが無効です（seconds が 4/8/12 以外、size が未対応、input\_reference の寸法が不一致） | パラメータを検証し、参照画像を対象解像度に事前に切り抜いてください                   |
| `401`         | 無効な token                                                          | Bearer Token とグループ設定を確認してください（`Sora2官转` である必要があります） |
| `403`         | コンテンツポリシーによる拒否 / 課金モードが誤っています                                      | prompt を調整し、API Key が従量課金になっていることを確認してください          |
| `429`         | レート制限 / 残高不足                                                       | 指数バックオフを行ってください。チャージ後はすぐに利用できます                     |
| `5xx`         | ゲートウェイ / 上流エラー                                                     | 非同期タスクを 1～2 回再試行してください（課金なし）                        |
| Task `failed` | 生成に失敗しました（主にコンテンツポリシーまたは上流のキャパシティが原因です）                            | prompt を調整して再試行してください。**失敗したタスクは課金されません**           |

<Info>
  **推奨クライアント設定**:

  * POST 送信タイムアウト: **30 秒**（multipart アップロードではより長くしてください）
  * GET ポーリング間隔: **10～30 秒**、最大待機時間 **15 分**（Pro 1080p 12 seconds は 8～10 分かかる場合があります）
  * 5xx および `failed` タスクに対して指数バックオフで再試行します（2 回の再試行を推奨）
  * デバッグのために `x-request-id` レスポンスヘッダーをログに記録してください
</Info>

## FAQ

<AccordionGroup>
  <Accordion title="公式リレーとリバースエンジニアリング版の違いは何ですか？ リバースエンジニアリング版はまだ利用できますか？">
    **公式リレー（このページ）**: OpenAI の`/v1/videos`へ直接転送し、リクエスト/レスポンスのフィールドは上流と一致します。秒単位課金、99.99% の uptime、従量課金グループが必要です。

    **リバースエンジニアリング版**: リバースエンジニアリングされた Sora 2 のインターフェースで、リクエスト単位課金のため安価ですが、OpenAI のリスクコントロール対象です。**2026年1月の OpenAI ポリシー調整以降、無料アカウントは無効化され、APIYI は現在 公式リレー チャンネルのみを提供しています。** 特別な要件がある場合は営業までお問い合わせください。
  </Accordion>

  <Accordion title="なぜ従量課金に切り替える必要があるのですか？">
    公式リレーチャンネルは **実際の OpenAI 利用秒数** で精算されるため、リクエスト単位とは課金の軸が異なります。APIYI コンソールで API Key を **従量課金** + **Sora2公式リレーグループ** に切り替えるとこの経路を利用できます。リクエスト単位グループでは 403 になります。
  </Accordion>

  <Accordion title="なぜ非同期のみなのですか？ 同期ストリーミングのオプションはありますか？">
    公式 `/v1/videos` エンドポイント自体が **非同期タスクベース** であり、SSE や WebSocket のストリーミングはありません。4秒クリップの生成には通常 3〜5 分、12 秒では 8〜10 分かかることがあります。同期待機では HTTP 接続が長時間占有されて不安定になるため、必ず POST → ポーリング → ダウンロード の流れを使ってください。
  </Accordion>

  <Accordion title="どの秒数の値がサポートされていますか？ なぜ 10 / 15 を渡せないのですか？">
    OpenAI が公式に公開しているのは `"4"` / `"8"` / `"12"` の enum 文字列値のみです。10 / 15 秒は旧来のリバースエンジニアリング版でのみ使えた非公式な長さであり、**公式リレーではサポートされていません**。コードで `"10"` を渡している場合は、`"8"` か `"12"` に変更してください。
  </Accordion>

  <Accordion title="sora-2-pro 1080p の \$0.70/sec は新しいものですか？">
    はい。OpenAI は最近、`sora-2-pro` を拡張して `1080x1920` / `1920x1080` フルHD を \$0.70/sec に含めました。従来の 720p（\$0.30）と 1024p（\$0.50）のプランは変更ありません。上記の料金表は最新の公式料金を反映しています。
  </Accordion>

  <Accordion title="動画はどのくらい保持されますか？">
    動画は OpenAI のサーバー上に **1日間のみ** 保存されます。有効期限切れ後、`/v1/videos/{id}/content` は 404 / 410 を返します。本番フローでは、`status: "completed"` の直後にすぐダウンロードして、自前の OSS / CDN に保存してください。
  </Accordion>

  <Accordion title="生成に失敗した場合も課金されますか？">
    いいえ。`failed`、コンテンツポリシー違反による拒否、容量エラー、パラメータエラーで終了したタスクはすべて課金されません。**実際に完了し（`status: "completed"`）、動画ファイルを生成したタスクのみが `seconds` レートで課金されます。**
  </Accordion>

  <Accordion title="公式の OpenAI SDK を直接使えますか？">
    はい。OpenAI Python SDK 1.50+ は `videos` 名前空間をサポートしています。`base_url` を `https://api.apiyi.com/v1` に向けてください:

    ```python theme={null}
    from openai import OpenAI

    client = OpenAI(api_key="sk-your-key", base_url="https://api.apiyi.com/v1")
    video = client.videos.create(
        model="sora-2",
        prompt="A golden retriever running on the beach at sunset",
        seconds="8",
        size="1280x720"
    )
    print(video.id, video.status)
    ```
  </Accordion>

  <Accordion title="input_reference は base64 を受け付けますか？">
    いいえ。`input_reference` は **multipart/form-data のファイルアップロードフィールド** であり（`image/jpeg` / `image/png` / `image/webp` を受け付けます）、multipart リクエストが必要です。画像が base64 の場合は、まずデコードして一時ファイルに書き出してください。[画像から動画へ](/ja/api-capabilities/sora-2/image-to-video) を参照してください。
  </Accordion>

  <Accordion title="音声トラックを無効にできますか？">
    **現時点ではできません**。Sora 2 / Pro の出力は同期音声（環境音、セリフ、BGM）をデフォルトで含み、OpenAI はそれを無効化するパラメータを公開していません。音声なしで出力したい場合は、ダウンロード後に `ffmpeg -an` で削除してください。
  </Accordion>

  <Accordion title="実行中のタスクをキャンセルできますか？">
    いいえ。公式 `/v1/videos` エンドポイントにはキャンセル操作がなく、一度送信されたタスクは完了まで実行されます。長時間の実行を無駄にしないよう、まず `seconds: "4"` で prompt を検証してください。
  </Accordion>

  <Accordion title="レート制限はどうなっていますか？">
    上流の OpenAI アカウント階層の制限に従いますが、APIYI のゲートウェイを通して集約されるため、通常利用では目立ったボトルネックはありません。**エンタープライズのバッチ要件**（同時実行数 10 超、1日 100 クリップ超）がある場合は、専用リソースプールについて営業までお問い合わせください。
  </Accordion>

  <Accordion title="複数のタスクを並列で実行できますか？">
    はい。各 POST `/v1/videos` は独立した `video_id` を返します。送信とポーリングを並列で行い、ポーリングの集中を避けるために video\_id のリストはタスクキューで管理してください。
  </Accordion>
</AccordionGroup>

## 関連ドキュメント

* [Text-to-Video Playground](/ja/api-capabilities/sora-2/text-to-video) — `POST /v1/videos` (JSON) の対話型デバッガー、5言語サンプル付き
* [Image-to-Video Playground](/ja/api-capabilities/sora-2/image-to-video) — `POST /v1/videos` (multipart) + `input_reference` のウォークスルー
* [Top-Up Promotions](/ja/faq/recharge-promotions) — ボーナスティアと適用チャネル
* [API Manual](/ja/api-manual) — 一般的なリクエスト、タイムアウト、再試行のガイダンス
* OpenAI 公式モデルページ: `platform.openai.com/docs/models/sora-2`
* OpenAI 公式APIリファレンス: `platform.openai.com/docs/api-reference/videos/create`

<Info>
  APIYI の Sora 2 は、安定した公式リレーサービスのために、認可済みの Plusティアアカウントプールを通じて提供されます。レスポンスフィールド、エラーコード、課金の各項目は OpenAI と完全に一致するため、既存コードにそのまま差し込んで互換利用できます。フィードバックがある場合は、コンソールからチケットを起票してください。
</Info>
