TL;DR (要約)
Seedance 2.0 APIは2026年4月2日にVolcengine Arkを通じてリリースされました。動画生成タスクをPOSTリクエストで送信し、ステータスが「succeeded」になるまでGETエンドポイントをポーリングします。このAPIは、テキストから動画、画像から動画、最初と最後のフレーム制御、マルチモーダル参照、ネイティブ音声生成をサポートしています。5秒の1080p動画の費用は約0.93ドルです。動画は24時間以内にダウンロードしてください。その後、URLは期限切れになります。
Hypereal AI

はじめに
2026年4月2日、ByteDanceのVolcengine Arkプラットフォームは公式のSeedance 2.0 APIをリリースしました。それ以前は、Seedance 2.0の動画を生成する唯一の方法はウェブコンソールからでした。UIのウォークスルーを示すチュートリアルを見たことがある場合、それらはコンソール向けに書かれたものです。このガイドでは、開発者がプログラムで呼び出せる実際のAPIについて説明します。
この記事では、サポートされているすべての入力タイプ、応答トークン数からの料金計算、および本番環境で発生する可能性のあるエラーについて説明します。
Seedance 2.0とは?
Seedance 2.0は、ByteDanceが提供する動画生成モデルです。これはVolcengine Ark上で、モデルID doubao-seedance-2-0-260128 (標準) および doubao-seedance-2-0-fast-260128 (高速、低品質) として動作します。
このモデルは、バージョン1.5よりも多くの入力タイプをサポートしています。バージョン1.5はテキストから動画、画像から動画に対応していました。バージョン2.0で追加された機能は次のとおりです。
- 最初と最後のフレーム制御(両端の画像を供給)
- マルチモーダル参照入力:画像、動画クリップ、音声ファイルを1つのリクエストで組み合わせる
- 対話、効果音、環境音、音楽を含むネイティブ音声生成
- 8カ国語以上でのリップシンク
- 自然言語プロンプトによるカメラモーション制御(ドリー、トラッキング、クレーンショット)
- 最大2K解像度で最大15秒の長さの動画を出力
このモデルは、1:1から21:9のアスペクト比で24 fpsの動画を出力します。解像度はリクエスト時に選択します。
変更点:ガイドと公式APIの比較
2026年2月のこのサイトのガイドを含む、Seedance 2.0に関する以前の記事は、Volcengine上のSeedance 2.0ウェブコンソールについて説明していました。その時点ではAPIは存在しませんでした。それらのガイドは、ウェブページでプロンプトフィールドに入力し、「生成」ボタンをクリックする手順を説明していました。
2026年4月2日のAPIリリースにより、それが完全に変わりました。これで、任意の言語からAPIを呼び出し、動画生成パイプラインを自動化し、Seedanceを自社製品に統合できるようになりました。このガイドは、開発者向けのあらゆるユースケースにおいて、UIのウォークスルーに取って代わるものです。
前提条件
利用を開始するにはVolcengineアカウントが必要です。volcengine.comで作成してください。アカウントがアクティブになったら、以下のArkコンソールにアクセスしてください。
https://console.volcengine.com/ark/region:ark+cn-beijing/apikey
そこでAPIキーを生成してください。その後、環境変数としてエクスポートします。
export ARK_API_KEY="your-api-key-here"
APIへのすべてのリクエストは、このキーをBearerトークンヘッダーで使用します。
Authorization: Bearer YOUR_ARK_API_KEY
新規アカウントには無料トライアルクレジットが付与されます。これは、支払いを開始する前に、1080pで約8本の15秒の動画生成をカバーします。
テキストから動画:最初のリクエスト
すべてのSeedance API呼び出しのベースURLは次のとおりです。
https://ark.cn-beijing.volces.com/api/v3
テキストから動画へのタスクを送信するには、/v1/contents/generations/tasks にPOSTします。
cURLの例
curl -X POST "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ARK_API_KEY" \
-d '{
"model": "doubao-seedance-2-0-260128",
"content": [
{
"type": "text",
"text": "A golden retriever running through a sunlit wheat field, wide tracking shot, cinematic"
}
],
"resolution": "1080p",
"ratio": "16:9",
"duration": 5,
"watermark": false
}'
APIはすぐにタスクIDを返します。
{"id": "cgt-2025xxxxxxxx-xxxx"}
Pythonの例(公式SDK)
最初にSDKをインストールしてください。
pip install volcenginesdkarkruntime
その後、タスクを送信します。
import os
from volcenginesdkarkruntime import Ark
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
resp = client.content_generation.tasks.create(
model="doubao-seedance-2-0-260128",
content=[
{
"type": "text",
"text": "A golden retriever running through a sunlit wheat field, wide tracking shot, cinematic"
}
],
resolution="1080p",
ratio="16:9",
duration=5,
watermark=False,
)
print(resp.id)
タスクIDを保存してください。ポーリングステップで必要になります。
非同期タスクパターン:送信、ポーリング、ダウンロード
Seedanceの生成は即座には行われません。5秒の1080p動画は通常60〜120秒かかります。APIは非同期タスクのライフサイクルでこれを処理します。
queued -> running -> succeeded
-> failed
-> expired
-> cancelled
ステータスが queued または running から変わるまでGETエンドポイントをポーリングします。
完全なPythonポーリングループ
import os
import time
import requests
from volcenginesdkarkruntime import Ark
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
# Step 1: submit
resp = client.content_generation.tasks.create(
model="doubao-seedance-2-0-260128",
content=[
{"type": "text", "text": "Aerial shot of a mountain lake at sunrise, slow dolly forward"}
],
resolution="1080p",
ratio="16:9",
duration=5,
watermark=False,
)
task_id = resp.id
print(f"Task submitted: {task_id}")
# Step 2: poll with exponential backoff
wait = 10
while True:
result = client.content_generation.tasks.get(task_id=task_id)
status = result.status
print(f"Status: {status}")
if status == "succeeded":
video_url = result.content.video_url
print(f"Video URL: {video_url}")
break
elif status in ("failed", "expired", "cancelled"):
print(f"Task ended with status: {status}")
break
time.sleep(wait)
wait = min(wait * 2, 60) # cap at 60 seconds
# Step 3: download immediately
if status == "succeeded":
response = requests.get(video_url, stream=True)
with open("output.mp4", "wb") as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print("Downloaded: output.mp4")
指数バックオフはAPIへの過度な負荷を防ぎます。60秒の上限は、実用的な使用のために十分な頻度でポーリングを維持します。
画像から動画(I2V):静止画のアニメーション化
画像をアニメーション化するには、テキストプロンプトと一緒にcontent配列にimage_urlオブジェクトを追加します。その画像は動画の最初のフレームになります。
resp = client.content_generation.tasks.create(
model="doubao-seedance-2-0-260128",
content=[
{
"type": "text",
"text": "The woman slowly turns her head and smiles at the camera"
},
{
"type": "image_url",
"image_url": {"url": "https://example.com/portrait.jpg"}
}
],
ratio="adaptive",
duration=5,
watermark=False,
)
ratioを"adaptive"に設定すると、モデルは入力画像のネイティブアスペクト比を使用するように指示されます。これにより、意図しないトリミングやレターボックス化を防ぎます。
各画像は30MB未満である必要があります。1つのリクエストで最大9枚の画像を供給できます。
最初と最後のフレーム:開始点と終了点の制御
Seedance 2.0は、最初と最後のフレーム制御をサポートしています。最初のフレーム画像、最後のフレーム画像、およびテキストプロンプトを提供します。モデルは中間のアニメーションを生成します。
これは、製品のトランジション、モーフィング効果、または開始状態と終了状態が分かっているあらゆるシーケンスに役立ちます。
resp = client.content_generation.tasks.create(
model="doubao-seedance-2-0-260128",
content=[
{
"type": "text",
"text": "The flower blooms from bud to full open, macro lens, soft light"
},
{
"type": "image_url",
"image_url": {"url": "https://example.com/flower-bud.jpg"}
},
{
"type": "image_url",
"image_url": {"url": "https://example.com/flower-open.jpg"}
}
],
ratio="adaptive",
duration=8,
watermark=False,
)
テキストプロンプトも存在する場合、モデルは2枚の画像が最初と最後のフレームモードを意味すると推論します。両方の画像を順番に含めます。最初のフレームが先、最後のフレームが後です。
クリップを生成する際にreturn_last_frame: trueを使用することもできます。これにより、動画URLと一緒に最終フレームの画像が返されます。その画像を次のリクエストの最初のフレームとして使用することで、複数のクリップをより長いシーケンスに連結できます。
マルチモーダル参照:画像、動画、音声の組み合わせ
Seedance 2.0の最も強力な追加機能の1つは、画像やテキストと同じリクエストで、動画や音声を参照入力として受け入れられることです。
コンテンツ配列には以下を含めることができます。
- プロンプト用の
{"type": "text", "text": "..."} - 画像用の
{"type": "image_url", "image_url": {"url": "..."}} - 動画参照用の
{"type": "video_url", "video_url": {"url": "..."}} - 音声参照用の
{"type": "audio_url", "audio_url": {"url": "..."}}
リクエストごとの制限:
- 最大9枚の画像(各30MBまで)
- 最大3つの動画クリップ(各2〜15秒、各50MBまで)
- 最大3つの音声ファイル(MP3、各15MBまで)
結合参照の例:
resp = client.content_generation.tasks.create(
model="doubao-seedance-2-0-260128",
content=[
{
"type": "text",
"text": "Match the visual style of the reference clip and add the provided background audio"
},
{
"type": "image_url",
"image_url": {"url": "https://example.com/style-reference.jpg"}
},
{
"type": "video_url",
"video_url": {"url": "https://example.com/motion-reference.mp4"}
},
{
"type": "audio_url",
"audio_url": {"url": "https://example.com/background-music.mp3"}
}
],
duration=10,
ratio="16:9",
watermark=False,
)
動画参照を含めると、料金はV2Vティアに下がり、100万トークンあたり約3.90ドル(6.40ドルから)になります。
ネイティブ音声生成
generate_audio: trueを設定すると、Seedanceは動画と一緒にオーディオトラックを生成します。このモデルは音声と動画を同時に生成するため、サウンドは後から重ねるのではなく、画面上のアクションと一致します。
音声生成は、対話、効果音、環境音、BGMをカバーします。リップシンクは8カ国語以上で機能します。
resp = client.content_generation.tasks.create(
model="doubao-seedance-2-0-260128",
content=[
{
"type": "text",
"text": "A street musician plays guitar outside a cafe in Paris, crowds passing by, city sounds"
}
],
resolution="1080p",
ratio="16:9",
duration=10,
generate_audio=True,
watermark=False,
)
ネイティブ音声生成は、無音動画と比較してトークン消費量がわずかに増加します。これを費用見積もりに含めてください。
解像度、アスペクト比、期間の制御
出力は次の3つのパラメータによって形成されます。
resolution は "480p"、"720p"、"1080p"、または "2K" を受け入れます。デフォルトは"1080p"です。解像度が高いほど、消費されるトークンが増え、コストが高くなります。
ratio は "16:9"、"9:16"、"4:3"、"3:4"、"21:9"、"1:1"、または "adaptive" を受け入れます。入力画像が特殊なアスペクト比である場合は、"adaptive"を使用してください。モデルは画像の寸法を読み取り、それに応じてアスペクト比を設定します。
duration は4から15までの整数を受け入れます。単位は秒です。デフォルトは5です。動画が長いほど、比例してコストが高くなります。
高速モデル(doubao-seedance-2-0-fast-260128)は品質は低いですが、より速く完了します。プロトタイピングやプロンプトの反復作業に使用してください。本番出力には標準モデルに切り替えてください。
他の動画APIではなくSeedance 2.0を選択する場合:ネイティブの音声と動画の同時生成、最初と最後のフレーム制御、またはマルチモーダル参照入力が必要な場合にSeedanceを選択してください。シンプルなテキストから動画への変換のみが必要で、コストが優先事項である場合、このクラスで最も安価なオプションは480pの高速モデルです。
応答からの費用の読み取り
タスクが成功すると、応答にはusageフィールドが含まれます。
{
"usage": {
"completion_tokens": 246840,
"total_tokens": 246840
}
}
トークン消費量は動画の長さと解像度に関連しています。公式ドキュメントからの参照点:15秒の1080p動画は約308,880トークンを消費します。5秒の1080p動画は約102,960トークンを使用します。
1080pでのT2VおよびI2Vの料金は、100万トークンあたり46元(現在の為替レートで100万トークンあたり約6.40ドル)です。
簡単な見積もり:
| 期間 | およそのトークン数 | 費用 (T2V/I2V) |
|---|---|---|
| 5秒 | ~103,000 | ~0.47元 / ~$0.93 |
| 10秒 | ~206,000 | ~9.48元 / ~$1.32 |
| 15秒 | ~309,000 | ~14.21元 / ~$1.97 |
V2Vタスク(動画参照を含むリクエスト)の場合、料金は100万トークンあたり28元(100万トークンあたり約3.90ドル)に下がります。
すべての応答で正確なトークン数を確認し、アプリケーションにコスト追跡機能を組み込むことができます。completion_tokensにタスクタイプごとのレートを乗算します。
重要:動画は24時間以内にダウンロードしてください
成功した応答のvideo_urlはVolcengineオブジェクトストレージを指しています。そのURLはタスク成功後24時間で期限切れになります。その後、URLは403エラーを返し、ファイルは失われます。
ステータスがsucceededに変わったら、すぐにファイルを自分のストレージにダウンロードしてください。前のセクションのポーリングループには、このダウンロードステップが標準的なフローの一部として含まれています。
execution_expires_afterフィールドは、秒単位での有効期限ウィンドウを確認します。172800はタスクレコード自体が48時間を意味します。動画URLは依然として24時間で期限切れになります。24時間ルールを信頼してください。
タスク履歴も過去7日間に制限されています。それより古いタスクを照会することはできません。
ApidogでSeedance APIをテストする方法
非同期タスクパターンには、互いに依存する2つのAPI呼び出しがあります。単一のリクエストでテストを記述することはできません。Apidogのテストシナリオは、連結されたフローでこれを処理します。

