本文へスキップ

Seedance:動画生成 API

Seedance 2.0 / 2.5 で動画を生成します:パラメーター、戻り値、注意事項。

項目値
Base URLhttps://api.hop-base.com/v1
タスク送信POST /v1/video/generate
タスク照会GET /v1/video/tasks/{task_id}
タスク一覧GET /v1/video/tasks
素材登録(2.0 のみ)POST /v1/sd/assets
キーのプラン中国国内「Seedance 中国版(Doubao)」、海外「Seedance 海外版 · Seedream」

利用できるモデル

バリエーションモデル ID解像度長さ(秒)公式価格
2.0 Standard(中国国内)doubao-seedance-2-0-260128-a480p / 720p / 1080p4〜15$4.12〜/ 100 万トークン
2.0 Fast(中国国内)doubao-seedance-2-0-fast-260128-a480p / 720p4〜15$2.43〜/ 100 万トークン
2.0 Mini(中国国内)doubao-seedance-2-0-mini-260615-a480p / 720p4〜15$0.824〜/ 100 万トークン
2.5(中国国内)doubao-seedance-2-5-260628-a480p / 720p / 1080p4〜30$6.18〜/ 100 万トークン
2.0 Standard(海外)dreamina-seedance-2-0-hc
dreamina-seedance-2-0-ep
dreamina-seedance-2-0-260128
480p / 720p / 1080p / 4K4〜15$2.40〜/ 100 万トークン
2.0 Fast(海外)dreamina-seedance-2-0-fast-hc
dreamina-seedance-2-0-fast-ep
dreamina-seedance-2-0-fast-260128
480p / 720p4〜15$3.30〜/ 100 万トークン
2.0 Mini(海外)dreamina-seedance-2-0-mini-hc
dreamina-seedance-2-0-mini-ep
dreamina-seedance-2-0-mini-260615
480p / 720p4〜15$2.10〜/ 100 万トークン
2.5(海外)dreamina-seedance-2-5-260628480p / 720p / 1080p4〜30$6.40〜/ 100 万トークン

海外 2.5 の 1080p は現在のプランが対応する場合のみ使えます。4K には対応していません。

中国国内向けモデルは Seedance 中国版(Doubao)プランから、海外向けモデルは Seedance 海外版 · Seedreamプランから提供されます。中国国内向けプランは Standard、Fast、Mini、Seedance 2.5 をすべてカバーしており、4K だけが海外向け Standard モデルを必要とします。海外向けプランのキーでは doubao-* ID を呼び出せません。

各モデルの段階別価格と詳細仕様はモデルカードを参照してください。例:dreamina-seedance-2-5-260628、doubao-seedance-2-0-260128-a。

リクエストパラメータ

すべて JSON のトップレベルのフィールドで、parameters の下に入れないでください。整数や真偽値を文字列("5"、"true")で送ったり、整数を小数で送ったりすると拒否されます。リクエストボディ全体の上限は 64 MB で、埋め込みの Data URL も含みます。

パラメータ必須型と制限デフォルト説明
model必須上のモデル表の ID—長さ・解像度・素材の制限が決まります
content必須空でない配列。書き方は下記—プロンプトは text 要素に入れます
duration任意整数。2.0: 4〜15 または -1。2.5: 4〜30 または -12.0: 5、2.5: -1長さ(秒)。-1 でモデルが自動決定
resolution任意モデル表のモデル別の値720pそのモデルが対応する値を指定
ratio任意16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 / adaptiveadaptiveadaptive は参照画像に合わせるかモデルが自動選択
generate_audio任意真偽値2.5: true、2.0: なし2.0 では明示的に送ってください
watermark任意真偽値2.5: false、2.0: なし2.0 では明示的に送ってください
return_last_frame任意真偽値2.5: true末尾フレームがあれば task.last_frame_url を返します。2.0 は保証なし
priority任意整数 0〜9—タスクキューへの優先度ヒント。完了時間は保証されません
execution_expires_after任意整数 3600〜259200(秒)—24 時間の上限は変わりません
callback_url任意HTTP(S) URL—ポーリングの代わりにはなりません
safety_identifier任意ASCII 1〜64 文字—エンドユーザーを識別する固定 ID。不正利用の検知に使われます。個人情報は入れないでください

frames、seed、camera_fixed、draft、draft_task、service_tier は両世代とも拒否されます(400)。全フィールドは API リファレンス:動画タスクの送信でも確認できます。

OpenAI 形式の API から移植するときのよくある誤り:

size、seconds、n、aspect_ratio は Seedance のパラメータではなく、エラーにならず無視され、既定の長さと 720p で生成されます。duration、resolution、ratio を使ってください。

