Skip to main content
本文面向通过西湖云统一网关调用 Seedance 视频模型的开发者,覆盖视频任务提交、异步查询、结果下载、Asset 素材上传与管理,以及图片首帧和尾帧组合调用。

平台约定

  • Base URL:https://ai.xihuyun.com
  • 所有请求使用平台 API Key:Authorization: Bearer <API_KEY>。
  • model 应使用平台模型页展示的可用模型名;需要固定渠道时,复制完整的渠道路由模型名。
  • Asset 上传和视频生成必须使用同一个 API Key。
  • Asset 引用统一使用上传响应中的完整 data.asset_uri,格式为 asset://随机assetid。不要自行添加固定前缀,也不要传对象存储 URL或预览 URL。
文档版本:2026-09-01 适用范围:本项目统一视频任务接口中的 Seedance / Doubao 视频模型
本文档描述用户通过本项目网关调用 Seedance 模型的方式。请求发往本项目部署域名,网关负责模型路由、上游请求转换、异步任务保存和任务状态查询;客户端不需要直接调用火山方舟或其他上游地址。

1. 基础信息

将下面的变量替换为实际值:

鉴权

所有提交、查询和视频内容下载请求都使用用户 API 令牌:
API 令牌必须属于已启用用户,并且该令牌所在分组可以使用所请求的模型。请勿把 API Key 写入前端公开代码、日志或错误上报内容。

接口列表

提交和查询必须使用同一种路径风格。例如使用 /v1/videos 提交后,应使用 /v1/videos/{task_id} 查询。不同入口返回字段基本一致;/v1/videos 及 /v1/videos/{task_id} 的时间字段为 Unix 秒,/v1/video/generations* 和 /v1/videos/generations* 入口的时间字段为 RFC3339 字符串。

2. 快速开始

2.1 文生视频

典型提交响应:
id 是本项目生成的公开任务 ID。后续查询时必须使用这个 ID,不要使用上游返回的内部任务 ID。

2.2 轮询任务

建议客户端每隔 2~5 秒查询一次,直到 status 变为 completed 或 failed。 完成响应示例:
output.video_url 在上游返回视频地址时出现;output.last_frame_url 只有在请求开启 return_last_frame 且上游返回尾帧时出现。

2.3 下载视频内容

如果客户端不希望直接访问上游视频地址,可以使用本项目的视频内容代理:
该接口只允许下载已完成任务,并返回视频二进制内容,不返回 JSON。任务不存在返回 404,任务尚未完成返回 400。

3. 请求参数

提交接口使用 application/json。model 必填;prompt 通常必填,但图生视频、参考生成可以使用视觉参考替代纯文本提示词,Seedance 2.5 还允许纯音频参考请求。

3.1 通用字段

duration 是规范字段。旧客户端可以传 seconds,但当 duration 同时存在时,以 duration 为准。size 也属于兼容字段;新调用请使用 resolution 和 ratio,尤其不要用 size 表示 Seedance 2.5 的分辨率。

3.2 结构化参考素材

推荐使用 reference_inputs,服务端会将其转换为上游 Seedance 所需的 content[]:
字段说明: 服务端生成的上游内容项大致如下:
用户调用统一接口时,不需要也不应自行包装 task_type、options 等非本项目请求字段;项目会根据统一字段构造上游 content[]。

3.3 旧版 metadata 兼容写法

下列写法仍可用于传入视频和音频参考:
还支持单个 metadata.video_url 或 metadata.audio_url。首尾帧可以通过 metadata.first_frame_url 和 metadata.last_frame_url 指定;使用 reference_inputs 的 role 更直观,也更适合同时传递时长信息。

4. Seedance 模型与能力限制

4.1 当前内置模型目录

当前 Doubao 视频适配器内置以下模型名。实际可用模型还受管理员渠道、模型映射、分组和令牌权限影响,请以部署实例的模型列表为准: Seedance 2.5 常见别名(例如 seedance-2.5、Seedance2.5、doubao-seedance-2.5)可被项目识别并在发送到上游时归一化为 doubao-seedance-2-5-260628;公开调用仍应优先使用部署实例实际配置的模型名。

4.2 Seedance 1.x / 1.5 与 2.0

项目对 Seedance 家族的通用输入能力按以下上限校验: Seedance 1.x / 1.5 和 2.0 的具体时长、分辨率和上游能力可能随已配置渠道而变化。当前项目不会把 Seedance 2.5 的固定范围自动套用到 2.0;请使用该渠道/模型的实际文档或控制台配置。 Seedance 2.0(含 doubao-seedance-2-0-fast-260128)的注意事项:
  • 音频参考必须同时存在至少一个图片或视频参考,不能仅传音频。
  • n 只能为 1;不能请求多输出。
  • seed、frames、camera_fixed、service_tier、fps、motion、negative_prompt 不支持,传入后会在扣费前拒绝。
  • output_format 对 Seedance 2.0 不支持;需要指定输出格式时使用 Seedance 2.5。
  • 未传 generate_audio 时,项目按 true 发送;如不需要生成音频,请明确传 "generate_audio": false。
示例:

4.3 Seedance 2.5

Seedance 2.5 只按明确的 2.5 模型标识启用以下契约: 音频参考可以单独使用,不要求同时传图片或视频。例如:

首帧和尾帧

