# Seedance 2.5 · Token — /videos/generations

実際の動画トークン数で課金する非同期動画生成です。ドラフトと高画質化は別々の有料ジョブです。参照動画のトークンも含みます。返されたゲートウェイのジョブIDを照会してください。クライアントのタイムアウト後に再送しないでください。 コンテンツ審査があります。無審査モードは提供していません。 BytePlusの公開国際USD料金の約95%を、小数点以下1桁に四捨五入した料金です。 通常はMP4。MOVはダウンロードと対応プレーヤーが必要な場合があります。

**エンドポイント:** `POST https://nezhagate.com/v1/videos/generations`

## 認証
```
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## リクエストボディ
| パラメータ | 種別 | 必須 | 説明 |
| --- | --- | --- | --- |
| `model` | string | はい | seedance-2.5-token |
| `prompt` | string | いいえ | テキストプロンプト。promptかcontentのいずれかを使用します。ドラフトの高画質化以外では必須です。 |
| `content` | array | いいえ | text/image_url/video_url/audio_urlブロック。HTTPS参照URLで最大30画像、10動画、10音声。供給元の素材IDは受け付けません。 |
| `duration` | integer | いいえ | 4～30秒、既定は5秒。高画質化では指定しません。 |
| `resolution` | string | いいえ | 480p / 720p（既定）/ 1080p。ドラフトは480pが必須です。 ドラフトの高画質化は1080pのみ（既定）です。 |
| `ratio` | string | いいえ | adaptive / 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 |
| `draft` | boolean | いいえ | trueで別料金の480pドラフトを作成します。 |
| `draft_task_id` | string | いいえ | 同じアカウントで完了したTokenドラフトのゲートウェイジョブID。高画質化ではmodel、draft_task_id、resolutionのみを送り、必要に応じてwatermark/callback_urlを追加します。 ドラフトの高画質化は1080pのみ（既定）です。 自分のアカウントで完了したTokenドラフトのみ高画質化できます。秒単位課金、通常の480p動画、外部タスクIDは対象外です。 |
| `output_format` | string | いいえ | mp4 / mov. 通常はMP4。MOVはダウンロードと対応プレーヤーが必要な場合があります。 |

## リクエスト例
```bash
# 1) submit -> 202 {"id":"img_...","status":"queued"}
curl https://nezhagate.com/v1/videos/generations -H 'Authorization: Bearer YOUR_API_KEY' -H 'Content-Type: application/json' -d '{"model":"seedance-2.5-token","prompt":"A sunrise over the sea","duration":5,"resolution":"720p"}'
# 2) poll every ~5s until status=succeeded, then read data[0].url
curl https://nezhagate.com/v1/videos/jobs/img_3f9a...c2 -H 'Authorization: Bearer YOUR_API_KEY'
```

## レスポンス
```json
{"id":"img_example","object":"video.generation.job","status":"queued","model":"seedance-2.5-token"}
```

## コンテンツ要件

Seedance のタスクはすべてコンテンツ審査を通ります。対象はプロンプト、参照素材、生成された動画で、映像も音声も審査されます。審査で不合格になったタスクは `content_policy` で失敗し、課金されません。

### 審査のタイミング

送信時にプロンプトと参照素材が審査され、動画の生成後に映像と音声がもう一度審査されます。そのため不合格の結果は、送信から数秒で返ることもあれば、レンダリングの終了後に返ることもあります（30分以上かかることもあります）。`status` が `failed`、`error.code` が `content_policy` で終わったタスクは審査で不合格です。Webhook では `video.failed` イベントが届きます。

### 課金なし

不合格のタスクは課金されません。送信時に仮押さえした金額はタスク終了時に全額返金され、呼び出しログでも課金なしと表示されます。

### 音声

音声（セリフ、ナレーション、歌、効果音）はプロンプトに沿ってモデルが生成し、映像と一緒に審査されます。プロンプトに書いたセリフ、ナレーション、歌詞は読み上げられたり歌われたりします。人の声が要らない動画なら、プロンプトにセリフや歌詞を書かないでください。音声が不合格の場合、`error.param` は `audio` になり、message に生成された音声か参照音声かが書かれます。

### よく弾かれる内容

- 性的な内容、裸、性的なほのめかし（AI で生成・合成した画像を含む）
- 流血、残虐な描写、自傷、銃撃や出血などの暴力による負傷
- 銃器、爆発物、薬物
- 未成年者を性的に扱う内容は一切不可。未成年者と酒・たばこ・薬物・危険な行為の組み合わせも弾かれます
- 政治家、芸能人、スポーツ選手、経済人など公人の容姿や声（よく似た人物を含む）
- 著作権で保護されたキャラクターや IP（ディズニーやマーベルのキャラクターなど）
- 憎悪や差別的な内容、フェイクニュース

### 長い絵コンテ台本

違反するカットが1つでもあれば動画全体が弾かれます。長い絵コンテ台本で特に起きやすく、アクションシーンの銃撃戦や出血のアップ、未成年者が飲酒や喫煙をする場面があると全体が失敗します。送信前に台本を通して読み、こうしたカットを削除するか書き直してください。

### 実在の人物

実在の人物の写真を参照に使うには、その人物の肖像を使う権利が必要です。

### 弾かれたあと

同じ内容で再送信しても再び弾かれます。問題になりそうな部分を見つけ、プロンプトを書き直すか参照素材を差し替えてから送信し直してください。

エラーコード: `content_policy` · `status: failed`

## ドラフト → 1080p

自分のアカウントで完了したTokenドラフトのみ高画質化できます。秒単位課金、通常の480p動画、外部タスクIDは対象外です。

480pドラフトを作成し、succeededまで確認します。NezhaGateのジョブIDをdraft_task_idとして通常のTokenモデルに渡すと、元のタスクから1080pの完成動画を生成します。任意のMP4を拡大する機能ではありません。prompt、content、duration、ratio、seed、generate_audioは再送しないでください。ドラフトと完成動画は別料金です。

`POST /v1/videos/generations`

```json