content の要素

content の要素は text / image_url / video_url / audio_url です。

"content": [
  { "type": "text", "text": "草原を走るオレンジ色の猫、カメラが追う" },
  { "type": "image_url", "image_url": { "url": "https://example.com/cat.png" }, "role": "reference_image" },
  { "type": "video_url", "video_url": { "url": "https://example.com/ref.mp4" } },  // role 省略時は reference_video
  { "type": "audio_url", "audio_url": { "url": "https://example.com/ref.mp3" } }   // role 省略時は reference_audio
]

画像の role は first_frame、last_frame、reference_image のいずれかです。

  • 画像が 1 枚で role がなければ先頭フレームとして扱います。
  • 画像が複数枚なら role が必須です。
  • 動画・音声の参照があれば、画像は reference_image 必須です。
  • フレームモードは最大 2 枚(1 枚なら first_frame、2 枚なら first_frame と last_frame を 1 枚ずつ)で、参照と混在できません。
  • Seedance 2.0 の音声参照は画像か動画と併用が必要で、2.5 は音声のみも可です。

画像と音声は base64 Data URL も可、動画は不可です。Seedance 2.0 は準備完了の asset://アセットID も使えます。

参照メディアの仕様

このルールは Seedance 2.0 と 2.5 の国内・海外モデルに適用され、すべての動画モデルに共通ではありません。

送信時にすべての参照メディアをダウンロードして検査し、不適合なら即座に 400(code なし、message で判別)が返り、タスク費用は発生しません。検査を通過したメディアでも、実行段階でコンテンツ審査により失敗することがあります。

項目画像動画音声
数の上限2.0: 9 枚、2.5: 30 枚2.0: 3 本、2.5: 10 本2.0: 3 本、2.5: 10 本
形式jpg / jpeg / png / webp / bmp / tif / tiff / gif / heic / heifmp4 / mov(コンテナは MP4/ISO-BMFF である必要があります)wav / mp3
サイズ30 MiB 未満200 MiB 以下15 MiB 以下
寸法各辺 300〜6000 px各辺 300〜6000 px。総画素数 409,600〜8,295,044-
アスペクト比0.4〜2.50.4〜2.5-
長さ-2.0:2〜15 秒;2.5:2〜30 秒2.0:2〜15 秒;2.5:2〜30 秒
フレームレート-24〜60 FPS-

フレームモードは最大 2 枚です。動画と音声の合計長も 1 本あたりと同じ上限内で、別々に数えます。2.0 では参照動画の合計が 15 秒以下、参照音声の合計も 15 秒以下で、各クリップは 2 秒以上必要です。

出力の duration と参照メディアの長さは別々の制限です。

メディアの URL はパブリックにアクセス可能な http(s) アドレスである必要があります。

  • プライベート / ループバック / リンクローカルアドレスや認証情報を含む URL は拒否されます。
  • リダイレクトは最大 3 回です。
  • 各メディアは 2 分以内にダウンロードと解析を終える必要があります。
  • Data URL は data:<MIME>;base64,… 形式です。

素材庫(Seedance 2.0 のみ)

素材庫は既存の公開素材 URL を登録すると素材 ID を返し、Seedance 2.0 の生成で asset://asset-id として参照します。通常の素材は登録せず直接 URL でも渡せます。

登録。返された data.Id を保存します。受付は準備完了を意味しません。

curl https://api.hop-base.com/v1/sd/assets \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "URL": "https://example.com/your-image.jpg",
    "Name": "character_front",
    "AssetType": "Image"
  }'
{
  "data": {
    "Id": "assetEXAMPLE"
  }
}

準備完了を確認。同じプランのキーで約 5 秒ごとに照会し、タイムアウトを設けてください。data.Status: Active は準備完了です(completed / succeeded も大文字小文字を区別せず対応)。

curl https://api.hop-base.com/v1/sd/assets/assetEXAMPLE \
  -H "Authorization: Bearer sk-your-key"
{
  "data": {
    "Id": "assetEXAMPLE",
    "Status": "Active",
    "AssetType": "Image"
  }
}

処理中は待機します。登録・審査失敗時はエラーを処理して、生成送信や無限ポーリングを避けてください。

参照。完全な data.Id に asset:// を付けて生成の content に入れます。照会結果の URL に置き換えないでください。

curl https://api.hop-base.com/v1/video/generate \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "dreamina-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "The subject waves gently at the camera"
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "asset://assetEXAMPLE"
      },
      "role": "reference_image"
    }
  ],
  "duration": 5,
  "resolution": "720p",
  "ratio": "16:9"
}'

