メインコンテンツへスキップ
POST
右側のPlaygroundをご利用ください。AuthorizationにBearer sk-your-api-keyを設定し(TokenにはSeeDance2グループが必要です。2.5と2.0ファミリーで共有されています)、model / contentを入力して送信します。送信が成功するとタスクidが返されます。ポーリングおよびダウンロードのフローについては、後述のコードサンプルで説明しています。
Playgroundの「no response received」エラーについて:これは非同期タスクエンドポイントであり、ブラウザでSendをクリックするとそのメッセージが表示されることがあります。ブラウザのクロスオリジン安全性チェックによってレスポンスがブロックされましたが、タスクは実際には正常に送信されています(後述のクエリエンドポイントまたはコンソールログで確認してください)。また、Playgroundではタスクの作成のみが可能で、ポーリングや動画のダウンロードは行えません。作成 → ポーリング → ダウンロードの一連のフローを実行するには、以下のコードサンプル(cURL / Python / Node.js)をコピーして実行してください。
これはSeedance 2.0のタスク作成エンドポイントです。テキストからの動画生成、最初+最後のフレーム/最初のフレーム指定、マルチモーダルリファレンスからの動画生成はすべてこれを共有しており、content配列によってモードを選択します。モデルの選択、価格設定、解像度/ピクセル表、FAQについては、Seedance 2.0の概要をご覧ください。
  • パスのプレフィックスは/seedance/api/v3です。/apiセグメントを省略しないでください。また、/v1/videosは使用しないでください
  • TokenではSeeDance2グループが有効になっている必要があります。有効になっていない場合、「no available channel for this model」というエラーが発生します。2.5と2.0ファミリーはどちらもSeeDance2を使用するため、1つのTokenで4つのモデルすべてに対応できます
  • generate_audioはデフォルトでtrue(音声付きで出力)です。音声なしの動画にする場合は、明示的にfalseを渡してください
  • Pythonのrequestsには"Accept-Encoding": "identity"ヘッダーが必要です。これがない場合、gzipデコードエラー、切り詰められた非JSON本文(例:先頭の{"が欠落してid":"cgt-xxx"}のみが取得される)、または断続的な400エラーが発生する可能性があります
  • 成功ステータスはsucceededです(completedではありません)。動画URLはcontent.video_urlに格納され、24時間で期限切れになります

コード例

パラメータリファレンス

Seedance 2.5も2.0ファミリーもframesまたはcamera_fixedをサポートしていません — これらはSeedance 1.xのパラメータであり、無視または拒否されます。2.5固有のタスクタイプ制約 (違反すると課金されず、送信時にInvalidParameter.TaskTypeConstraintが返されます):

生成モード (コンテンツの組み合わせ)