{
  "model": "seedance-2.5-token-draft",
  "prompt": "A sunrise over the sea",
  "duration": 5,
  "resolution": "480p"
}

```

`GET /v1/videos/jobs/{draft_job_id}`

`POST /v1/videos/generations`

```json

{
  "model": "seedance-2.5-token",
  "draft_task_id": "<completed NezhaGate draft job ID>",
  "resolution": "1080p"
}

```

`GET /v1/videos/jobs/{new_job_id}`

`data[0].source_url` — 動画サービスが返す元リンクには有効期限がある場合があります。早めに保存するか、当サイトの元ファイルをダウンロードしてください。

## 参照素材の準備

API：ローカルファイルを公開HTTPSストレージにアップロードし、contentにimage_url、video_url、audio_urlを指定します。処理中はリンクを有効に保ってください。NezhaGateが素材ライブラリに取り込み、全素材がActiveになってから生成します。実在人物の参照も同様です。アップロード完了は準備完了ではありません。別の素材API呼び出しは不要です。

Playground：ファイル選択 → アップロード進捗 → 素材準備 → 利用可能 → 予約残高を確認して生成。APIでは両段階ともGET /v1/videos/jobs/{id}で同じタスクを確認します。タイムアウトだけで失敗とは判断せず、再送前に状態を確認してください。失敗した参照リンクは修正してから新規送信します。

画像30枚、動画10本、音声10件、合計50件まで。参照動画の合計30秒、音声の合計30秒まで。Webアップロードは画像<30MB、動画50MB、音声15MB。API JSONにはHTTPS URLを指定し、ローカルパスやバイナリは使えません。 元画像を保持。1枚30MB未満、各辺301–5999px、比率0.4–2.5。人物素材は準備完了が必要です。 通常はMP4。MOVはダウンロードと対応プレーヤーが必要な場合があります。

```json

{
  "model": "seedance-2.5-token",
  "content": [
    {
      "type": "text",
      "text": "The character from @Image1 walks by the sea."
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/reference.jpg"
      }
    }
  ],
  "duration": 5,
  "resolution": "720p"
}

```

## タスク状態のポーリング

同じBearer APIキーでGET /v1/videos/jobs/{id}を3～5秒ごとに確認します。所有アカウントのみ参照可能です。statusは従来どおり：queued / processingは継続、succeededはdata[0].url、failedはerrorを読みます。progressはToken用の追加項目です。項目の欠落や将来の未知のフェーズにも対応してください。

phaseは処理段階であり、進捗率や残り時間ではありません。ready / totalは重複を除く準備済み／必要な参照素材数です。テキストのみや高画質化では0も正常です。labelとdetailは英語の表示文で、条件判定には使いません。terminalは最終状態に対応し、failed_stageは失敗以外nullです。復旧時に段階が省略・反復する場合があります。

submitted=trueは生成ID確認済み、falseは送信開始前、nullは送信開始後の結果未確定です。nullやタイムアウトで自動再送しないでください。reservation_released=trueは費用0の解放記録を確認済み、falseは課金済みを意味しません。updated_atはタスク記録の更新時刻、job_idはNezhaGateのIDです。

パラメータ、残高、プロンプトの事前拒否はタスク作成前のHTTPエラーで、確認するIDはありません。事前審査通過は最終承認を保証しません。素材の取り込み・審査失敗は生成を止め、failedとerrorを返します。一時的な通信失敗は間隔を延ばし同じIDを確認します。途中段階のWebhookは追加されません。

```http
GET /v1/videos/jobs/img_example
Authorization: Bearer YOUR_API_KEY
```

| progress.phase | |
| --- | --- |
| queued | 処理待ち |
| preparing | 参照素材を準備中 |
| reviewing | 参照素材を審査中 |
| submitting | 生成リクエストを送信中 |
| provider_queued | 生成待ち |
| generating | 動画を生成中 |
| delivering | 動画を保存中 |
| succeeded | 完了 |
| material_failed | 素材が拒否されたか取り込みに失敗 |
| submission_failed | 生成リクエスト送信失敗または未確認 |
| generation_failed | 動画生成失敗 |
| delivery_failed | 結果の保存失敗 |
| failed | タスク失敗 |

```json
{
  "id": "img_example",
  "object": "video.generation.job",
  "status": "processing",
  "created": 1792800000,
  "model": "seedance-2.5-token",
  "progress": {
    "phase": "reviewing",
    "label": "Reviewing references",
    "detail": "References ready: 3 / 5",
    "ready": 3,
    "total": 5,
    "terminal": false,
    "failed_stage": null,
    "submitted": false,
    "reservation_released": false,
    "updated_at": "2026-10-24T05:00:00+00:00",
    "job_id": "img_example"
  }
}
```