参考生成
Seedance 2.5 的 reference_to_video:用参考图、参考视频、参考音频生成新视频。
Seedance 2.5 让参考图里的人物、物体出现在新视频里,照着参考视频里的动作、运镜,或者配上参考音频。三样至少传一样,只传参考音频也可以。
创建任务
https://api.nanoapi.ai/v1/tasks用所有模型共用的创建任务接口,model 传 "seedance-2.5"。接口通常不到 1 秒返回,几秒内冻结费用,一般几分钟出片;任务结束后获取结果。
请求头
| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <API Key>,见鉴权 |
Content-Type | 是 | application/json |
Idempotency-Key | 否 | 每个新任务一个唯一字符串,建议用 UUID(1–255 个字符),见防止重复创建 |
请求体
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | seedance-2.5 |
mode | string | 是 | reference_to_video |
image_urls | string[] | 三样至少传一样 | 最多 30 张参考图,每张是一个 http(s) 链接,最长 4096 字符,必须能直接下载,不能指向内网地址 |
video_urls | string[] | 三样至少传一样 | 最多 3 段参考视频,链接要求同 image_urls。每段、加起来都不超过 30 秒,见素材 |
audio_urls | string[] | 三样至少传一样 | 最多 9 段参考音频(mp3、wav、m4a 等常见格式),链接要求同 image_urls。每段、加起来都不超过 30 秒 |
prompt | string | 否 | 描述视频内容,最长 8000 字符。可以用 @Image1、@Video1、@Audio1 等指代素材,见引用素材 |
resolution | string | 是 | 480p、720p 或 1080p,决定价格 |
aspect_ratio | string | 是 | 画面比例:auto、21:9、16:9、4:3、1:1、3:4 或 9:16。传 auto 时跟随参考图、参考视频的比例,只有参考音频时按 16:9 |
duration | integer | 是 | 出片时长(秒),4–30,按它计费,见价格 |
generate_audio | boolean | 否 | 出片是否带声音,默认 true。带不带都是同一个价 |
webhook_url | string | 否 | 任务成功或失败时通知该地址:https,最长 2048 字符,不能指向内网、回环或保留地址。见回调 |
image_urls、video_urls、audio_urls 至少传一样,都没传返回 400 invalid_request,param 为 image_urls。不能传 video_url,传了返回 400 invalid_request,param 为 video_url。
一张参考图、一段参考视频加背景音乐,竖屏,720p、5 秒:
curl https://api.nanoapi.ai/v1/tasks \
-H "Authorization: Bearer $NANOAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"mode": "reference_to_video",
"image_urls": ["https://example.com/cat.jpg"],
"video_urls": ["https://example.com/walk.mp4"],
"audio_urls": ["https://example.com/music.mp3"],
"prompt": "The cat from @Image1 walks down the street like the woman in @Video1, with @Audio1 as background music",
"aspect_ratio": "9:16",
"resolution": "720p",
"duration": 5
}'响应:200 OK。data 是刚创建的任务,只有下面这几个字段,各字段的含义见创建任务的返回。保存 data.id,用它获取结果:任务成功后,查询结果或回调里的 data.outputs[0].url 就是成片。创建之后任务仍可能失败(例如素材下载不了),以查询或回调的结果为准。
{
"code": 200,
"message": "success",
"data": {
"object": "task",
"id": "tk_01jbd2s8x4c6v9b3n5m7q1w4e8",
"model": "seedance-2.5",
"status": "queued",
"error": null,
"created_at": "2026-10-31T08:30:00Z"
}
}价格
费用 = 出片时长 duration × 所选分辨率的每秒单价正在读取当前价格…
例如上面的请求(720p、5 秒)是 5 × 720p 的每秒单价。带参考视频、参考音频不额外收费。
计费秒数就是请求的 duration,和传了几张图、几段视频和音频、它们有多长都无关。价格会调整,当前单价请从 GET /v1/products 读取(prices 里 mode 是这个模式的行),不要写死;实际费用以查询任务返回的 billing.frozen 为准。Seedance 2.5 所有模式的价格见 Seedance 2.5 → 价格。
错误
创建请求出错:请求返回 HTTP 错误,任务不会创建。这个模式特有的:
| 状态码 | error.type | 何时出现 | 怎么处理 |
|---|---|---|---|
400 | invalid_request | image_urls、video_urls、audio_urls 都没传(param 为 image_urls,message 是 image_urls, video_urls or audio_urls is required for mode reference_to_video),image_urls 超过 30 张、video_urls 超过 3 段或 audio_urls 超过 9 段(audio_urls takes at most 9 audio files for mode reference_to_video),传了 video_url,或者 resolution、aspect_ratio、duration 取值不对。param 是对应的参数名 | 按 param 改好参数后重新请求 |
创建接口的其他错误(401、402、429 等)见创建任务 → 错误。
任务失败:创建请求成功(200),任务之后变成 failed。这种情况没有 HTTP 状态码,原因在任务的 error.type,通过查询任务或回调拿到。
error.type | 何时出现 | 怎么处理 |
|---|---|---|
invalid_media | 参考图、参考视频或参考音频下载不了或读不了(损坏、格式不支持),或者参考音频有一段超过 30 秒(The audio duration must be at most 30 seconds.)、加起来超过 30 秒(The total duration of the audio files must be at most 30 seconds.)。提交后几秒内下载素材时才发现,冻结的费用全额退回 | 按 error.message 换掉有问题的素材或裁剪音频,重新创建 |
video_too_long | 有一段参考视频超过 30 秒(The video duration must be at most 30 seconds.),或者加起来超过 30 秒(The total duration of the videos must be at most 30 seconds.)。提交后几秒内下载视频时才发现(started_at 可能为 null),冻结的费用全额退回 | 裁剪视频(或少带几段),重新创建 |
所有模式共用的失败原因(例如余额不够这个任务)见 Seedance 2.5 → 错误,全部失败原因见失败原因。