Seedance 系列
字节官方协议参考:创建视频生成任务。
本页从 Seedance 2.0 系列开始介绍,使用 通用视频协议 演示文本、首尾帧和多模态参考输入。
调用准备
示例模型 ID 为 seedance-2-0-fast。请先查询当前 API Key 可用的视频模型,按列表中的实际 ID 替换;不同版本支持的参数与 输入组合可能不同。
BASE_URL="https://api.ope.ai"
API_KEY="YOUR_API_KEY"
curl "$BASE_URL/v1/models?output_modalities=video" \
-H "Authorization: Bearer $API_KEY"
提示词放在 content 的 text 元素中;时长使用整数 duration,分辨率与比例使用 resolution、ratio。通过通用视频接口调用时,扩展参数放在 extra_parameters。
可选扩展参数
下表列出当前接口接受的扩展参数,均为可选。不同 Seedance 版本支持的字段与取值不同,请按所选模型填写;不需要的参数直接省略,不要传 null。
| 字段 | 类型 | 用途 |
|---|---|---|
frames | integer | 输出帧数,需所选模型支持按帧控制时长 |
seed | integer | 随机种子 |
camera_fixed | boolean | 是否固定镜头 |
draft | boolean | 是否生成样片,适用于支持样片的模型 |
service_tier | string | 服务等级,例如 default、flex |
output_format | string | 视频格式,例如 mp4、mov;仅适用于支持此参数的 Seedance 2.5 |
omni_reference_task_type | string | Seedance 2.5 的任务类型引导:auto、reference、edit、extend |
execution_expires_after | integer | 任务排队及执行的期限,单位秒;与结果的 24 小时访问期限无关 |
priority | integer | 任务排队优先级 |
safety_identifier | string | 终端用户标识 |
tools | object[] | 工具声明,例如 [{"type":"web_search"}];type 为字符串 |
curl 调用示例
文生视频
curl "$BASE_URL/v1/contents/generations/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"content": [{"type": "text", "text": "一只橘猫走过雨后的街道,镜头缓慢跟随。"}],
"duration": 5,
"resolution": "720p",
"ratio": "16:9",
"generate_audio": false,
"extra_parameters": {"seed": 42}
}'
图生视频:首帧与首尾帧
下面请求指定首帧和尾帧。只使用首帧时,删除 role: "last_frame" 的整个元素即可。示例媒体地址需替换为可公开读取的实际图片 URL。
curl "$BASE_URL/v1/contents/generations/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"content": [
{"type": "text", "text": "从首帧自然过渡到尾帧,镜头运动连贯。"},
{"type": "image_url", "role": "first_frame", "image_url": {"url": "https://example.com/first.jpg"}},
{"type": "image_url", "role": "last_frame", "image_url": {"url": "https://example.com/last.jpg"}}
],
"duration": 5,
"resolution": "720p",
"ratio": "16:9",
"return_last_frame": true
}'
多模态参考:图片、视频与音频
curl "$BASE_URL/v1/contents/generations/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"content": [
{"type": "text", "text": "根据参考图生成产品展示,参考视频的镜头运动和音频的节奏。"},
{"type": "image_url", "role": "reference_image", "image_url": {"url": "https://example.com/product.jpg"}},
{"type": "video_url", "role": "reference_video", "video_url": {"url": "https://example.com/motion.mp4"}},
{"type": "audio_url", "role": "reference_audio", "audio_url": {"url": "https://example.com/rhythm.mp3"}}
],
"duration": 8,
"resolution": "720p",
"ratio": "9:16",
"generate_audio": true
}'
Seedance 2.0 输入要点:
- 单首帧、首尾帧和全模态参考分别组织请求,不混用首尾帧角色与参考素材角色。
- 单首帧可使用
first_frame,也可省略该角色;首尾帧需分别标记first_frame、last_frame。 - 参考图使用
reference_image;参考视频使用reference_video,可以单独传入。 - 参考音频使用
reference_audio,同时至少提供一张图片或一段视频。仅音频、文本加音频不满足 Seedance 2.0 输入条件。 - 全模态参考最多 9 张图片、3 段视频和 3 段音频;具体媒体规格以所用模型版本说明为准。
查询与获取结果
以上创建请求返回 HTTP 200 和任务 ID:
{"id":"cgt_386cb55a950c4e4380fbe740762500a3"}
用返回的 ID 查询:
TASK_ID="cgt_386cb55a950c4e4380fbe740762500a3"
curl "$BASE_URL/v1/contents/generations/tasks/$TASK_ID" \
-H "Authorization: Bearer $API_KEY"
queued、running 时继续查询;succeeded 后读取 content.video_url,有尾帧时读取 content.last_frame_url;failed 时读取 error。媒体期限为 24 小时,截止时间见 media_expires_at;到期返回 expired 并移除媒体地址。完整响应字段与错误格式见 通用视频协议。
字节原生字段入口
需要按字节原生字段调用时,可使用下列入口,仍使用平台 API Key 和模型 ID。请确认所选模型支持此入口。
| 项目 | 平台通用入口 | 字节原生字段入口 |
|---|---|---|
| 创建 | POST /v1/contents/generations/tasks | POST /api/v3/contents/generations/tasks |
| 查询 | GET /v1/contents/generations/tasks/{id} | GET /api/v3/contents/generations/tasks/{id} |
| 扩展参数的位置 | 放在 extra_parameters,例如 "extra_parameters": {"seed": 42} | 直接放在顶层,例如 "seed": 42 |
| 任务 ID | 平台任务 ID | 顶层 id 同样为平台任务 ID |
| 查询结果 | 平台字段与状态 | 原生字段、实际模型名与状态,可能包含 cancelled、expired |
| 媒体到期 | HTTP 200,status: "expired" | HTTP 410,TaskMediaExpired,不再返回任务正文 |
不支持 callback_url 参数。
以下为 Seedance 2.0 系列原生入口的文生视频示例:
curl "$BASE_URL/api/v3/contents/generations/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-0-fast",
"content": [{"type": "text", "text": "清晨的海面,镜头缓慢推进。"}],
"duration": 5,
"resolution": "720p",
"ratio": "16:9",
"seed": 42
}'
NATIVE_TASK_ID="ID_FROM_NATIVE_CREATE_RESPONSE"
curl "$BASE_URL/api/v3/contents/generations/tasks/$NATIVE_TASK_ID" \
-H "Authorization: Bearer $API_KEY"
将 NATIVE_TASK_ID 替换为这次原生创建返回的 id。原生入口不返回 media_expires_at;视频与尾帧仍受 24 小时访问期限限制。原生 expired 状态可表示任务执行到期,媒体访问期限到期由 HTTP 410 表达。两个入口均不提供主动取消或回调;若使用 content 内的 draft_task.id,同样填写本人平台样片任务 ID。