Seedance:動画生成 API
Seedance 2.0 / 2.5 で動画を生成します:パラメーター、戻り値、注意事項。
| 項目 | 値 |
|---|---|
| Base URL | https://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-a | 480p / 720p / 1080p | 4〜15 | $4.12〜/ 100 万トークン |
| 2.0 Fast(中国国内) | doubao-seedance-2-0-fast-260128-a | 480p / 720p | 4〜15 | $2.43〜/ 100 万トークン |
| 2.0 Mini(中国国内) | doubao-seedance-2-0-mini-260615-a | 480p / 720p | 4〜15 | $0.824〜/ 100 万トークン |
| 2.5(中国国内) | doubao-seedance-2-5-260628-a | 480p / 720p / 1080p | 4〜30 | $6.18〜/ 100 万トークン |
| 2.0 Standard(海外) | dreamina-seedance-2-0-hcdreamina-seedance-2-0-epdreamina-seedance-2-0-260128 | 480p / 720p / 1080p / 4K | 4〜15 | $2.40〜/ 100 万トークン |
| 2.0 Fast(海外) | dreamina-seedance-2-0-fast-hcdreamina-seedance-2-0-fast-epdreamina-seedance-2-0-fast-260128 | 480p / 720p | 4〜15 | $3.30〜/ 100 万トークン |
| 2.0 Mini(海外) | dreamina-seedance-2-0-mini-hcdreamina-seedance-2-0-mini-epdreamina-seedance-2-0-mini-260615 | 480p / 720p | 4〜15 | $2.10〜/ 100 万トークン |
| 2.5(海外) | dreamina-seedance-2-5-260628 | 480p / 720p / 1080p | 4〜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 または -1 | 2.0: 5、2.5: -1 | 長さ(秒)。-1 でモデルが自動決定 |
resolution | 任意 | モデル表のモデル別の値 | 720p | そのモデルが対応する値を指定 |
ratio | 任意 | 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / 21:9 / adaptive | adaptive | adaptive は参照画像に合わせるかモデルが自動選択 |
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 リファレンス:動画タスクの送信でも確認できます。
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 / heif | mp4 / 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.5 | 0.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.id | HopBase のタスク ID、vt… |
task.status | pending / 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 フィールドは動画生成の概要、公式価格は上のモデル表とモデルカード、実際の請求額はコンソールの「使用記録」で確認できます。
次のステップ
- 動画生成の概要: 動画ファミリーの比較と共通のタスクの流れ
- API リファレンス:動画タスクの送信: リクエストフィールド
- API リファレンス:動画タスクの照会: レスポンスフィールド
- エラーコードと再試行: 各エラーコードの意味と再試行の要否