3つの画像モードは相互排他的です。画像には公開URL、Base64 (data:image/png;base64,...)、アセットID (asset://...)を使用できます。実在する人間の顔を含む入力は拒否されます。アセット参照のエンドツーエンドコード (取り込み → asset:// → 生成 → ダウンロード) については、アセット参照ガイドを参照してください。 大きなメディアをインライン化するとタスク作成が遅くなります。 Base64ペイロードのアップロードや大きな画像URLの取得にかかる時間はすべて送信フェーズに含まれるため、create-task呼び出しが約1秒から数十秒に延びたり、クライアントの読み取りタイムアウトに達したりする可能性があります。リクエストに画像または動画を含める場合は、先にメディアを取り込み、asset://アセットIDとして参照してください。アセット先行ワークフローを参照してください。 参照上限は生成方式によって異なります: 2.5では画像30個 + 動画10本 + 音声クリップ10個を使用でき、音声のみを参照として指定することもできます。2.0ファミリーでは画像9個 + 動画3本 + 音声クリップ3個を使用でき、音声は少なくとも1個の画像または1本の動画と一緒に送信する必要があります。 編集と拡張はpromptの意図によってトリガーされます — omni_reference_task_typeは検証を前倒しするだけです。prompt内では、渡した順序に従って位置でアセットを参照してください (@video1、@image1)。編集にはadd / remove / change / replaceのような動詞が必要で、拡張にはextend / continueが必要です。モデルがpromptから推測したタスクタイプが、宣言した内容と矛盾する場合、タスクは非同期でInvalidParameter.TaskTypeMismatchにより失敗します。

レスポンス形式

作成時に返されるのはタスク ID のみです(動画ではありません)。
id を取得したら、タスクのステータスを確認するために GET /seedance/api/v3/contents/generations/tasks/{id} をポーリングします。

推奨ポーリング間隔

キュー待ち時間を含むエンドツーエンドの実測レイテンシーです。720p の 2.0 ファミリーでは、5 秒のクリップで約 90~140 秒、15 秒で 170 秒です。2.5 では、720p/5 秒で約 150 秒、720p/30 秒で 330 秒、1080p/5 秒で 150 秒です。解像度が高いほど、また動画の長さが長いほど時間がかかり、ピーク時間帯のキュー待ちによってさらに長くなります。以下のコードサンプルでは固定の 20 秒間隔を使用しています。これは十分な間隔であり、リクエスト数も予測しやすくなります。 成功したタスクは次のようになります(テストで使用した実際のサンプルです)。
  • 動画 URL はトップレベルではなく content.video_url にあります。これは 24 時間で期限切れになる署名付きリンクなので、すぐにダウンロードしてください
  • ステートマシン:queued → running → succeeded / failed / expired。成功状態は succeeded です
  • リンクのダウンロードには通常の GET を使用してください。署名付き URL に Authorization ヘッダーを送信しないでください
usage.completion_tokens は課金対象の token 数であり、tokens ≈ duration × width × height × 24 / 1024 に従います(テストでは誤差 0.1% 以内でした)。duration: -1 または ratio: adaptive を使用した場合、実際の長さと比率はレスポンスの duration / ratio フィールドで報告されます。

承認

Authorization
string
header
必須

API key from the APIYI console (SeeDance2 group for both 2.5 and the 2.0 family)

ボディ

application/json

Shared schema for standard generation, 480p Drafts and 1080p final generation from Drafts. For a final video, use the finalFromDraft example with the same model, Draft task ID and optional resolution=1080p; do not resend inherited parameters.

model
string
必須

Model ID (plain ID, no ep- prefix). 2.5 supports 1080p, 4-30 s, and up to 30 images + 10 videos + 10 audio clips as references; 2.0 standard supports 1080p; fast and mini cap at 720p, with mini at about half the standard price. No model supports 4k

例:

"doubao-seedance-2-5-260628"

"doubao-seedance-2-0-260128"

"doubao-seedance-2-0-fast-260128"

"doubao-seedance-2-0-mini-260615"

content
object[]
必須

Input array. Text-to-video: a single text item. Image-to-video: add image_url items (role: first_frame / last_frame). Multi-modal reference-to-video: image_url items (role: reference_image) plus optional video_url / audio_url. Reference limits: 2.5 allows 30 images + 10 videos + 10 audio clips and audio may stand alone; the 2.0 family allows 9 images + 3 videos + 3 audio clips and needs at least 1 image or 1 video. The three image modes are mutually exclusive. For final generation from a Draft, send only one draft_task item with no text or media

Minimum array length: 1
resolution
enum<string>

Resolution tier (defines pixel area; every ratio in a tier costs the same). Standard generation defaults to 720p; 1080p is available on 2.5 and 2.0 standard only, while fast and mini cap at 720p. With draft=true, explicitly set 480p. Final generation from draft_task defaults to and only supports 1080p

利用可能なオプション:
480p,
720p,
1080p
例:

"720p"

draft
boolean
デフォルト:false

Generate a Draft, supported on Seedance 2.5 only. true requires resolution=480p. Omit or set false for final generation from draft_task. Draft and final tasks are billed separately by actual tokens at their respective resolution rates

例:

true

ratio
enum<string>

Aspect ratio. Standard generation defaults to adaptive to auto-fit the input (recommended for image-to-video to avoid cropping); the actual ratio is returned in the task's ratio field. Do not send for final generation from draft_task; the Draft value is reused

利用可能なオプション:
16:9,
4:3,
1:1,
3:4,
9:16,
21:9,
adaptive
duration
integer

Video length in whole seconds: 4-30 on 2.5, 4-15 on the 2.0 family; or -1 to let the model choose (billed by actual output). Cost scales linearly with duration. The default is -1 on 2.5 and 5 on the 2.0 family. Do not send for final generation from draft_task; the Draft value is reused

例:

5

generate_audio
boolean

Generate synchronized audio (voice, SFX, background music; mono). Standard generation defaults to true; pass false explicitly for silent video. Do not send for final generation from draft_task; the Draft value is reused

watermark
boolean
デフォルト:false

Add an AI-generated watermark in the bottom-right corner

seed
integer

Random seed, [-1, 2^32-1], defaulting to -1 for standard generation. The same seed produces similar (not identical) results; -1 means random. Do not send for final generation from draft_task; the Draft value is reused

return_last_frame
boolean
デフォルト:false

Return the last frame as a watermark-free png (same dimensions as the video) — chain it as the first frame of the next task to produce continuous multi-clip videos

execution_expires_after
integer
デフォルト:172800

Task expiry threshold in seconds; tasks exceeding it are marked expired. Range [3600, 259200]

output_format
enum<string>
デフォルト:mp4

Output container, supported on doubao-seedance-2-5-260628 only. mov is a QuickTime container (H.264 + yuv444p + PCM) with better colour fidelity for post-production, but some players cannot open it

利用可能なオプション:
mp4,
mov
omni_reference_task_type
enum<string>

Task type for omni-reference generation, supported on doubao-seedance-2-5-260628 only, defaulting to auto for standard generation. Declaring edit or extend validates constraints up front: video editing requires ratio=adaptive and duration=-1, video extension requires ratio=adaptive; violations return InvalidParameter.TaskTypeConstraint at submission. Do not send for final generation from draft_task; the Draft value is reused

利用可能なオプション:
auto,
edit,
extend

レスポンス

Task created. Returns the task ID for polling

Creation response. Poll GET /seedance/api/v3/contents/generations/tasks/{id}; on success the video URL is at content.video_url (expires in ~24 h) and billed tokens at usage.completion_tokens. Once a Draft succeeds, reference its ID in content[].draft_task.id within 7 days of creation to generate a final video

id
string

Video generation task ID (kept for 7 days)

例:

"cgt-20260606160057-6bbjd"