登録リクエストのフィールド:

フィールド必須型と制限デフォルト説明
URL(または url)必須公開 HTTP(S) URL。base64 やマルチパートは不可—ローカルファイルは先にホストしてください
AssetType(または asset_type)必須Image / Video / Audio、大文字・小文字を区別しない—素材の種類。「参照メディアの仕様」で検証されます
Name任意文字列—管理用のラベル。生成には使われません
Duration(または duration / duration_seconds)任意整数の秒数—実際の長さの検査は省略されません

アップロード時にメディアをダウンロードし、「参照メディアの仕様」の 2.0 のルールで検査するため、動画と音声は 2〜15 秒である必要があります。アップロードの 400 には error.code(例: invalid_asset_duration)が付きます。

素材の種類に応じて content 要素を書き換えます。

  • 動画:type: video_url、video_url.url: asset://…、role: reference_video。
  • 音声:audio_url / reference_audio。
  • 最初・最後のフレームには first_frame / last_frame を使用し、マルチモーダル参照と混在させないでください。

素材 ID を書き換えたり、他のプラン・ユーザーと使い回したりしないでください。生成時も状態・種類・数・仕様を検証し、登録しても 2.0 の数量制限や内容審査は免除されません。

レスポンス

送信と単一タスク照会のレスポンスは task で包まれています。トップレベルの id / outputs として読まないでください。

送信レスポンス

送信に成功すると 200 が返り、以降の照会に使う task.id(vt… 形式)が得られます。送信レスポンスに含まれるのは id、model、status(pending または processing)、outputs(常に空)、error、created_at、completed_at のみで、結果は照会で取得します。

{
  "task": {
    "id": "vtEXAMPLE",
    "model": "dreamina-seedance-2-5-260628",
    "status": "pending",
    "outputs": [],
    "error": null,
    "created_at": "2026-09-23T08:00:00Z",
    "completed_at": null
  }
}

タスク照会のフィールド

フィールド説明
task.idHopBase のタスク ID、vt…
task.statuspending / processing / completed / failed のいずれか
task.outputs出力 URL。文字列の配列で、{url} オブジェクトではない
task.duration_seconds動画の秒数。自動の長さのタスクは完了後に読む
task.last_frame_url任意。末尾フレームがあるときのみ。照会のたびに再署名
task.usage.completion_tokens課金対象のトークン数。金額ではない
task.error.message失敗理由。英語で code フィールドはない
task.completed_at完了前は null
usage.cost / usage.cost_cny / usage.cost_usd完了後の実際の請求額。動画生成の概要を参照

task.status は常にこの 4 つのいずれかです。task.outputs は completed のときだけ読んでください。結果リンクの準備ができてから completed になり、このとき outputs が空になることはありません。pending / processing ならポーリングを続けます(推奨は 5 秒ごと)。

480p と 720p は通常 2〜5 分、1080p と 4K はそれ以上かかります。出力 URL はブラウザ再生と Range リクエストに対応し、完了から 30 日で失効します。

処理中

{
  "task": {
    "id": "vtEXAMPLE",
    "model": "dreamina-seedance-2-5-260628",
    "status": "processing",
    "outputs": [],
    "error": null,
    "created_at": "2026-09-23T08:00:00Z",
    "completed_at": null
  }
}

成功

以下は完了タスク(HTTP 200)の抜粋で、ID・URL・使用量は例示です:

{
  "task": {
    "id": "vtEXAMPLE",                       // HopBase のタスク ID
    "model": "dreamina-seedance-2-5-260628",
    "status": "completed",
    "duration_seconds": 5,                   // 自動の長さのタスクは完了後に読む
    "outputs": ["https://api.hop-base.com/example-signed-video.mp4"],  // 文字列の配列。{url} オブジェクトではない
    "last_frame_url": "https://api.hop-base.com/example-signed-last-frame.jpg",  // 任意。末尾フレームがあるときのみ
    "usage": { "completion_tokens": 1000, "total_tokens": 1000 },  // 任意。金額ではなくトークン数
    "error": null,
    "created_at": "2026-09-23T08:00:00Z",
    "completed_at": "2026-09-23T08:03:10Z"   // 完了前は null
  },
  "usage": { "cost": 3.4, "currency": "CNY", "cost_cny": 3.4, "cost_usd": 0.5 }
}

失敗

生成に失敗しても照会は HTTP 200 で、status は failed、理由は task.error.message に入ります。失敗したタスクは課金されません。

