TL;DR (要約)
Seedance 2.0 APIは2026年4月2日にVolcengine Arkを通じてリリースされました。動画生成タスクをPOSTリクエストで送信し、ステータスが「succeeded」になるまでGETエンドポイントをポーリングします。このAPIは、テキストから動画、画像から動画、最初と最後のフレーム制御、マルチモーダル参照、ネイティブ音声生成をサポートしています。5秒の1080p動画の費用は約0.93ドルです。動画は24時間以内にダウンロードしてください。その後、URLは期限切れになります。
はじめに
2026年4月2日、ByteDanceのVolcengine Arkプラットフォームは公式のSeedance 2.0 APIをリリースしました。それ以前は、Seedance 2.0の動画を生成する唯一の方法はウェブコンソールからでした。UIのウォークスルーを示すチュートリアルを見たことがある場合、それらはコンソール向けに書かれたものです。このガイドでは、開発者がプログラムで呼び出せる実際のAPIについて、実装方法にフォーカスして解説します。
💡 非同期タスクパターンのポイント
このAPIは非同期タスクパターンです。タスクを作成するためにPOSTし、タスクIDを受け取り、ジョブが完了するまでGETエンドポイントをポーリングします。Apidogのテストシナリオを使えば、POST送信→タスクID抽出→GETポーリング→動画URLの検証までシナリオ化できます。Apidogのセクションで具体的なテスト手順を紹介します。
この記事では、すべての入力タイプ、料金算出方法、エラー対応など、実装に必要な知識をまとめています。
Seedance 2.0とは?
Seedance 2.0はByteDanceが提供する動画生成モデルです。Volcengine Ark上で、
- 標準モデル:
doubao-seedance-2-0-260128 - 高速/低品質モデル:
doubao-seedance-2-0-fast-260128として利用できます。
v1.5よりも多くの入力に対応し、以下の特徴があります。
- 最初/最後のフレーム制御(両端画像指定)
- マルチモーダル参照:画像・動画・音声を組み合わせ可能
- ネイティブ音声生成(会話、環境音、効果音、音楽)
- 8カ国語以上のリップシンク
- カメラモーション(ドリー/トラッキング等)制御
- 最大2K/15秒の動画出力
- 1:1~21:9のアスペクト比、24fps
変更点:ガイドと公式APIの比較
2026年2月以前の記事は、VolcengineのWebコンソール手順のみを扱っていました。
2026年4月からはAPIが登場し、プログラムから任意の言語で動画生成パイプラインを自動化できるようになりました。本記事はAPI実装に絞って解説します。
前提条件
- volcengine.comでVolcengineアカウントを作成
- ArkコンソールでAPIキーを生成
https://console.volcengine.com/ark/region:ark+cn-beijing/apikey
- APIキーを環境変数に設定
export ARK_API_KEY="your-api-key-here"
- Bearerトークンとしてリクエストヘッダーにセット
Authorization: Bearer YOUR_ARK_API_KEY
- 新規アカウントには無料トライアルクレジット付与(1080pで約8本の15秒動画生成分)
テキストから動画:最初のリクエスト
ベースURL:
https://ark.cn-beijing.volces.com/api/v3
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
}'
レスポンス(タスク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を保存し、後述のポーリングで使用します。
非同期タスクパターン:送信、ポーリング、ダウンロード
生成には時間がかかります(例:5秒の1080pで60〜120秒)。
タスクの状態遷移は以下の通りです。
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)
# 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")
指数バックオフ(最大60秒)はAPI負荷抑制に有効です。
画像から動画(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枚
最初と最後のフレーム:開始点と終了点の制御
最初・最後のフレーム制御例:
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,
)
両端画像+テキストで、中間アニメーションを生成します。
return_last_frame: trueを指定すると、最終フレーム画像も取得でき、次回リクエストの初期フレームとして活用可能です。
マルチモーダル参照:画像、動画、音声の組み合わせ
content配列で以下の型を混在可能:
- テキスト:
{"type": "text", ...} - 画像:
{"type": "image_url", ...} - 動画:
{"type": "video_url", ...} - 音声:
{"type": "audio_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: 約3.90ドル/100万トークン)。
ネイティブ音声生成
generate_audio: trueを指定すると、音声付き映像を生成します。
リップシンクや環境音も自動生成。
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,
)
トークン消費は若干増加します。
解像度、アスペクト比、期間の制御
-
resolution:
"480p","720p","1080p","2K"(デフォルト"1080p"、高いほど高コスト) -
ratio:
"16:9","9:16","4:3","3:4","21:9","1:1","adaptive" - duration: 4~15(秒、デフォルト5)
高速モデルはプロンプト試行に、本番は標準モデル推奨。
応答からの費用の読み取り
成功時のレスポンス例:
{
"usage": {
"completion_tokens": 246840,
"total_tokens": 246840
}
}
- 15秒/1080p: 約308,880トークン
- 5秒/1080p: 約102,960トークン
| 期間 | およそのトークン数 | 費用 (T2V/I2V) |
|---|---|---|
| 5秒 | ~103,000 | ~0.47元 / ~$0.93 |
| 10秒 | ~206,000 | ~9.48元 / ~$1.32 |
| 15秒 | ~309,000 | ~14.21元 / ~$1.97 |
V2V: ~3.90ドル/100万トークン。
completion_tokensでコスト追跡可能です。
重要:動画は24時間以内にダウンロード
video_urlは24時間で失効。
完了したら即ダウンロードしてください。
execution_expires_afterはタスク自体の有効期間(例:48時間)ですが、動画URLは24時間のみ。
ApidogでSeedance APIをテストする方法
非同期タスクパターンは、POSTとGETの連携が必要です。Apidogの「テストシナリオ」機能で自動化できます。
具体的な流れ:
ステップ1:テストシナリオ作成
- 「テスト」→新規シナリオ(例: Seedance 2.0動画生成)
- 環境変数
ARK_API_KEYを設定({{ARK_API_KEY}}で参照)
ステップ2:送信リクエスト追加
- POST
/contents/generations/tasks - Authorization:
Bearer {{ARK_API_KEY}} - JSONボディでモデル/コンテンツ指定
ステップ3:タスクID抽出
- 応答の
$.idをTASK_ID環境変数に抽出
ステップ4:待機
- 30秒の遅延を追加(モデル初期処理用)
ステップ5:Forループでポーリング
- 最大20回
- GET
/contents/generations/tasks/{{TASK_ID}} - 10秒遅延
- Break条件:
$.status == "succeeded"または"failed"
- GET
ステップ6:アサーション追加
$.status == "succeeded"-
$.content.video_urlが空でない
Apidogは各ステップ・抽出・テスト結果をレポート化します。
cURLコマンドからのインポートもサポート。
料金の内訳:10秒の動画の費用
| タスクタイプ | 料金(100万トークンあたり) |
|---|---|
| 1080pでのT2V / I2V | 46元(約6.40ドル) |
| V2V(動画参照入力) | 28元(約3.90ドル) |
| 期間 | およそのトークン数 | 費用 (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秒動画生成分の無料トライアルあり。
開発時は解像度を720pや480pに落とすことでコスト削減可能です。
よくあるエラーとその解決策
429 Too Many Requests
→ 同時実行制限。指数バックオフ(10秒→20秒→…最大60秒)でリトライ。
status: "failed"
→ プロンプト違反/画像破損/パラメータ不正等。入力内容を見直して再実行を。
status: "expired"
→ キュー待ち時間超過。混雑時発生。再送信のみ。
video_urlの403エラー
→ 24時間超過でURL失効。再生成が必要。
シードの再現性
→ 応答のseed値を保存して同条件で再リクエストすると再現性アップ。
結論
Seedance 2.0 APIは高性能な動画生成をプログラムから自動化できます。
- 非同期タスクパターンのPOST→ポーリング→即ダウンロード
- マルチモーダル入力やネイティブ音声など、Web UIではできないワークフローを構築可能
本番前にApidogでE2Eテストシナリオを構築し、ポーリングや抽出、URL有効期限の問題を事前検証しましょう。
FAQ
Q: doubao-seedance-2-0-260128とdoubao-seedance-2-0-fast-260128の違いは?
A: 標準モデルは高品質、本番用。高速モデルは速いが低品質。プロンプト検証は高速モデルで、最終出力は標準モデル推奨。
Q: Seedance 2.0は中国国外で使える?
A: エンドポイントは北京リージョン。国外開発者も利用可能だが遅延あり。地理制限はVolcengine利用規約参照。
Q: 複数クリップで長い動画を作りたい
A: 各生成でreturn_last_frame: trueを指定。最終フレーム画像を次の最初のフレームに使い、動画編集で連結。
Q: ネイティブ音声生成は高コスト?
A: トークン消費はやや増加。generate_audio: trueオフの同一リクエストと比較し、completion_tokensで確認可能。
Q: ポーリングではなくWebhook利用は?
A: 送信時にcallback_url指定で、完了時に自動通知。パイプライン大量処理時に有効。
Q: 画像9枚制限を超過すると?
A: 400エラー。9枚以内に制限。
Q: シード値で完全再現できる?
A: シード値で再現性は高まるが、パラメータやモデルバージョンが変わると完全一致は保証されません。
Q: 複数タスクの費用管理は?
A: completion_tokens×レートでコスト算出。APIに支出ダッシュボードはないので、アプリ側で集計・記録を。
ApidogでのAPI連携テストには
Apidog公式サイト
を活用してください。


Top comments (0)