具体的な設定は次のとおりです。
ステップ1:テストシナリオの作成
Apidogで「テスト」モジュールに移動し、「Seedance 2.0動画生成」という名前の新しいシナリオを作成します。Apidogの環境設定で環境変数ARK_API_KEYを設定します。キーを参照する場所ではどこでも{{ARK_API_KEY}}を使用します。
ステップ2:送信リクエストの追加
https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasksにカスタムPOSTリクエストステップを追加します。AuthorizationヘッダーをBearer {{ARK_API_KEY}}に設定します。モデルとコンテンツフィールドを含むJSONボディを追加します。
このステップの後、変数抽出プロセッサを追加します。JSONPath式$.idを使用して応答ボディから抽出するように設定します。値をTASK_IDという環境変数に保存します。
ステップ3:待機プロセッサの追加
抽出ステップの後に待機プロセッサを挿入します。遅延を30秒に設定します。これにより、最初のポーリング試行の前にモデルが処理を開始する時間が与えられます。
ステップ4:Forループにポーリングリクエストを追加
最大20回のイテレーションでForループ制御ブロックを追加します。ループ内で:
- 同じAuthorizationヘッダーで
https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks/{{TASK_ID}}にGETリクエストステップを追加します。 - GETリクエストの後に10秒の遅延を持つ待機プロセッサを追加します。
- ループのBreak If条件を
$.status == "succeeded"または$.status == "failed"に設定します。
ステップ5:アサーションの追加
ループ終了後、以下をチェックするアサーションプロセッサを追加します。
$.statusが"succeeded"と等しい$.content.video_urlが空ではない
シナリオを実行すると、Apidogは各ステップ、抽出されたタスクID、すべてのポーリング応答、および最終アサーションが合格したかどうかを示す完全なテストレポートを生成します。
cURLコマンドからSeedanceエンドポイントをテストシナリオステップに直接インポートすることもできます。この方法は、すべてのヘッダーとパラメータを手動で入力することなく、送信およびポーリングリクエストを迅速に追加したい場合に非常に役立ちます。
料金の内訳:10秒の動画の費用
Seedance APIは従量課金制のトークン料金を使用します。最初のトライアル残高を除けば、管理する月額シートやクレジットはありません。
| タスクタイプ | 料金(100万トークンあたり) |
|---|---|
| 1080pでのT2V / I2V | 46元(約6.40ドル) |
| V2V(動画参照入力) | 28元(約3.90ドル) |
1080pでの一般的な期間のおよその費用:
| 期間 | およそのトークン数 | 費用 (T2V/I2V) |
|---|---|---|
| 5秒 | ~103,000 | ~0.47元 / ~$0.93 |
| 10秒 | ~206,000 | ~9.48元 / ~$1.32 |
| 15秒 | ~309,000 | ~14.21元 / ~$1.97 |
新規アカウントは、約8本の15秒のフル動画生成をカバーする無料トライアルクレジットから開始されます。本番ワークロードにコミットする前に、この割り当てを使用してプロンプトや設定を試してみてください。
解像度を下げると、トークン消費量が大幅に削減されます。同じ期間の480p動画は、1080pよりも大幅に安価です。開発は720pから始め、最終出力のみで解像度を上げて使用してください。
よくあるエラーとその解決策
429 Too Many Requests
これは、1分あたりのリクエストレート制限ではなく、同時実行制限に達したことを意味します。同時に実行されているタスクが多すぎます。このステータスコードが表示されたら、指数バックオフを使用してください。最初は10秒待機し、各再試行で2倍にし、最大60秒に制限します。前述のポーリングループにはこのパターンが含まれています。
status: "failed"
タスクの失敗は、モデルが動画を生成できなかったことを意味します。一般的な原因としては、プロンプトが安全フィルターに違反するコンテンツを含んでいた、入力画像が破損していたか大きすぎた、またはパラメータの組み合わせが無効だったなどが挙げられます。入力ファイルとプロンプトを確認し、再送信してください。
status: "expired"
タスクは、キューに長くとどまりすぎて完了しない場合に期限切れになります。これは、ピーク負荷時に発生する可能性があります。タスクを再送信してください。期限切れになったタスクを再開する方法はありません。
video_urlの403エラー
URLが期限切れになりました。ファイルをダウンロードする前に24時間の期間が過ぎました。タスクレコードはAPIに最大7日間残る場合がありますが、動画ファイルは失われます。保存していた場合は、同じパラメータとシード値を使用して再生成する必要があります。
シードの再現性
以前の応答からseed値を保存した場合は、同じパラメータで次のリクエストにそれを渡してください。モデルは同じ出力を再現しようとします。これは、期限切れの動画をまったく同じ結果で再生成するのに役立ちます。
結論
Seedance 2.0 APIは、今日利用可能な最も高性能な動画生成モデルの1つへのプログラムによるアクセスを提供します。非同期タスクパターンは簡単です。タスクを作成するためにPOSTし、成功するまでポーリングし、すぐにダウンロードします。マルチモーダル入力、ネイティブ音声生成、最初と最後のフレーム制御により、ウェブコンソールでは不可能だった動画ワークフローを構築できます。
本番環境に移行する前に、Apidogでテストカバレッジを設定してください。テストシナリオチェーンは、実際のユーザーに影響を与える前に、破損したポーリングロジック、欠落した抽出ステップ、およびURLの有効期限切れの問題を検出します。
ボタン
FAQ
Q: doubao-seedance-2-0-260128とdoubao-seedance-2-0-fast-260128の違いは何ですか?
標準モデルはより高品質な出力を生成し、本番環境のデフォルトです。高速モデルは、視覚的な品質は低いですが、ジョブをより迅速に完了します。プロンプトを反復処理する際には高速モデルを使用し、最終的なレンダリングには標準モデルに切り替えてください。
Q: Seedance 2.0を中国国外で使用できますか?
APIエンドポイントは北京リージョンでホストされています。中国国外の開発者も呼び出すことはできますが、遅延は高くなります。アカウントタイプに関する地理的制限については、Volcengineの利用規約を確認してください。
Q: 複数のクリップを連結して長い動画を作成するにはどうすればよいですか?
各生成でreturn_last_frame: trueを設定します。応答には、動画URLと一緒に最終フレームの画像が含まれます。その画像を次のリクエストの最初のフレームとして渡します。必要なすべてのクリップが揃うまで繰り返し、その後動画編集ライブラリを使用して連結します。
Q: ネイティブ音声生成は費用が高くなりますか?
ネイティブ音声生成は、モデルが動画のみではなく音声と動画を同時に生成するため、トークン消費量がわずかに増加します。generate_audio: trueなしの同じリクエストと比較して、completion_tokensがわずかに増加すると予想されます。
Q: ポーリングではなくウェブフックを設定できますか?
はい。送信リクエストにcallback_urlパラメータを渡します。APIは、ステータスが変更されたときに完了したタスク結果をそのURLにPOSTします。これは、大量のパイプラインの場合、ポーリングよりも効率的です。
Q: 9枚の画像制限を超過するとどうなりますか?
タスクが作成される前に、APIは400検証エラーを返します。コンテンツ配列内の画像数を9枚以下に減らしてください。
Q: シードパラメータはまったく同じ動画を再現することを保証しますか?
シードパラメータは出力の再現性を高めます。パラメータが異なる場合やサーバーサイドのモデルバージョンが変更された場合、完全に同じものが再現される保証はありません。これは利用可能な最も近い近似値です。
Q: 複数のタスクにわたる支出を追跡するにはどうすればよいですか?
各タスクの応答からcompletion_tokensフィールドを読み取り、ご自身のティアのトークンレートを乗算します。これらの値をデータベースにログ記録して、コスト追跡を行います。APIには組み込みの支出ダッシュボードがないため、最初から独自の追跡システムを構築してください。
