ドキュメントへスキップ
このページの内容

Seedance 2.0

Seedance 2.0 を使用して、テキスト、最初と最後のフレーム、またはマルチモーダルな参照データから動画を生成します。このページでは、このモデルにおけるリクエストの送信から生成結果の受け取りまでの一連のワークフローを解説します。

APIモデルID: seedance-2-0

動画生成は非同期で行われます。タスク作成時に返される taskId を保存し、そのステータスを確認するか、ウェブフックで結果を受け取ってください。

対応機能

機能対応している値
出力解像度480p · 720p · 1080p · 4k
出力時間4〜15 秒
アスペクト比16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
参照画像画像は9枚まで
参照動画動画は3本まで
参照音声ファイル音声ファイルは3個まで
参照ファイルの合計数参考ファイルは最大12個まで
動画/音声グループごとの合計再生時間15 秒
seed-1 から 4294967295 まで

料金とクレジット

動画生成の料金は、課金対象となる秒単位の長さに基づいて、クレジットで請求されます。動画の入力がない場合、課金対象は出力された動画の長さとなります。動画の入力がある場合は、参照動画の長さも課金対象に加算されます。

以下の表は、1秒あたりに消費されるクレジット数を示したものであり、タスク全体の総コストではありません。料金レートは、モデル、出力解像度、およびビデオ・ツー・ビデオ(V2V)モードで参照動画が提供されているかどうかによって異なります。総コストの計算方法については、表の下にある計算式と例をご参照ください。

出力解像度動画入力なし動画入力あり
480p6クレジット/秒4クレジット/秒
720p12クレジット/秒8クレジット/秒
1080p30クレジット/秒20クレジット/秒
4k70クレジット/秒40クレジット/秒
  • 動画入力なしの場合:出力秒数 × 動画入力なしの単価
  • 動画入力ありの場合:(出力秒数 + 検出された参照動画の秒数)× 動画入力ありの単価。サーバー側で参照動画の合計再生時間を測定し、1秒未満を切り上げた秒数に基づいて課金します。
  • 画像または音声のみを参照させる場合は、動画入力なしの単価が適用されます。動画入力ありの課金単価は、reference-to-video モードで参照動画が実際に提供された場合にのみ適用されます。

料金の計算例

5秒間の720p動画(テキストから動画):5 × 12 = 60 クレジット

5秒間の参照動画をもとに、5秒間の720p動画を出力:(5 + 5)× 8 = 80 クレジット

クレジットはリクエスト時に仮確保され、タスクが成功した時点で決済(実売上)されます。失敗またはタイムアウトしたタスクは、返金処理に回されます。課金ステータスが refund_failed になった場合は返金処理が未完了であることを意味します。APIログを確認するか、サポートまでお問い合わせください。

認証

ダッシュボードでAPIキーを作成してください。APIキーの全体が表示されるのは作成時の1回のみです。キーは安全なサーバー上で管理し、すべてのリクエストのヘッダーに Bearer トークンとして含めて送信してください。

ベースURL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

これらのサンプルコードを実行する前に、環境変数 SEEVIO_API_KEY を設定してください。JavaScriptのサンプルはサーバー上の Node.js で、Pythonのサンプルは requests ライブラリを使用して実行します。

クイックスタート

この最小限のリクエストを送信し、返された taskId を保存した上で、後述のタスクステータス確認の例を実行してください。作成レスポンスに含まれる credits の値は、確保(仮売上)されたクレジット量を示しています。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

タスク作成時のレスポンス例

リクエストが承認されると、APIは次のJSONレスポンスを返します。taskIdは、その後のステータス照会に使用するタスク識別子です。creditsは、このタスクに確保されたクレジット数を示します。このレスポンスはタスクの作成が完了したことを示すものであり、動画の生成完了を意味するものではありません。動画の生成結果を取得するには、タスクステータスをポーリングするか、Webhookを使用する必要があります。

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 60
}

タスクの作成

POST https://api.seevio.ai/v1/videos/generations

model と input、および任意で callback_url を含む JSON オブジェクトを送信します。必ずこのページに表示されているモデルIDを指定してください。省略した場合は自動的に seedance-2-0 が選択されます。

リクエストボディ

フィールドデータ型必須説明と制約条件
model
stringはい

モデルID。Seedance 2.0を使用するには、このフィールドをseedance-2-0に設定してください。

callback_url
stringいいえ

タスク完了時または失敗時に POST コールバックを受け取るための、一般公開されている HTTPS エンドポイント。プライベートネットワークや localhost は指定できません。