{
  "task": {
    "id": "vtEXAMPLE",
    "status": "failed",
    "outputs": [],
    "error": { "message": "<English failure reason>" }
  }
}

message は英語で code フィールドはありません。リンクは [URL_REDACTED] に置き換えられ、リクエスト ID と内部エラーコードは除去されます。理由が得られない場合は汎用の英語メッセージです。

タスク一覧

GET /v1/video/tasks には ?page=1&limit=20 を付けられ、{"tasks": [...], "total": 1, "totalPages": 1} を返します。各要素はタスクオブジェクトです。limit は既定 20、最大 100 で、API から送信したタスクのみを返します。

最小の例

# 1. 送信
curl https://api.hop-base.com/v1/video/generate \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-5-260628",
    "content": [
      { "type": "text", "text": "日差しの草原を走るオレンジ色の猫、カメラが追う" }
    ],
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "generate_audio": false,
    "watermark": false
  }'

# 2. 返ってきた task.id でポーリング(推奨は 5 秒ごと)
curl https://api.hop-base.com/v1/video/tasks/vt-your-task-id \
  -H "Authorization: Bearer sk-your-key"

注意事項

Seedance 2.5 のタスクモード

Seedance 2.5 には明示的な「タスクモード」パラメータがありません。reference_video を含むリクエストは、プロンプトのテキストに基づいて通常生成・動画拡張・動画編集のいずれかに分類されます。「このクリップを続けて」のような継続を示すプロンプトは動画拡張と判定されます。

モード必須の指定
動画編集duration: -1 と ratio: "adaptive"
動画拡張、先頭/末尾フレームratio: "adaptive"
これらは送信時には検証されません:

送信は 200 を返し、ポーリング中に初めて failed になります。課金はありません。参照動画があり、プロンプトが元のクリップの続きと解釈されうる場合は ratio: "adaptive" を送ってください。

エラーは identified your task as video extension based on your prompt のようなメッセージです。Seedance 2.0 には拡張・編集モードがなく、影響を受けません。

実在人物の参照画像

実在人物の参照画像:

実在人物を含む画像を直接(URL または Data URL で)渡すと、送信時に拒否されることがあります。同期的な 4xx で error.code は input_sensitive、message に対処方法が示されます。Seedance 2.0 は素材庫を使ってください。2.5 は素材庫がなく、実在人物の参照はまだ使えません。

Seedance 2.0 では同じ画像を上の「素材庫」で登録し、準備完了後に asset://アセットID で参照して再送信します。実在人物の参照が必要な場合は 2.0 と素材庫を使ってください。登録しても他のコンテンツ審査は免除されません。

タイムアウト、取り消し、結果リンク

  • 作成から 24 時間たっても終わらないタスクは自動的に失敗となり、課金されません。
  • 動画タスクは取り消せません。送信に成功したら再送信しないでください。再送信のたびに別の課金タスクになります。
  • 出力 URL は api.hop-base.com の署名付き URL で、完了から 30 日間有効です。再照会しても延長されず、期限切れの URL は 410 を返します。

海外プランから中国国内プランへの切り替え

中国国内向けプランは、上表の海外 dreamina-* ID を互換エイリアスとしても受け付けます(4K は引き続き拒否されます)。海外から中国国内へ移行する既存のクライアントはキーを差し替えるだけでよく、base_url、API パス、リクエストパラメータ、ポーリングロジックはすべて変わりません。

切り替え後は、新しいキーで GET /v1/models を呼び出して完全なモデル ID を選択してください。以前に送信したタスクは、元のタスク ID のまま引き続き照会できます。

よくあるエラーと対処

他の API からそのまま移した次の 3 つの書き方は、そのまま拒否されます。

書き方直し方
トップレベルの prompt だけを送るプロンプトは content[].text に入れる
image_url を文字列にするオブジェクト {"url": …} にする
type を image / input_image にするimage_url / video_url / audio_url を使う

送信時のパラメータエラー

以下は送信時に同期的に 400 が返り、タスクは作成されず課金もありません。ボディは {"error":{"message":"…","type":"invalid_request_error"}} で code フィールドはないため、message で判別してください(数値や番号はリクエストにより変わります):

# 型と値
duration must be an integer                    # priority / execution_expires_after も同様
watermark must be a boolean                    # generate_audio / return_last_frame も同様
Seedance 2.0 duration must be an integer in 4-15 or -1, got 20
Seedance 2.5 duration must be an integer in 4-30 or -1, got 40
model dreamina-seedance-2-0-hc does not support parameter seed   # 拒否フィールド。リクエストしたモデル ID が入ります
model dreamina-seedance-2-0-hc does not support ratio 2:1
model dreamina-seedance-2-0-fast-hc does not support resolution 1080p
request body must not exceed 64MB
priority must be within 0-9, got 10
execution_expires_after must be within 3600-259200 seconds
callback_url must be a valid http(s) URL
safety_identifier must be an ASCII string of 1-64 characters

