Seedance 2.0 中转站 API 文档
Seedance 2.0 中转站为 B 端客户提供与火山引擎 Seedance 2.0 官方 API 完全兼容的代理接口。
您只需将 Base URL 和 API Key 替换为中转站分配的地址和 Relay Key,其余请求格式完全一致。
https://your-host/relay/v3鉴权方式:
Authorization: Bearer rk-xxxxxxxx(由中转站管理员分配)
兼容性说明
中转站 API 与火山引擎 Seedance 2.0 官方 API 完全兼容。您现有的代码只需修改两处:
// 修改前(直接调用火山引擎) baseURL: "https://ark.cn-beijing.volces.com/api/v3" Authorization: Bearer <火山引擎 API Key> // 修改后(通过中转站) baseURL: "https://your-host/relay/v3" Authorization: Bearer rk-xxxxxxxx
快速开始
3 步快速接入:
最简示例 (cURL)
# 第一步:创建视频生成任务 curl -X POST https://your-host/relay/v3/contents/generations/tasks \ -H "Authorization: Bearer rk-your-relay-key" \ -H "Content-Type: application/json" \ -d '{ "model": "doubao-seedance-2-0-260128", "content": [{"type": "text", "text": "温暖阳光下,一只猫在阳台上打哈欠"}], "duration": 5, "resolution": "720p", "ratio": "16:9" }' # 返回:{"id": "cgt-xxxxxxxxxxxx-xxxxx"} # 第二步:轮询任务状态(重复直到状态为终态) curl https://your-host/relay/v3/contents/generations/tasks/cgt-xxxxxxxxxxxx-xxxxx \ -H "Authorization: Bearer rk-your-relay-key" # 完成时返回:{"status": "succeeded", "content": {"video_url": "https://..."}, ...}
鉴权方式
所有请求必须在 HTTP Header 中携带 Relay Key:
| 请求头 | 是否必填 | 说明 |
|---|---|---|
Authorization | 必填 | Bearer rk-xxxxxxxx — 管理员分配的 Relay Key |
Content-Type | 必填 | application/json |
X-Idempotency-Key | 可选 | 幂等键,用于创建任务接口。相同的 Key 会返回缓存结果。 |
处理流程
视频生成流程
素材 + 视频生成流程
错误码
所有响应遵循统一格式:
{
"success": false,
"error": {
"code": "QUOTA_EXCEEDED",
"message": "配额已用尽或账户未激活"
}
}
中转站错误
| 错误码 | HTTP 状态码 | 说明 |
|---|---|---|
INVALID_RELAY_KEY | 401 | 缺少或无效的 Relay Key(必须以 rk- 开头) |
RELAY_NOT_FOUND | 401 | 数据库中未找到对应的中转账户 |
RELAY_INACTIVE | 401 | 账户已暂停或已吊销 |
MODEL_NOT_ALLOWED | 403 | 请求的模型/端点不在白名单中 |
DURATION_EXCEEDED | 400 | 请求的视频时长超出账户限制 |
RESOLUTION_EXCEEDED | 400 | 请求的分辨率超出账户限制 |
QUOTA_EXCEEDED | 429 | 已达每日/每月调用上限或并发任务数上限 |
NO_API_KEY | 400 | 账户未配置 API Key(请联系管理员) |
NO_CREDENTIALS | 400 | 账户未配置 AK/SK(请联系管理员,素材库需要此配置) |
上游错误(来自火山引擎)
当上游火山引擎 API 返回错误时,中转站会原样转发响应体。常见的 Seedance 错误:
| 错误码 | 说明 |
|---|---|
InputTextSensitiveContentDetected | 文本提示词包含敏感内容 |
InputImageSensitiveContentDetected | 输入图片包含敏感内容 |
OutputVideoSensitiveContentDetected | 生成的视频被内容审核拦截 |
InputImageSensitiveContentDetected.PrivacyInformation | 检测到真人面部但未进行素材授权 |
InternalServiceError | 火山引擎内部错误,请稍后重试 |
配额与限流
每个中转账户都有可配置的配额限制:
| 限制项 | 说明 | 默认值 |
|---|---|---|
daily_calls | 每日最大任务创建次数(UTC+8 零点重置) | 100 |
monthly_calls | 每月最大任务创建次数 | 3,000 |
concurrent_tasks | 同时处于运行中/排队中状态的最大任务数 | 5 |
max_duration | 允许的最大视频时长(秒) | 15 |
max_resolution | 允许的最大分辨率(480p/720p/1080p) | 720p |
allowed_models | 允许使用的模型/端点 ID 白名单(为空表示不限制) | [] |
当配额达到上限时,API 返回 429 QUOTA_EXCEEDED。当任务到达终态(成功/失败/过期/取消)时,通过查询接口会自动减少并发任务计数。
创建视频生成任务
创建 Seedance 2.0 视频生成任务。支持文生视频、图生视频(首帧/首尾帧)、多模态参考生成等模式。
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | String | 是 | 模型 ID 或端点 ID,例如 doubao-seedance-2-0-260128 或 ep-xxxxxxxx |
content | Array | 是 | 内容项数组(详见下方) |
duration | Integer | 可选 | 视频时长(秒)。Seedance 2.0 支持 4-15 秒。传 -1 表示自动。默认:5 |
resolution | String | 可选 | 480p / 720p / 1080p(快速模型不支持 1080p)。默认:720p |
ratio | String | 可选 | 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive |
generate_audio | Boolean | 可选 | 是否同步生成音频。仅 Seedance 2.0 支持。 |
safety_identifier | String | 可选 | 终端用户标识,用于内容溯源(最长 64 字符)。未提供时自动注入。 |
seed | Integer | 可选 | 随机种子,用于结果复现 |
内容项说明
| 类型 | 字段格式 | 说明 |
|---|---|---|
text | { "type": "text", "text": "提示词" } | 文字提示词,描述视频内容 |
image_url | { "type": "image_url", "image_url": { "url": "..." } } | 首帧图片。URL 可为 HTTP/HTTPS 地址或 asset://<素材ID> |
image_url(尾帧) |
{ "type": "image_url", "image_url": { "url": "..." }, "role": "last_frame" } |
尾帧图片(首尾帧模式) |
image_url(参考图) |
{ "type": "image_url", "image_url": { "url": "..." }, "role": "reference_image" } |
参考图片,用于多模态生成 |
响应
{
"id": "cgt-20260601120000-xxxxx"
}
返回任务 ID,使用查询任务接口轮询结果。
可用模型
| 模型 ID | 名称 | 最大分辨率 | 音频支持 |
|---|---|---|---|
doubao-seedance-2-0-260128 | Seedance 2.0 标准版 | 1080p | 是 |
doubao-seedance-2-0-fast-260128 | Seedance 2.0 快速版 | 720p | 是 |
您也可以使用管理员配置的自定义端点 ID(例如 ep-20260528xxxxxx-xxxxx)。
查询任务状态
轮询视频生成任务的状态。请持续轮询直到状态变为终态。
路径参数
| 参数 | 类型 | 说明 |
|---|---|---|
task_id | String | 创建任务时返回的任务 ID(例如 cgt-xxxxx) |
响应(运行中)
{
"id": "cgt-20260601120000-xxxxx",
"model": "doubao-seedance-2-0-260128",
"status": "running"
}
响应(成功)
{
"id": "cgt-20260601120000-xxxxx",
"model": "doubao-seedance-2-0-260128",
"status": "succeeded",
"content": {
"video_url": "https://ark-prod-asset.tos-cn-beijing.volces.com/...",
"last_frame_url": "https://..."
},
"usage": {
"completion_tokens": 50638,
"total_tokens": 50638
},
"resolution": "720p",
"ratio": "16:9",
"duration": 5,
"seed": 37072,
"generate_audio": true
}
任务状态值
| 状态 | 是否终态 | 说明 |
|---|---|---|
queued | 否 | 任务排队中,等待资源 |
running | 否 | 正在生成视频 |
succeeded | 是 | 视频生成完毕,可从 content.video_url 下载 |
failed | 是 | 生成失败,查看 error 字段 |
expired | 是 | 任务已过期(通常在 48 小时后) |
cancelled | 是 | 任务已取消 |
查询可用模型与端点
查询当前中转账户可用的模型和端点列表。用于发现已配置的模型/端点。
响应
{
"success": true,
"data": {
"allowed_models": ["ep-20260528130905-bjj8g"],
"endpoints": [
{
"id": "ep-20260528130905-bjj8g",
"name": "seedance-2.0-fast",
"status": "Running",
"model_name": "doubao-seedance-2-0-fast",
"model_version": "260128",
"description": "快速模型端点"
}
]
}
}
allowed_models:如果非空,则仅允许使用这些模型 ID / 端点 ID。
endpoints:该账户 IAM 子用户可见的所有端点。状态为 Running 表示端点可用。
素材库概述
素材库允许您上传个人图片/视频作为素材,用于 Seedance 2.0 视频生成(例如虚拟形象、参考素材等)。素材按 素材组 进行分组管理。
在视频生成中使用素材
素材上传后,等待状态变为 active,即可在视频生成提示词中使用其 ID:
{
"content": [
{ "type": "image_url", "image_url": { "url": "asset://asset-20260601-xxxxx" } },
{ "type": "text", "text": "图片1中的人物正在雨中跳舞" }
]
}
素材要求
| 类型 | 格式 | 大小 | 其他 |
|---|---|---|---|
| 图片 | jpeg, png, webp, bmp, tiff, gif, heic | < 30MB,300-6000px | 宽高比 0.4 ~ 2.5 |
| 视频 | mp4, mov | < 50MB,480p-1080p | 2-15秒,24-60fps |
| 音频 | wav, mp3 | < 15MB | 2-15秒 |
创建素材组
创建一个素材组,用于组织相关素材(例如同一虚拟角色的所有素材)。
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
Name | String | 是 | 素材组名称 |
GroupType | String | 是 | AIGC |
Description | String | 可选 | 素材组描述 |
响应
{
"ResponseMetadata": { ... },
"Result": {
"Id": "group-20260601-xxxxx"
}
}
列表素材组
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
Filter | Object | 是 | { "GroupType": "AIGC" }。可选添加 "Name" 进行模糊搜索或 "GroupIds" 数组。 |
PageNumber | Integer | 可选 | 页码,从 1 开始。默认:1 |
PageSize | Integer | 可选 | 每页条数。默认:10 |
请求示例
{
"Filter": { "GroupType": "AIGC" },
"PageNumber": 1,
"PageSize": 10
}
上传素材
向素材组中上传素材(图片/视频/音频)。这是一个异步接口,素材初始状态为 processing。
请求体
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
AssetGroupId | String | 是 | 创建素材组时返回的素材组 ID |
URL | String | 是 | 文件的公开 URL 地址 |
AssetType | String | 是 | Image / Video / Audio |
FileName | String | 可选 | 自定义文件名 |
响应
{
"ResponseMetadata": { ... },
"Result": {
"Id": "asset-20260601-xxxxx",
"Status": "Processing"
}
}
查询素材
查询素材的状态和详细信息。请轮询直到状态变为 Active,然后才能在视频生成中使用。
响应(已激活)
{
"ResponseMetadata": { ... },
"Result": {
"Id": "asset-20260601-xxxxx",
"Status": "Active",
"AssetType": "Image",
"PreviewUrl": "https://..."
}
}
素材状态值:Processing(处理中) → Active(可使用) 或 Failed(失败)。
示例:文生视频
// POST /relay/v3/contents/generations/tasks { "model": "doubao-seedance-2-0-260128", "content": [ { "type": "text", "text": "夕阳下,一只金毛在海滩奔跑,电影感,慢动作,4K画质" } ], "duration": 5, "resolution": "720p", "ratio": "16:9", "generate_audio": true }
示例:图生视频(首帧模式)
// POST /relay/v3/contents/generations/tasks { "model": "doubao-seedance-2-0-260128", "content": [ { "type": "image_url", "image_url": { "url": "https://example.com/first-frame.jpg" } }, { "type": "text", "text": "镜头缓缓推进,人物微笑并挥手" } ], "duration": 5, "resolution": "720p", "ratio": "16:9" }
示例:素材 + 视频生成
使用已上传的虚拟形象素材作为参考:
// 第一步:上传素材(需先创建素材组) // POST /relay/v3/assets { "AssetGroupId": "group-20260601-xxxxx", "URL": "https://example.com/portrait.jpg", "AssetType": "Image" } // 返回:{ "Result": { "Id": "asset-20260601-xxxxx" } } // 第二步:等待素材变为 Active 状态(轮询 POST /relay/v3/assets/asset-xxx) // 第三步:使用素材生成视频 // POST /relay/v3/contents/generations/tasks { "model": "doubao-seedance-2-0-260128", "content": [ { "type": "image_url", "image_url": { "url": "asset://asset-20260601-xxxxx" }, "role": "reference_image" }, { "type": "text", "text": "图片1中的人物正在舞台上发表演讲" } ], "duration": 8, "resolution": "720p", "ratio": "16:9" }
cURL 示例
创建任务
curl -X POST https://your-host/relay/v3/contents/generations/tasks \
-H "Authorization: Bearer rk-your-relay-key" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0-260128",
"content": [{"type": "text", "text": "夜晚的未来城市,飞行汽车穿梭其中"}],
"duration": 5,
"resolution": "720p",
"ratio": "16:9"
}'
查询任务
curl https://your-host/relay/v3/contents/generations/tasks/cgt-xxxxx \ -H "Authorization: Bearer rk-your-relay-key"
查询模型列表
curl https://your-host/relay/v3/models \ -H "Authorization: Bearer rk-your-relay-key"
列表素材组
curl -X POST https://your-host/relay/v3/assets/groups/list \
-H "Authorization: Bearer rk-your-relay-key" \
-H "Content-Type: application/json" \
-d '{"Filter": {"GroupType": "AIGC"}, "PageNumber": 1, "PageSize": 10}'
创建素材组
curl -X POST https://your-host/relay/v3/assets/groups \
-H "Authorization: Bearer rk-your-relay-key" \
-H "Content-Type: application/json" \
-d '{"Name": "我的角色", "GroupType": "AIGC"}'
上传素材
curl -X POST https://your-host/relay/v3/assets \
-H "Authorization: Bearer rk-your-relay-key" \
-H "Content-Type: application/json" \
-d '{
"AssetGroupId": "group-xxxxx",
"URL": "https://example.com/portrait.jpg",
"AssetType": "Image"
}'