首帧/尾帧通过图片参考的 role 指定:
首尾帧规则:
  • 最多一个 first_frame 和一个 last_frame。
  • 传 last_frame 时必须同时传 first_frame。
  • 使用首帧或尾帧时,ratio 必须为 adaptive 或省略。
  • 首尾帧模式不能同时混入 reference_image、reference_video 或 reference_audio 参考角色;如需混合素材,请使用普通参考生成模式。

Seedance 2.5 专用字段

示例:

5. 状态和响应字段

5.1 状态值

progress 为整数百分比。异步生成阶段的进度是网关根据上游状态映射的估算值,不应被当作精确的剩余时间。

5.2 标准响应字段

6. 错误处理

6.1 Seedance 参数校验错误

请求参数错误通常返回 HTTP 400:
常见错误码:

6.2 鉴权和权限错误

鉴权失败使用 OpenAI 风格错误结构:
常见 HTTP 状态码: 客户端应同时检查 HTTP 状态码和 JSON 中的 code、message 或 error,不要只依据 HTTP 200 判断视频已经生成成功。

7. 调用建议

  • 新项目使用 /v1/videos 和 /v1/videos/{task_id},并按 Unix 秒解析时间字段。
  • 所有图片、视频、音频 URL 都应能被上游服务访问;本地文件需要先上传到项目素材接口或其他可访问存储,再把返回 URL 作为参考地址。
  • 对视频和音频参考填写准确的 duration_seconds,便于 2.5 在提交前完成时长校验。
  • 2.0/2.5 只提交项目已声明支持的字段;不支持的字段会在预扣费前拒绝。
  • 任务提交成功只表示任务已进入异步队列;必须继续轮询到 completed 或 failed。
  • 费用由本项目当前渠道、模型、分组和视频计价配置决定,不要在客户端硬编码价格。生成任务可能先预扣额度,最终按任务实际结果完成结算。
  • 不要把同一任务的提交入口和查询入口混用,避免时间格式和响应适配方式不一致。

Asset 素材库 API(Seedance 2.0)

本文说明如何使用平台 Asset 素材库 API 上传、管理图片/视频/音频素材,并将素材引用到 Seedance 2.0 视频生成请求中。

1. 快速开始

准备平台地址和 API Key:
所有接口都使用以下请求头:
API Key 必须属于已启用用户,并且该用户有权使用目标 Seedance 模型。请勿把真实 Key 写入前端代码、公开仓库或日志。 最小可用流程:
  1. POST /v1/assets 上传素材。
  2. 从响应中读取 data.asset_uri,例如 asset://随机assetid。
  3. 将该 URI 放入 Seedance 2.0 的 images 或 content 字段。
  4. 使用返回的任务 ID 查询生成状态。

2. 接口概览

素材属于当前 API Key 对应的用户。生成请求也应使用同一个 API Key,以便平台校验 asset:// 的归属。

3. 上传本地素材

请求

字段说明: 支持的扩展名:

单文件成功响应

后续请求必须使用响应中的完整 data.asset_uri。不要把对象存储 URL、预览 URL 或自行拼接的 ID 当作 Seedance 素材引用。

批量上传

批量上传响应包含:
  • upload_batch_id:本批次 ID。
  • assets:成功创建的素材列表。
  • items:逐文件结果;每项包含 status,失败项包含 error。
批量请求可能出现部分成功。客户端应逐项检查 items,不要只根据 HTTP 状态判断所有文件是否成功。

4. 从在线地址导入

字段说明: 在线地址必须能被服务端访问。远程地址失效、扩展名不受支持或下载超时都会导致导入失败。

5. 查询和管理素材

查询列表

可选参数:

查询详情

删除和恢复

删除后的素材不能继续用于新的 Seedance 请求。需要继续使用时,先恢复素材并确认其状态可用。

文件夹

创建文件夹:
移动素材:

6. 使用 Asset 调用 Seedance 2.0

推荐入口:POST /v1/videos

提交成功后会返回异步任务,例如:
查询任务:
任务状态通常包括 queued、in_progress、completed、succeeded、failed 和 cancelled。建议每 2~5 秒查询一次,不要因为任务尚未完成而重复提交。

原生多模态入口:POST /v1/video/generations

需要显式声明参考图片角色时,可以使用:
查询时使用同一组路径风格:
prompt 必须放在请求顶层。不要只把文字写入 content。

7. 参数和兼容性提示

Seedance 2.0 不要传入当前契约未支持的 frames、seed、camera_fixed、fps、motion、negative_prompt 等字段。最终可用的模型、时长、分辨率、比例和素材数量仍以平台模型配置及接口返回为准。

8. 通用响应和错误处理

成功响应通常包含:
常见错误: 上传失败时,先修正文件或参数再重试。Seedance 任务提交成功后,优先轮询原任务;重复提交可能造成重复任务和重复计费。

9. Python 示例

项目提供了可复用脚本:seedance2_platform.py。它会自动上传本地图片,并可提交和轮询 Seedance 任务:
只上传素材:

10. 使用建议

  • 保存上传响应中的 asset_id 和 asset_uri,不要依赖临时预览 URL。
  • 在提交视频任务前,确认素材状态为 Active 或接口返回的可用状态。
  • 图片、视频、音频分别上传并记录用途,生成请求只传对应的 asset:// URI。
  • 生产环境为 API 请求设置超时、重试上限和任务轮询超时。
  • 记录业务侧的任务 ID 与素材 URI,便于定位失败任务;不要记录完整 API Key。