# content の構造
missing content                                # トップレベルの prompt だけを送った
content[0].image_url must be an object         # image_url を文字列で送った
content[0].type does not support image         # type を image / input_image にした
content[0].text must not be empty
multi-image scenarios must specify first_frame/last_frame or reference_image roles
images in a multimodal reference scenario must set role=reference_image
first/last frame image-to-video cannot be mixed with the multimodal reference scenario
Seedance 2.0 supports at most 9 reference images

# モデルとプラン
domestic doubao-seedance-2-0-fast-260128-a only supports 480p, 720p, got 1080p
model seedream-5-0-pro is an image generation model, use POST /v1/images/generations instead

次の 2 つは上の 400 とは別です。

エラー直し方
404 The current group does not support the requested model: <モデル ID>キーのプランに含まれないモデル ID(例: 海外プランのキーで doubao-*)。そのモデルを提供するプランのキーを使う
only supports 480p or 720p, got 1080p で終わる海外 2.5 で 1080p を指定し、現在のプランが非対応。自動で下がらないため、720p にするか 1080p 対応のプランを使う

404 は上記の検証より前に返ります。有効な ID は GET /v1/models で確認してください。

参照メディアのエラー

content[1] は content 内の番号です。

content[1] media URL returned HTTP 403        # 取得を拒否された(直リンク防止、署名期限切れなど)
content[1] unable to fetch media file, make sure the URL is publicly accessible
content[1] media URL hostname could not be resolved
content[1] media URL must point to a public address, not a private or reserved one
content[1] too many redirects for media URL
content[1] unable to parse media metadata of the video asset   # ファイル破損または形式違い
content[1] media data URL must be base64-encoded
content[1] image data URL does not support MIME type image/svg+xml
    # 許可: image/jpeg png webp bmp tiff gif heic heif; audio/wav audio/mpeg
content[1] reference image width and height must be within 300-6000 px, got 200x200
content[1] video asset duration must be within 2-15 seconds, got 16.000 seconds
total reference video duration must not exceed 15 seconds, got 18.000 seconds

参照素材を 2 分以内にダウンロード・解析できなかった場合、送信は 503 を返し、code は upstream_timeout です。

media validation timed out, please retry later

サービス側の一時的な状態で、素材の問題ではありません。しばらくしてから同じリクエストを再送信してください。

素材庫の素材を参照したときのエラーも同期的な 400 で、code はありません:

content[1] reference asset is not ready yet, current status is Processing  # 照会を続け、Active になってから送信
content[1] requires a image asset, got Video       # AssetType が image_url / video_url / audio_url と一致しない
content[1] references a retired Seedance 2.5 EP asset; ...  # asset25-* は廃止済み。元の公開 URL を渡す
... cannot be mixed in one task                    # 同じ回に登録した素材だけを参照するか、公開 URL を直接渡す

タスクの失敗理由

OutputVideoSensitiveContentDetected / OutputAudioSensitiveContentDetected  # 出力が審査を通過せず。PolicyViolation は著作権
rejected by content moderation                                             # 生成動画・プロンプト・参照素材がコンテンツ審査を通過せず
InputImageSensitiveContentDetected などの Input…Sensitive…                  # 入力素材が審査を通過せず(実在人物のプライバシーを含む)
InvalidParameter / is not valid / missing required / identified your task as  # パラメータまたはタスクモードが不正
task no longer exists                                                        # タスクが存在しない、または削除済み
task expired / timed out / did not finish within 24 hours                     # タイムアウトまたは期限切れ

審査とパラメータの失敗(上の 4 種類)はそのまま再送信しても再び失敗するため、先にプロンプト・素材・パラメータを直してください。下の 2 種類はそのまま再送信できます。

課金

Seedance は動画トークンで課金され、task.usage.completion_tokens に課金対象のトークン数が入ります。失敗したタスクと送信時の 400 は課金されません。

送信時に見積額分の残高を予約し、タスク終了後に解放します。duration: -1 の場合、2.5 は 30 秒、2.0 は 15 秒分を予約します。残高が少ないときは具体的な秒数を送ると予約額を減らせます。残高のルールと usage.cost フィールドは動画生成の概要、公式価格は上のモデル表とモデルカード、実際の請求額はコンソールの「使用記録」で確認できます。

次のステップ