← 返回管理后台 导出 Markdown

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 步快速接入:

1
获取 Relay Key
从管理员获取 rk-xxx
2
创建任务
POST 创建视频生成任务
3
轮询结果
GET 查询任务状态

最简示例 (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 会返回缓存结果。
安全提示:Relay Key 等同于 API 密钥,请妥善保管。不要在客户端代码、URL 参数或公开仓库中暴露。如果泄漏,请联系管理员轮转 Key。

处理流程

视频生成流程

1
鉴权
验证 relay_key
2
校验
检查模型、配额
3
代理转发
转发至火山引擎
4
记录
保存调用日志
5
响应
返回结果

素材 + 视频生成流程

1
创建素材组
素材分组
2
上传素材
图片/视频
3
查询素材
等待状态激活
4
创建任务
使用 asset://id
5
轮询结果
获取视频地址

错误码

所有响应遵循统一格式:

{
  "success": false,
  "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "配额已用尽或账户未激活"
  }
}

中转站错误

错误码HTTP 状态码说明
INVALID_RELAY_KEY401缺少或无效的 Relay Key(必须以 rk- 开头)
RELAY_NOT_FOUND401数据库中未找到对应的中转账户
RELAY_INACTIVE401账户已暂停或已吊销
MODEL_NOT_ALLOWED403请求的模型/端点不在白名单中
DURATION_EXCEEDED400请求的视频时长超出账户限制
RESOLUTION_EXCEEDED400请求的分辨率超出账户限制
QUOTA_EXCEEDED429已达每日/每月调用上限或并发任务数上限
NO_API_KEY400账户未配置 API Key(请联系管理员)
NO_CREDENTIALS400账户未配置 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。当任务到达终态(成功/失败/过期/取消)时,通过查询接口会自动减少并发任务计数。

提示:请定期查询任务状态,以保持并发任务计数器的准确性。如果长时间不查询,任务可能在约 48 小时后超时,届时计数器会自动修正。

创建视频生成任务

创建 Seedance 2.0 视频生成任务。支持文生视频、图生视频(首帧/首尾帧)、多模态参考生成等模式。

POST /relay/v3/contents/generations/tasks

请求体

字段类型必填说明
modelString模型 ID 或端点 ID,例如 doubao-seedance-2-0-260128ep-xxxxxxxx
contentArray内容项数组(详见下方)
durationInteger可选视频时长(秒)。Seedance 2.0 支持 4-15 秒。传 -1 表示自动。默认:5
resolutionString可选480p / 720p / 1080p(快速模型不支持 1080p)。默认:720p
ratioString可选16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive
generate_audioBoolean可选是否同步生成音频。仅 Seedance 2.0 支持。
safety_identifierString可选终端用户标识,用于内容溯源(最长 64 字符)。未提供时自动注入。
seedInteger可选随机种子,用于结果复现

内容项说明

类型字段格式说明
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-260128Seedance 2.0 标准版1080p
doubao-seedance-2-0-fast-260128Seedance 2.0 快速版720p

您也可以使用管理员配置的自定义端点 ID(例如 ep-20260528xxxxxx-xxxxx)。

查询任务状态

轮询视频生成任务的状态。请持续轮询直到状态变为终态。

GET /relay/v3/contents/generations/tasks/{task_id}

路径参数

参数类型说明
task_idString创建任务时返回的任务 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任务已取消
轮询策略:建议轮询间隔:5-10 秒。当状态到达终态时停止轮询。视频下载链接有效期有限(通常 24 小时)。

查询可用模型与端点

查询当前中转账户可用的模型和端点列表。用于发现已配置的模型/端点。

GET /relay/v3/models

响应

{
  "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-1080p2-15秒,24-60fps
音频wav, mp3< 15MB2-15秒

创建素材组

创建一个素材组,用于组织相关素材(例如同一虚拟角色的所有素材)。

POST /relay/v3/assets/groups

请求体

字段类型必填说明
NameString素材组名称
GroupTypeStringAIGC
DescriptionString可选素材组描述

响应

{
  "ResponseMetadata": { ... },
  "Result": {
    "Id": "group-20260601-xxxxx"
  }
}

列表素材组

POST /relay/v3/assets/groups/list

请求体

字段类型必填说明
FilterObject{ "GroupType": "AIGC" }。可选添加 "Name" 进行模糊搜索或 "GroupIds" 数组。
PageNumberInteger可选页码,从 1 开始。默认:1
PageSizeInteger可选每页条数。默认:10

请求示例

{
  "Filter": { "GroupType": "AIGC" },
  "PageNumber": 1,
  "PageSize": 10
}

上传素材

向素材组中上传素材(图片/视频/音频)。这是一个异步接口,素材初始状态为 processing

POST /relay/v3/assets

请求体

字段类型必填说明
AssetGroupIdString创建素材组时返回的素材组 ID
URLString文件的公开 URL 地址
AssetTypeStringImage / Video / Audio
FileNameString可选自定义文件名

响应

{
  "ResponseMetadata": { ... },
  "Result": {
    "Id": "asset-20260601-xxxxx",
    "Status": "Processing"
  }
}

查询素材

查询素材的状态和详细信息。请轮询直到状态变为 Active,然后才能在视频生成中使用。

POST /relay/v3/assets/{asset_id}

响应(已激活)

{
  "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"
  }'