: https://example.com/webhooks/seevio
input
objectはい

生成の設定。空でないプロンプト(prompt)を含める必要があります。

入力パラメータ

image-to-video では image_urls が必須です。reference-to-video では、image_urls、video_urls、audio_urls のうち、少なくとも1つの参照データが必要です。

image_urls、video_urls、audio_urlsは、URL文字列の配列(string[])として指定してください。指定するすべてのURLは、選択したモードで処理対象外となるメディアも含め、HTTPS経由でパブリックにアクセス可能である必要があります。

フィールドデータ型必須デフォルト値説明と制約条件
input.prompt
stringはい

すべてのモードでプロンプトの入力が必要です。プロンプトは、前後の空白を除いて最大10,000文字まで入力できます。また、空白文字(スペース)のみのプロンプトは使用できません。

: A cat surfing at sunset
input.generation_type
stringいいえtext-to-video

text-to-video はプロンプトのみを使用し、image-to-video は1〜2枚の画像を使用、reference-to-video は画像、動画、音声などの参照データを使用します。

対応している値
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]条件付き[]

image-to-video:最初のフレームとして1枚の画像、または最初と最後のフレームとして順番に並んだ2枚の画像を指定します。reference-to-video:最大 9 枚の画像を指定できます。text-to-video では無視されます。

: ["https://example.com/first-frame.jpg"]
input.video_urls
string[]条件付き[]

reference-to-video でのみ送信されます。最大 3 件の動画で、合計 15 秒まで指定可能です。他のモードでは無視されます。

: ["https://example.com/source.mp4"]
input.audio_urls
string[]条件付き[]

reference-to-video でのみ送信されます。最大 3 件の音声ファイルで、合計 15 秒まで指定可能です。他のモードでは無視されます。 このモデルでは、音声データのみを参考素材として使用することはできません。audio_urls を指定する場合は、image_urls に少なくとも1つの参照画像を追加するか、video_urls に少なくとも1つの参照動画を追加する必要があります。

: ["https://example.com/music.mp3"]
input.duration
integerいいえ5

4〜15 秒の範囲の整数で出力時間を指定します。

対応している値
4–15
: 5
input.aspect_ratio
stringいいえadaptive

出力動画のアスペクト比。adaptive を指定すると、モデルが最適なアスペクト比を自動で決定します。

対応している値
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
: adaptive
input.resolution
stringいいえ720p

ここに記載されているサポート対象の出力解像度のいずれかを使用してください。

対応している値
480p | 720p | 1080p | 4k
: 720p
input.generate_audio
booleanいいえtrue

同期された音声の生成をリクエストします。

対応している値
true | false
: true
input.watermark
booleanいいえfalse

生成された動画へのAIウォーターマーク(透かし)の挿入をリクエストします。

対応している値
true | false
: false
input.web_search
booleanいいえfalse

モデルが対応している場合に、ウェブ検索を有効にします。

対応している値
true | false
: false
input.return_last_frame
booleanいいえfalse

最終フレームの取得をリクエストします。フレームが利用可能な場合、ステータス確認結果の data.last_frame_url にURLが含まれます。利用できない場合は null になります。

対応している値
true | false
: true
input.seed
integerいいえ-1

-1 から 4294967295 までの整数。-1 を指定するとランダムなシード値が選択されます。

対応している値
-1 から 4294967295 まで
: 42

真偽値のフィールドには、文字列や数値ではなく、JSONの true または false を指定してください。

作成時のレスポンス

HTTP 200 は taskId(文字列)と credits(数値)を返します。これはタスクの作成が受け付けられたことを意味し、生成の完了を示すものではありません。以下のクレジット数は、5秒間の720pクイックスタートに対応する額です。

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 60
}

生成モードとコード例

example.com のメディアURLは、ご自身でホストしている公開済みの HTTPS ファイルのURLに置き換えてください。サンプルのURLはリクエストの構造を示すためのものであり、ダウンロード可能なアセットではありません。

テキストから動画 (Text to Video)

テキストプロンプトから動画を生成します。このモードではメディアURLは送信されません。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

最初のフレーム (First frame)

最初のフレームとして画像を1枚提供し、プロンプトで動画の動きを説明します。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg"
    ],
    "aspect_ratio": "adaptive"
  }
}'

最初と最後のフレーム (First & last frames)

1枚目に最初のフレーム、2枚目に最後のフレームとなるように、順番に2つの画像URLを提供します。この例では、生成された動画の最終フレーム画像もリクエストしています。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg",
      "https://example.com/last-frame.jpg"
    ],
    "aspect_ratio": "adaptive",
    "return_last_frame": true
  }
}'

