視頻與素材
建立任務 (Volc 相容)
使用 Volc 相容 API 建立 Seedance 任務。
概覽
現有的 Volc 風格 Seedance 客戶端可以透過更改 API 位址和金鑰來使用 TokenLab。
本頁範例使用 Seedance 2.0;此端點也支援 Seedance 2.5,模型間差異見下文。 本頁的可重複使用 TokenLab 素材 URI 用法適用於 Seedance 2.0。
請參閱 Seedance 2.0 影片模型 與 影片生成。
驗證與端點
- 使用
Authorization: Bearer <TOKENLAB_API_KEY>。 - 不接受 Volc AK/SK 簽章。請求必須包含 TokenLab Bearer 金鑰。
- 使用官方任務路徑:
POST /api/v3/contents/generations/tasks。
內容規則
type: "text"為提示詞文字。type: "image_url"若無role,或設定為role: "first_frame",將被視為首幀。role: "last_frame"必須與首幀搭配使用。role: "reference_image"、reference_video和reference_audio用作參考素材。image_url.url接受公開圖片 URL 或素材 URI,例如asset://asset-YYYYMMDDHHMMSS-xxxxx。role決定該素材是首幀、末幀還是參考圖片。- 請勿在同一個請求中混合使用首/末幀輸入與參考媒體。
- 不接受頂層
material_asset_id和material_asset_ids。請將 TokenLab 素材 URI 放入image_url.url。priority僅 Seedance 2.5 支援。
參數說明
duration 為整數秒數,-1 表示自動時長。預設值與限制因模型而異:
| 參數 | Seedance 2.0 | Seedance 2.5 |
|---|---|---|
duration | 4–15 / -1 (預設: 5) | 4–30 / -1 (預設: -1) |
resolution | 480p, 720p, 1080p (預設: 720p) | 480p, 720p (預設: 720p) |
generate_audio | boolean (預設: false) | boolean (預設: true) |
priority | 不支援 | integer: 0–9 |
seed | integer: -1–4294967295 (預設: -1) | 不支援 |
Seedance 2.5 的首幀、首尾幀、影片延長和影片到影片請求必須使用 ratio: "adaptive";影片到影片還必須使用 duration: -1。output_format 的 mp4 和 mov 選項僅 Seedance 2.5 支援。
ratio接受16:9、4:3、1:1、3:4、9:16、21:9或adaptive。- 當所選模型支援時,接受
watermark、return_last_frame、seed、execution_expires_after和safety_identifier。 callback_url可指向公開的 HTTP(S) 端點。
回調傳遞 (Callback Delivery)
當存在 callback_url 時,TokenLab 會在任務狀態變更時發送 HTTP POST 請求。回調狀態包括 queued、running、succeeded、failed 和 expired。JSON 主體與 get-task 回應格式一致。
2xx 回應表示已確認送達。對於 succeeded 和 failed 狀態,若五秒內未成功送達,將重試最多三次。回調僅包含標準 JSON 內容標頭,不包含 TokenLab 特定的傳遞標頭。系統不支援重新導向,且會拒絕私有或保留的網路目標。
請儲存任務 ID。如果回調未送達,您仍可透過 get-task 端點擷取結果。
圖片準備
公開 HTTP(S) 圖片 URL 和支援的 data URL 按輸入使用,不會自動儲存為可重複使用的素材。明確的 asset://asset-... 引用使用既有 TokenLab 素材,生成前會檢查歸屬與就緒狀態。如果引用的素材仍在準備,請等待就緒後重試;建立失敗時查看 error.code 和 error.message。
對於現有素材,請使用公開的 asset-YYYYMMDDHHMMSS-xxxxx ID,而非其他系統返回的原始素材 ID。TokenLab 會在生成前驗證素材所有權。
建立回應
{
"id": "cgt-20260102030405-a1b2c"
}建立回應僅包含任務 ID。請務必儲存它,以便隨時擷取狀態與結果。
防止重複任務
請在建立請求時發送唯一的 Idempotency-Key。如果連線在回應到達前中斷,請使用相同的 API 金鑰、冪等性金鑰 (idempotency key) 和請求主體進行重試:
- 若原始任務已建立,TokenLab 將返回相同的
cgt-...ID 並加入Idempotency-Replayed: true。 - 若原始請求仍在登記中,TokenLab 會回傳
409 IdempotencyRequestInProgress;請稍後使用相同金鑰與主體重試。 - 若重複使用金鑰但主體不同,將返回
409 IdempotencyConflict且不會建立第二個任務。
冪等性適用於官方 v3 REST 建立路徑。它不會改變 JSON 回應格式,且不會根據 X-Request-ID 或未帶金鑰的相同請求主體進行推斷。
範例
REST 建立
curl https://api.tokenlab.sh/api/v3/contents/generations/tasks \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Idempotency-Key: $CLIENT_JOB_ID" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2.0",
"content": [
{"type": "text", "text": "A cinematic forest at sunset"},
{"type": "image_url", "role": "reference_image", "image_url": {"url": "https://example.com/ref.png"}}
],
"ratio": "16:9",
"duration": 5,
"resolution": "720p",
"generate_audio": false,
"callback_url": "https://example.com/webhooks/seedance"
}'對於現有素材,請將每個 URI 放入官方的 content[] 項目中並宣告其角色:
[
{
"type": "image_url",
"role": "first_frame",
"image_url": {"url": "asset://asset-20260720123458-start"}
},
{
"type": "image_url",
"role": "last_frame",
"image_url": {"url": "asset://asset-20260720123459-end01"}
}
]下一步
使用返回的 cgt-... ID 搭配 取得任務 (Volc 相容),直到任務達到終止狀態。
curl -X POST "https://example.com/api/v3/contents/generations/tasks" \ -H "Content-Type: application/json" \ -d '{ "model": "doubao-seedance-2-0-260128", "content": [ { "type": "text", "text": "A cinematic forest at sunset" }, { "type": "image_url", "role": "reference_image", "image_url": { "url": "https://example.com/ref.png" } } ], "ratio": "16:9", "duration": 5, "resolution": "720p", "generate_audio": false }'{ "id": "string"}授權
BearerAuth API Key 驗證。請在 Dashboard > API > API Keys 建立或管理 API 金鑰。
位置: header
請求標頭
單次請求傳遞策略。會覆寫 API key 與 Workspace 的預設值。系統會自動優先嘗試 TokenLab Verified,並可能在輸出、請求接受或建立持久性資源前切換至 Official 模式一次。
可選值
- "auto"
- "verified"
- "official"
由客戶端產生的金鑰,用於冪等 REST 任務建立。在相同的 TokenLab API 憑證下,使用相同的金鑰與相同的 JSON 本體重複請求會回傳原始的 cgt 任務 ID;若使用不同的本體則回傳 409。在逾時或連線中斷後重試時,請保持憑證、金鑰與請求本體不變。
1 <= length <= 255請求主體
application/json
回應
application/json
application/json
application/json
application/json
application/json
application/json