使用指南
多图与参考视频说明
多张参考图、参考视频、深度视频、音频、能力边界、任务恢复与计费说明
多图与参考视频说明
本页回答「多张参考图 + 一个参考视频」的程序接入问题,包括能力边界、顺序规则、深度视频、音频、任务恢复和计费。请求体的完整字段表和可复制示例见视频生成接口,素材入库见素材库接口。
先看结论
- 多张图片和一个参考视频使用同一个
content数组:每张图片占一个image_url元素,视频占一个video_url元素。 - 「深度视频」没有单独的
deep_video字段,按普通参考视频提交,role使用reference_video。 - 数组顺序就是素材顺序。建议在提示词里明确写「图片1、图片2、图片3、参考视频」,不要依赖服务端按文件名猜顺序。
generate_audio: false表示关闭生成结果的音频输出,它不等于保留输入参考视频的原声音轨,也不等于把输入音频复制到成片。- 精确的图片数量、视频数量、文件大小、编码和并发上限以模型目录和实际接口响应为准,平台没有为所有 Seedance 变体承诺一套统一上限。
- 如果必须保留原片的动作、机位和切镜,参考视频只能作为模型参考。当前公开请求没有「在第 N 秒强制切镜」的通用参数,精确时序不能仅靠接口字段保证。
一、确认当前模型能力
先读取当前 Key 可见的模型目录:
curl "https://locopalai.com/v1/models" \
-H "Authorization: Bearer $LOCOPAL_API_KEY"目录只确认「模型是否可见、可用于哪些接口」,data[].id 才是请求时要填的 model。参考图片数量、参考视频、参考音频、输出比例、时长和清晰度等具体限制,以模型详情页和接口返回的参数错误为准;目录没有列出的限制,平台不会替模型猜测。
| 能力 | 怎么确认 | 平台能否统一承诺 |
|---|---|---|
| 参考图片 | 模型详情 + 实际参数校验 | 不能跨模型统一承诺数量上限 |
| 参考视频 | 模型详情明确支持时提交 reference_video | 不能跨模型统一 |
| 参考音频 | 模型详情明确支持时提交 reference_audio | 不能跨模型统一 |
| 输出比例 | 模型详情 | 以详情列出的值为准 |
| 输出时长 | 模型详情 | 以详情和实际参数错误为准 |
| 输出清晰度 | 模型详情 | 没有统一的 720p 承诺 |
| 输入视频分辨率、帧率、编码、大小 | 模型详情或错误响应 | 平台没有跨模型统一承诺 |
二、参考素材的入库与引用
虚构人物设定图、角色多视图和无人场景图都不是真人授权素材,按普通虚拟素材入库:
POST /api/v1/materials/groups
POST /api/v1/materials/assets
GET /api/v1/materials/assets/{asset_id}素材状态变成 Active 后,视频请求里的图片 URL 可以改成:
asset://asset-20260911035115-etexu图片逐张入库时,每一张都会得到独立的 asset_id。人物图和场景图可以放在同一虚拟分组,也可以分别建立分组;提交视频时通过不同的 content 元素引用。入库、轮询和错误响应见素材库接口。
提交成功时 status 通常是 Processing,处理完成后变成 Active;失败时 status 为 Failed、error_message 给出原因。审核是异步处理,平台不对所有图片承诺统一时长,程序应查询同一个 asset_id,不要在 Processing 时重复提交。
三、多图 + 一个参考视频
下面的请求表达「1 张人物图 + 2 张场景图 + 1 个参考视频」。数组下标从 1 开始解释:
content[1]是图片1,人物图;content[2]是图片2,场景图1;content[3]是图片3,场景图2;content[4]是参考视频。
content[0] 是文字提示词,不计入图片编号。
{
"model": "从 /v1/models 选择的视频模型 ID",
"content": [
{
"type": "text",
"text": "图片1是人物身份参考,图片2和图片3是场景参考。参考视频用于动作、机位和镜头节奏参考;保持人物身份和场景关系一致。"
},
{ "type": "image_url", "role": "reference_image", "image_url": { "url": "asset://人物素材ID" } },
{ "type": "image_url", "role": "reference_image", "image_url": { "url": "asset://场景素材ID1" } },
{ "type": "image_url", "role": "reference_image", "image_url": { "url": "asset://场景素材ID2" } },
{ "type": "video_url", "role": "reference_video", "video_url": { "url": "https://你的对象存储域名/reference-depth.mp4" } }
],
"duration": 7,
"resolution": "720p",
"ratio": "9:16",
"generate_audio": false,
"watermark": false
}创建成功后返回任务 ID,随后只查询这个任务:
curl "$LOCOPAL_BASE_URL/v1/video/generations/$LOCOPAL_TASK_ID" \
-H "Authorization: Bearer $LOCOPAL_API_KEY"| 状态 | 客户端处理 |
|---|---|
queued | 已受理,继续查询同一个任务 ID |
in_progress | 生成中,更新进度,不要创建新任务 |
completed | 读取 metadata.url 并尽快下载或转存 |
failed | 读取 error.code、error.message |
unknown | 保留任务 ID,稍后查询 |
如果响应明确提示当前模型不支持素材库,应改用该模型支持的公网 HTTPS 图片地址或更换模型,不要绕过素材审核。完整的创建、查询响应示例见视频生成接口。
四、参考视频、声音和深度视频的边界
参考视频不是精确控制轨道
灰度深度视频在公开接口结构里仍是普通 reference_video。除非当前模型详情单独声明深度控制能力,否则平台不会把灰度值解释成深度约束,也不会保证严格复制原视频的深度、动作轨迹或切镜。
参考视频可以帮助模型理解动作、机位、构图和节奏,但成片仍由模型重新生成。当前公开请求没有通用的时间码轨道或强制切镜字段,需要接近某个时间点切镜时,只能在提示词里说明,并在生成后检查成片;如果必须帧级精确,应在外部剪辑或合成阶段完成。
输入音轨与 generate_audio
参考视频带原声音轨时,模型是否读取该声音轨取决于当前模型的参考视频实现。generate_audio: false 的确定含义是关闭生成结果的音频输出,它不承诺复制输入视频音轨,也不承诺把输入音轨作为独立参考音频使用。
- 目标是「生成无声视频」时,可以传
generate_audio: false; - 目标是「保留原片声音」时,不要只依赖这个字段,应在成片下载后用你自己的音视频合成流程处理,或选择模型详情明确支持参考音频和输出音频的配置;
- 模型详情没有声明支持参考音频时,不要额外提交
reference_audio。
五、当前不能统一承诺的限制
| 项目 | 规则 |
|---|---|
| 参考图片数量 | 由模型能力和实际服务校验决定,目录没有上限时平台不作统一数字承诺 |
| 参考视频数量 | 只有模型详情声明支持时才能提交,数量和总时长按模型实际限制 |
| 输入视频总时长 | 没有跨模型统一承诺,超限返回参数错误 |
| 输入分辨率、帧率、编码、文件大小 | 以模型详情和实际错误响应为准,文档不猜测 |
| 输出时长 | 使用模型详情声明的档位 |
| 输出清晰度 | 使用模型详情声明的值,不能因为模型名称包含 720p 就推断所有变体都支持 |
| HTTPS 签名 URL | 必须允许平台在任务创建和处理期间直接下载;平台不规定跨模型统一有效期,建议使用覆盖整个任务生命周期的有效期,或使用 asset:// |
| 深度视频 | 默认按普通 reference_video,没有单独的 deep_video 字段 |
| 精确切镜 | 当前公开接口没有通用强制时间码参数 |
关于「当前分组是否支持这组请求」
调用分组和素材库分组是两个概念,不能仅凭控制台分组名称判断是否支持多图或参考视频。实际判断顺序是:
/v1/models中选定模型存在;- 模型详情明确允许参考图和参考视频;
- 引用素材状态为
Active; - 创建接口返回
queued,说明请求已受理; - 若最终
failed,读取error.code和error.message判断组合或素材问题。
平台不会把一个不支持参考视频的模型静默切换到另一个模型,以免产生不可预期的费用和结果。
六、任务恢复、限流、幂等和计费
查询和恢复
创建接口返回 id 后必须立即保存,网络中断但已经拿到任务 ID 时只查询原任务。当前公开接口没有按「提示词 + 素材 + 参数」反查任务的通用方式;如果连接在创建响应返回前中断且没有任务 ID,平台无法保证仅凭请求正文找回原任务。因此调用方应在自己的数据库里保存业务请求,并在收到受理响应后立即落库任务 ID。
轮询、限流和保留
平台没有对所有调用分组统一公布并发数和每个 API Key 的查询频率,客户端应遵循 429 响应并使用退避轮询,建议 5~15 秒查询一次。成片生成后应尽快下载或转存,不能把返回 URL 当作永久地址;如果任务仍可查询但 metadata.url 已过期,先再次查询原任务,链接无法恢复时公开接口不保证能重新生成同一个地址。
幂等与客户端请求号
当前公开视频接口没有承诺用户可控制的官方幂等字段,也不承诺自定义请求号可以按请求正文去重。调用方可以用自己的业务请求号记录关联,但不要把它当作平台一定会识别的幂等键;平台侧只有在返回任务 ID 后才有可靠的恢复依据。
更换 API Key
任务和素材的归属以平台账号为准,同一账号下更换 Key 后可以继续查询原任务,使用创建任务时的 Key 重试查询即可。如果更换后的 Key 不属于同一账号,查询会返回 401 或 404,此时不要重新创建任务来规避查询失败。
计费、失败和退款
素材入库、审核、参考视频下载和视频生成是否计费,取决于当前模型和平台价格配置。视频任务在完成时按实际用量结算,创建成功不会预先扣费,完成后账单只出现一条实际扣费记录;提交前会校验余额是否覆盖预估,不足时直接返回可读提示且不创建任务。费用数据只在结算完成后出现在查询响应里:
- 创建响应只代表任务已被受理,此时没有任何结算数据,因此不返回扣费字段,不要按创建响应判断本次费用;
- 查询响应在任务完成结算后返回
usage:usage.total_tokens是本次计费的视频 token 数(上游只上报一个 token 数,按平台账单口径记在usage.prompt_tokens,usage.completion_tokens为0),usage.quota是消耗的积分,usage.amount是同一积分折算的人民币金额(usage.currency固定为CNY); - 参数校验失败(HTTP
400/403)表示请求未被受理,不会产生生成任务费用; - 已返回任务 ID 后,是否收费和失败退款按该模型与平台计费规则处理;
- 审核失败、生成失败、取消任务的扣费和退款规则不能仅由任务状态推断;
- 需要核对费用时,保存任务 ID、模型 ID、创建时间和 API Key 所属账号,用查询响应的
usage.quota/usage.amount在控制台账单核对,或联系平台支持。
七、常见错误响应
{
"error": {
"code": "invalid_parameter",
"message": "当前模型不支持参考视频,或参考素材数量超出限制",
"type": "invalid_request_error",
"param": "content"
}
}| HTTP | 处理建议 |
|---|---|
400 | 检查模型、角色、数组顺序、URL、数量、时长和清晰度 |
401 | 检查 API Key 是否缺失、失效或没有当前模型权限 |
404 | 检查任务 ID、素材 ID 或模型 ID |
429 | 按提示退避,减少并发,不要重复创建任务 |
500 / 503 | 已有任务 ID 时继续查询原任务;没有任务 ID 时保存业务请求并人工核对是否已受理 |