マルチモーダル参照

画像、動画、音声の参照データを組み合わせます。プロンプトの指定は必須です。参照動画を入力すると料金の算出方法が変わります。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/camera.mp4"
    ],
    "audio_urls": [
      "https://example.com/ambience.mp3"
    ],
    "aspect_ratio": "adaptive"
  }
}'

タスクのステータス確認

GET https://api.seevio.ai/v1/tasks/{taskId}

サンプルのIDを、作成時に返された taskId に置き換えてください。ステータス確認は、そのAPIキーを所有するユーザーのタスクのみ可能です。権限がない、または存在しないIDの場合は HTTP 404 が返されます。

最初は10〜20秒間隔でポーリングを開始し、HTTP 429(レートリミット)が発生した場合は間隔を空け、ステータスが completed または failed になったら終了します。本番環境ではウェブフックの使用を推奨します。以下の各コード例は、1回のステータス確認リクエストを行うものです。

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
ステータス説明と制約条件
queued受け付けられ、処理待ちの状態です。
generating動画を生成中です。
completed生成成功(最終状態)。有効期限が切れる前に data.results から動画をダウンロードしてください。
failed生成失敗(最終状態)。failed_reason と billing_status を確認してください。
フィールドデータ型説明と制約条件
idstring
タスク識別子。作成時のレスポンスに含まれる taskId と同一です。
created_atnumber
Unixタイムスタンプ(秒)で表されるタスク作成日時。
modelstring
このタスクに使用された公開モデルのID。
billing_statusstring
reserved(仮確保)、charged(決済完了)、refunded(返金済み)、または refund_failed(返金失敗)。
creditsnumber
このタスクのために仮確保されたクレジット。返金された後もこの値は保持されます。実際の課金結果を判断するには billing_status を参照してください。
failed_reasonstring | null
タスクが失敗した場合のエラー理由。それ以外は null。ステータス確認時にタスクが失敗している場合、レスポンスに data は含まれません。
dataobject
タスクが失敗していない場合に返されます。出力結果と処理の詳細が含まれます。
data.resultsstring[]
動画URLの配列。生成が完了するまで、または動画の有効期限が切れた後は空になります。
data.video_expires_atstring | null
ISO 8601 形式のタイムスタンプで表される動画の有効期限。まだ利用できない場合は null。この期限までに結果を保存してください。
data.last_frame_urlstring | null
最終フレームがリクエストされ、取得可能な場合はそのURL。それ以外は null。
data.processing_timenumber | null
プロバイダー側での処理時間(秒)。取得できない場合は null。

タスク完了時:動画生成結果を含むクエリレスポンス

クエリのレスポンスとしてstatus=completedが返された場合は、動画の生成が完了しています。data.resultsから動画のURLを取得し、data.video_expires_atの期限までにダウンロードしてください。billing_status=chargedは、確保されていたクレジットの決済が確定したことを示します。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "completed",
  "billing_status": "charged",
  "credits": 60,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

タスク失敗時:エラー原因と決済詳細を含むクエリレスポンス

クエリのレスポンスとしてstatus=failedが返された場合は、動画生成が正常に終了しなかったことを意味します。失敗の理由はfailed_reasonで、返金結果はbilling_statusで確認できます。この例では、refundedとなっておりクレジットが返却されたことを示しています。creditsには最初に確保された額がそのまま表示され、レスポンスにdataは含まれません。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 60,
  "failed_reason": "provider_failed"
}

ウェブフック

作成リクエスト時に callback_url を設定すると、タスクが完了または失敗した際、JSONデータが POST リクエストで送信されます。受信側は15秒以内に 2xx レスポンスを返してください。配信に失敗した場合は再試行されます。同一のタスクIDで重複してコールバックを受信することがあるため、冪等(べきとう)な処理を行ってください。

コールバックエンドポイントは、JSON形式のリクエストボディ(Content-Type: application/json)を含むPOSTリクエストを受け付ける必要があります。

コールバックを指定してタスクを作成

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

ウェブフックのペイロードはステータス確認時のレスポンスと異なり、billing_status と credits が除外されます。失敗の詳細は data.failed_reason および data.credits_refunded に含まれます。ウェブフックの created_at は、イベントが生成されたUnixタイムスタンプ(秒)です。

タスク完了:処理成功時のコールバックペイロード

生成が成功すると、コールバックのステータスは「status=completed」になります。idでタスクを特定し、data.resultsから動画のURLを取得してください。data.video_expires_atの期限が切れる前に、結果をダウンロードして保存してください。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "completed",
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

