Seedance Draft 草稿模式
Seedance 2.5 Draft 用于先快速生成样片,确认画面方向后,再生成正式视频。整个流程分为两步,使用火山格式视频接口:
Step1:draft: true 生成样片
↓
保存 Step1 返回的任务 id
↓
Step2:通过 draft_task.id 引用样片,生成正式视频适用模型与接口
- 模型:
bytedance/doubao-seedance-2-5-260628、byteplus/dreamina-seedance-2-5-260628。 - 创建任务:
POST /v3/contents/generations/tasks。 - 查询任务:
GET /v3/contents/generations/tasks/{id}。 - Step2 使用的任务 ID必须是 Step1 创建响应中的本地任务 ID,格式通常为
qvideo-*或cgt-*。
Step1:生成样片
在正常的视频生成请求中设置 draft: true,其他生成参数按照普通请求填写。创建成功后,保存响应中的 id,后续 Step2 需要使用该值。
export MODELINK_API_KEY="替换为你的 Modelink API Key"
export MODELINK_BASE_URL="https://api.modelink.ai"
export TASKS_URL="$MODELINK_BASE_URL/v3/contents/generations/tasks"
DRAFT_RESPONSE="$(${curl:-curl} -sS "$TASKS_URL" \
-X POST \
-H "Authorization: Bearer $MODELINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/doubao-seedance-2-5-260628",
"content": [
{
"type": "text",
"text": "一只橘猫在阳光下的花园里追逐蝴蝶,镜头平稳跟随"
}
],
"draft": true,
"ratio": "16:9",
"duration": 5,
"generate_audio": true
}')"
export DRAFT_TASK_ID="$(jq -r '.id' <<<"$DRAFT_RESPONSE")"
echo "$DRAFT_TASK_ID"创建成功后,响应只需要保存任务 id:
{
"id": "xxx"
}Step1 是异步任务。使用返回的任务 ID查询状态,等待 status 进入 succeeded 后再提交 Step2:
curl -sS "$TASKS_URL/$DRAFT_TASK_ID" \
-H "Authorization: Bearer $MODELINK_API_KEY"成功的查询响应示例:
{
"id": "xxx",
"model": "bytedance/doubao-seedance-2-5-260628",
"status": "succeeded",
"content": {
"video_url": "https://example.com/draft-video.mp4"
},
"resolution": "480p",
"ratio": "16:9",
"duration": 5,
"generate_audio": true
}Step2:生成正式视频
Step1 成功后,在新的创建任务请求中通过 content[].draft_task.id 引用样片任务。Step2 的 content 只传入 draft_task,不要再次传入 Step1 的文本、图片或视频内容。
FINAL_RESPONSE="$(${curl:-curl} -sS "$TASKS_URL" \
-X POST \
-H "Authorization: Bearer $MODELINK_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg task_id "$DRAFT_TASK_ID" '{
model: "bytedance/doubao-seedance-2-5-260628",
content: [
{
type: "draft_task",
draft_task: {id: $task_id}
}
]
}')")"
export FINAL_TASK_ID="$(jq -r '.id' <<<"$FINAL_RESPONSE")"
echo "$FINAL_TASK_ID"对应的 Step2 请求体如下:
{
"model": "bytedance/doubao-seedance-2-5-260628",
"content": [
{
"type": "draft_task",
"draft_task": {
"id": "xxx"
}
}
]
}Step2 创建成功后,同样使用返回的任务 ID查询正式视频:
{
"id": "xxx",
"model": "bytedance/doubao-seedance-2-5-260628",
"status": "succeeded",
"content": {
"video_url": "https://example.com/final-video.mp4"
},
"resolution": "1080p",
"ratio": "16:9",
"duration": 5,
"generate_audio": true
}计费规则
Draft 由样片和正式视频两个任务组成,两个步骤分别计费:
- Step1 样片:Seedance 2.5 固定按
480p任务计费,计费规则与普通480p视频生成一致。 - Step2 正式视频:Seedance 2.5 固定按
1080p任务计费。 - 如果 Step1 使用了参考视频,Step2 会继续按照包含参考视频的任务计费。使用
draft_task.id只是引用样片的方式,不会免除 Step2 的参考视频费用。 - Step1 未使用参考视频时,Step2 不会因为引用了 Draft 任务而额外产生参考视频费用。
具体单价请以模型广场中对应模型和分辨率的当前价格为准。
请求规则
- Step1 必须设置
draft: true。 - Step1 成功后,才能提交 Step2。
- Step2 必须使用
content中的draft_task引用 Step1 任务 ID。 - Step2 不需要传
draft或resolution。 - 样片任务和 Step2 请求必须属于同一账号;任务 ID不正确、任务未完成或任务不存在时,请求会失败。
常见问题
查询响应里没有 draft 或 draft_task_id 怎么办?
这是正常行为。客户端应在 Step1 创建任务成功后,立即保存创建响应中的 id,并在 Step2 的 draft_task.id 中使用该值。查询接口不依赖 draft_task_id 字段返回关联关系。
Step2 可以继续传入原始提示词或参考素材吗?
不可以。Step2 通过样片任务 ID引用 Step1,content 只传 draft_task。如果需要修改提示词或参考素材,请重新创建一个 Step1 任务。