Skip to main content

简短回答

Seedance 只看请求里每个素材的 role,不看你工具里勾了什么开关,也不看提示词。 图片没写 role 时,一张图会按「首帧图生视频」处理;这时再带上参考视频,就成了「首帧 + 参考素材」,原厂直接拒绝。 典型报错如下,提交任务时直接返回 400,不会创建任务,也不计费:
改法:用 Seedance 原生端点 POST /seedance/api/v3/contents/generations/tasks 提交,给图片写 "role": "reference_image"、视频写 "role": "reference_video";视频用公网可直接下载的 URL,或先入库再用 asset:// 素材 ID 引用。

一个真实案例

一位客户在自己搭的本地创作工具里,传了一张角色图和一段视频,勾选了「全能参考」,没勾「首尾帧」,提示词里还专门写了「图一不是首帧、不开首尾帧模式」,结果每次都报上面的错。 我们在网关侧抓到了这次请求的原文(图片 Base64 已截断):
这个请求有两处问题,任何一处都会导致失败: 这位客户的浏览器控制台里,同一个 mp4 还有 415 Unsupported Media Type 报错,来自工具自己的本地预览接口(localhost 上的 /api/media-preview/...)。这说明工具没能把这段视频处理成可用的地址,最后把本地路径原样塞进了请求。

不要用通用视频端点提交 Seedance

/v2/videos/generations(以及 /v1/videos/v1/video/generations)是网关的通用视频端点,字段是几家视频模型的最大公约数,表达不了 Seedance 的输入模式
  • 没有 role:分不清首帧、首尾帧和多模态参考,一图一视频这种组合一定会被当成「首帧 + 参考」
  • 分辨率透传不完整:实测 2.5 请求 480p 会按 720p 出片、2.0 系请求 1080p 会按 720p 出片,而计费按实际出片结算
  • 2.5 独有的参数omni_reference_task_typeoutput_format 等)没有对应字段
所以 Seedance 任务一律走原生端点 如果你用的是第三方工具,找一找它的 Seedance 通道能不能选「原生 / 火山方舟」格式;只提供通用视频接口的工具,做不了带参考视频的任务。

正确写法:每个素材都写 role

要点:
  • 三种输入模式互斥:首尾帧(2 张图,first_frame / last_frame)、首帧(1 张图)、多模态参考(reference_image / reference_video / reference_audio)。只要带了参考视频或参考音频,所有图片都必须写 reference_image
  • 不写 role 就是首帧:单张图不写 role,等同于 first_frame
  • 提示词里用 @图像1@视频1 按传入顺序指代素材
  • 参考素材数量:2.0 系最多 9 图 + 3 视频 + 3 音频,2.5 最多 30 图 + 10 视频 + 10 音频

参考视频怎么传

原厂是在自己的服务器上下载素材的,所以视频必须是原厂能直接访问到的地址。 提交前可以在任意一台能上网的机器上自查(把 <URL> 换成你的视频链接):
应返回 code=200typevideo/mp4video/quicktimesize 与原文件一致。返回 HTML、JSON 或 4xx 都说明这个链接给不了原厂。图片链接的完整自查方法见 图片链接能打开却报格式错误

相关文档

视频生成接口

原生端点、各输入模式的 content 组合与 role 取值

素材优先实践

参考视频为什么别用 Base64,以及入库拿素材 ID 的步骤