タスク失敗:処理失敗時のコールバックペイロード

生成が失敗すると、コールバックのステータスは「status=failed」になります。idでタスクを特定し、data.failed_reasonで失敗の理由、data.credits_refundedで返還されたクレジット数を確認してください。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 60
  }
}

レシーバーの実装例

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData.data;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

このNext.jsのサンプルコードは、JSON形式のコールバックボディを読み込み、成功したタスクと失敗したタスクを直接処理します。実際のアプリケーション開発では、永続化処理やタスクIDの重複排除を追加してください。また、時間のかかる処理はキューに登録してから、コールバックへの応答を返すようにしてください。

メディア要件と制限事項

  • すべてのメディアURLおよびコールバックURLは、一般公開されている HTTPS URLである必要があります。localhost、プライベートIP、クッキーやログインが必要なファイルは避けてください。参照動画・音声のURLは、直接読み込み可能なメディアファイルである必要があります。
  • reference-to-video モードでは、少なくとも1つの参照データを指定する必要があります。ただし、画像は 9枚、動画は 3件、音声は 3件、合計の参照ファイル数は 12件を超えてはなりません。また、動画および音声の合計再生時間はそれぞれ最大 15秒までです。
  • text-to-video ではすべてのメディア参照が無視されます。image-to-video では、最初と最後のフレーム画像のみが送信され、動画や音声の参照データは無視されます。複数のメディアを組み合わせる場合は reference-to-video を使用してください。
  • Seedance 2.0 モデルにおいて、音声を使用する場合はモデルの互換性のために少なくとも1つの画像または動画と組み合わせてください。音声のみの構成例は、Seedance 2.5 のページに掲載されています。

画像要件

  • 画像ファイルサイズは1点あたり30 MB未満にする必要があります。
  • 対応フォーマット:jpeg、png、webp、bmp、tiff、gif
  • アスペクト比(幅 ÷ 高さ):0.4〜2.5(両端の値を含む)
  • 幅と高さは、それぞれ300〜6,000ピクセルの範囲内(両端の値を含む)にする必要があります。

動画要件

  • 対応フォーマット:mp4、mov
  • 動画ファイルサイズは1点あたり100 MB以下にする必要があります。
  • フレームレート:24〜60 FPS(両端の値を含む)
  • アスペクト比(幅 ÷ 高さ):0.4〜2.5(両端の値を含む)
  • 総ピクセル数(幅 × 高さ):407,696〜8,295,044(両端の値を含む)。例えば、614 × 664 = 407,696や3,326 × 2,494 = 8,295,044が該当します。これらは総ピクセル数の例であり、幅と高さの要件自体を固定するものではありません。

音声要件

  • 対応フォーマット:wav、mp3
  • 音声ファイルサイズは1点あたり15 MB以下にする必要があります。

エラー

HTTPエラーは、code と message を含む error オブジェクトを返します。正常に受け付けられたタスクであっても後から失敗することがあるため、タスクのステータスを確認するか、失敗時のコールバックを適切に処理してください。

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPフィールド対処方法
400invalid_request
JSONの構文、プロンプトの有無、パラメータの範囲、またはメディアURLに問題があります。修正して再試行してください。
401invalid_api_key
Bearer トークンが正しいか、およびAPIキーが有効化されているかを確認してください。
402insufficient_credits
クレジットを追加するか、タスクの消費想定を減らしてください。レスポンスには、必要なクレジット数と現在の保有クレジット数が含まれる場合があります。
403forbidden
エラーメッセージに記載されているアカウントレベルの制限事項を確認してください。
404not_found
タスクIDが正しいか、およびそのキーがタスクの作成者と一致しているかを確認してください。
429rate_limited
Retry-After ヘッダーに示された秒数が経過した後に再試行してください。
500internal_error
エラーメッセージとAPIログを確認してください。注意深く再試行してください。作成リクエストを再送信すると、新たに課金対象となるタスクが作成される可能性があります。

レートリミット

タスクの作成:デフォルトでは、APIキー1つにつき1分あたり最大100回のリクエストが可能です。現在、カスタムレート制限の設定はご利用いただけません。

タスクの照会:デフォルトでは、APIキー1つにつき1分あたり最大120回のリクエストが可能です。照会リクエストとタスク作成リクエストは別々にカウントされます。

HTTP 429 レスポンスの Retry-After は、タスク作成時には 60、タスク確認時には 5 が設定されます。エクスポネンシャルバックオフなどの仕組みを導入し、必要以上の頻度でポーリングを行わないようにしてください。