Seedance 2.5
用提示词、首尾帧,或者参考图、参考视频、参考音频生成带声音的视频,也可以编辑、续写一段视频,按出片时长计费。
Seedance 2.5(产品 seedance)用提示词、首尾帧,或者参考图、参考视频、参考音频生成视频,也可以编辑、续写一段已有的视频。出片默认带声音。五种模式各有一页说明,有各自的参数、价格和请求示例:
mode | 说明 | 文档 |
|---|---|---|
text_to_video | 文生视频:只用提示词生成 | 文生视频 |
image_to_video | 首尾帧生视频:指定首帧(也可以加上尾帧)生成 | 首尾帧生视频 |
reference_to_video | 参考生成:用参考图、参考视频、参考音频生成新视频 | 参考生成 |
video_edit | 视频编辑:按提示词修改一段已有的视频 | 视频编辑 |
video_extension | 视频续写:接着一段已有的视频往后续,或者往前补一段 | 视频续写 |
这一页是所有模式通用的规则。
创建任务
https://api.nanoapi.ai/v1/tasks用所有模型共用的创建任务接口,model 传 "seedance-2.5",mode 传上面的一种。所有模式都有的参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | seedance-2.5 |
mode | string | 是 | text_to_video、image_to_video、reference_to_video、video_edit 或 video_extension |
resolution | string | 是 | 480p、720p 或 1080p |
aspect_ratio | string | text_to_video、image_to_video、reference_to_video 必填;video_edit、video_extension 不能传 | 画面比例:auto、21:9、16:9、4:3、1:1、3:4 或 9:16。传 auto 时跟随首帧或参考图、参考视频的比例,没有可以跟随的(text_to_video,或者只有参考音频)时按 16:9。video_edit、video_extension 跟随传入的视频 |
duration | integer | 是;video_edit 不能传 | 出片时长(秒),4–30,按它计费,见价格。video_extension 是续写出来那一段的长度。video_edit 出片和要编辑的视频一样长,见视频编辑 |
generate_audio | boolean | 否 | 出片是否带声音,默认 true。带不带声音都是同一个价 |
webhook_url | string | 否 | 任务成功或失败时通知该地址,见回调 |
- 必传参数:所有模式都要传
resolution;text_to_video、image_to_video、reference_to_video还要传aspect_ratio;除了video_edit,都要传duration。prompt、image_urls、video_url、video_urls、audio_urls、extension_mode是必填、可选还是不能传,每个模式不一样,见各模式的页面。 - 参数检查:参数不符合所选模式的规则时(例如
text_to_video传了image_urls、video_edit传了duration或aspect_ratio、video_extension没传extension_mode),返回400 invalid_request,param是对应的参数名,任务不会创建。 - 响应:
200 OK,和所有模型一样是精简的任务对象(见创建任务的返回),data.model是seedance-2.5。保存data.id,用它获取结果。 - 接口通常不到 1 秒返回,几秒内冻结费用。
获取结果
一般要几分钟出片(480p 约 4–6 分钟)。任务结束(成功或失败)后用下面任一方式拿结果:
- 回调(生产环境推荐):创建时传了
webhook_url,任务结束时会把完整的任务推送一次,见回调。 - 轮询:用
data.id调用GET /v1/tasks/{task_id},间隔 15 秒以上,直到status为succeeded或failed;多个任务用列出任务的ids一次查询。
| 字段 | Seedance 2.5 |
|---|---|
outputs[0].url | 成片,generate_audio 为 true(默认)时带声音。video_extension 只有新生成的那一段,见视频续写 |
outputs[0].preview_url | 无声的压缩版,适合预览,见结果 |
billing.billed_seconds | duration;video_edit 是实际的出片时长 |
input | 你提交的参数。一定有 generate_audio(没传时为 true) |
失败时冻结的钱全额退回,原因在 data.error.type,见错误。完整的字段见任务对象。
素材
所有素材都以公开的 http(s) 链接提交。不提供上传接口,请自行托管文件。链接最长 4096 字符,必须能直接下载,不能指向 localhost 或内网、回环、保留地址。
| 参数 | 是什么 | 哪些模式 |
|---|---|---|
image_urls | 图片:首帧和尾帧(最多 2 张),或者参考图(最多 30 张) | image_to_video、reference_to_video、video_edit |
video_url | 要编辑或续写的视频 | video_edit、video_extension |
video_urls | 参考视频,最多 3 段 | reference_to_video |
audio_urls | 参考音频(mp3、wav、m4a 等常见格式),最多 9 段 | reference_to_video |
哪些必传见各模式的页面。素材要满足下面的要求:
| 素材要求 | 不满足时任务失败 |
|---|---|
video_edit 要编辑的视频 4–30 秒 | video_too_short / video_too_long |
video_extension 要续写的视频、每段参考视频不超过 30 秒 | video_too_long |
| 参考视频加起来不超过 30 秒 | video_too_long |
| 每段参考音频、所有参考音频加起来都不超过 30 秒 | invalid_media |
image_to_video 的首帧和尾帧横竖一致(都是横图或者都是竖图,有一张是正方形的不检查) | invalid_media |
素材下载不了、读不了(损坏、格式不支持)时,任务失败(invalid_media)。
Seedance 2.5 的所有素材都在任务提交给生成服务后才读取(创建后几秒内),这时已经冻结过费用,上面这些创建任务时都不检查;素材用不了时,冻结的费用全额退回。任务结束前所有链接都要保持可访问,有有效期的链接也不能提前过期。
在提示词里引用素材
prompt 里写 | 指的是 |
|---|---|
@Image1、@Image2… | image_urls 里的图片,按顺序编号 |
@Video1、@Video2… | 视频:先 video_url,再按顺序是 video_urls 里的视频。video_edit 的 @Video1 是要编辑的视频;reference_to_video 的 @Video1 是第一段参考视频 |
@Audio1、@Audio2… | audio_urls 里的音频,按顺序编号 |
价格
费用 = 出片时长 duration × 所选模式和分辨率的每秒单价正在读取当前价格…
计费秒数就是请求的 duration(4–30 秒);video_extension 是续写出来那一段的长度。和图片、视频、音频都无关:带参考视频、参考音频,出片带声音(generate_audio),都不额外收费。
video_edit不能传duration:先冻结 30 × 每秒单价,任务成功后按实际出片时长扣费,多冻结的部分退回,见视频编辑 → 价格。
例如 720p 的 text_to_video,duration 为 5:冻结 5 × 它的 720p 每秒单价,成功后扣同样的金额,失败全额退回。冻结和扣费的通用规则见计费。
除了 video_edit,价格只由请求参数决定,提交前就能算出来:当前单价从 GET /v1/products 读取,prices 每个模式、每个分辨率一行(看这一行的 mode),价格会调整,不要写死;实际费用以查询任务返回的 billing.frozen 为准。
错误
Seedance 2.5 特有的错误和失败原因。创建任务的全部错误见创建任务 → 错误,全部失败原因见失败原因。
创建请求出错:请求返回 HTTP 错误,任务不会创建。
| 状态码 | error.type | 何时出现 | 怎么处理 |
|---|---|---|---|
400 | invalid_request | 参数不符合所选模式的规则:缺了必填的(text_to_video、video_edit、video_extension 要传 prompt;video_edit、video_extension 要传 video_url;video_extension 要传 extension_mode)、传了这个模式不能传的(video_edit 传了 duration 或 aspect_ratio,video_extension 传了 aspect_ratio,或者这个模式用不上的素材)、素材太多,或者 resolution、aspect_ratio、duration、extension_mode 的取值不对。param 是对应的参数名,message 说明哪里不对,例如 duration is not allowed for mode video_edit; the output is as long as the source video、image_urls is not allowed for mode text_to_video。各模式的规则见各自的页面 | 按 param 改好参数后重新请求 |
任务失败:创建请求成功(200),任务之后变成 failed。这种情况没有 HTTP 状态码,原因在任务的 error.type,通过查询任务或回调拿到。
error.type | 何时出现 | 怎么处理 |
|---|---|---|
insufficient_balance | 可用余额不够 duration × 每秒单价(video_edit 按 30 秒算)。创建后几秒内出现,不冻结费用 | 充值后重新创建 |
spend_limit_exceeded | 加上这个任务的费用会超出 API Key 的消费限额。创建后几秒内出现,不冻结费用 | 到控制台 → API Keys 调高限额,或等限额重置后重新创建 |
invalid_media | 图片、视频或音频下载不了或读不了(损坏、格式不支持),参考音频有一段超过 30 秒或者加起来超过 30 秒,或者 image_to_video 的首帧和尾帧一横一竖。提交后几秒内下载素材时才发现 | 按 error.message 换掉有问题的素材,重新创建 |
content_policy | 提示词或素材不符合内容政策:含不适宜内容,或含受保护的肖像、版权内容(例如公众人物照片)。被模型服务商的审核拦下的素材也算。提交给生成服务时或生成过程中被拦下,冻结的费用全额退回 | 原样重新提交还会失败,请更换提示词或素材 |
video_too_short | video_edit 要编辑的视频不到 4 秒。提交后几秒内下载视频时才发现,started_at 可能为 null | 换成 4–30 秒的视频,重新创建 |
video_too_long | 要编辑或续写的视频、或者某一段参考视频超过 30 秒,或者参考视频加起来超过 30 秒。提交后几秒内下载视频时才发现,started_at 可能为 null | 裁剪视频(或少带几段),让每段都不超过 30 秒、参考视频加起来也不超过 30 秒,重新创建 |
error.message 只说要求,不说你的视频多长(例如 The video duration must be between 4 and 30 seconds.),全部说明见每种原因的 message。invalid_media、video_too_short、video_too_long 是在冻结之后失败的:billing.frozen 是冻结的金额,全额退回(refunded 等于 frozen),billing.charged 为 "0.00"。