视频编辑
Kling 4.0 的 video_edit:按提示词修改一段已有的视频,可以附上参考图和参考视频。
Kling 4.0 按提示词修改一段已有的视频,例如替换画面里的物体、改变风格,可以附上参考图和参考视频。
创建任务
https://api.nanoapi.ai/v1/tasks用所有模型共用的创建任务接口,model 传 "kling-4.0"。接口通常不到 1 秒返回,几秒内冻结费用,一般 1–5 分钟出片;任务结束后获取结果。
请求头
| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <API Key>,见鉴权 |
Content-Type | 是 | application/json |
Idempotency-Key | 否 | 每个新任务一个唯一字符串,建议用 UUID(1–255 个字符),见防止重复创建 |
请求体
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | kling-4.0 |
mode | string | 是 | video_edit |
video_url | string | 是 | 要编辑的视频:3–30 秒,720p 及以上(短边至少 720 像素),画面比例不超过 2.5:1,见素材。http(s) 链接,最长 4096 字符,必须能直接下载,不能指向内网地址 |
prompt | string | 是 | 描述要怎么修改,最长 8000 字符。可以用 @Video1(要编辑的视频)、@Video2 起(参考视频)、@Image1 起指代素材,见引用素材 |
image_urls | string[] | 否 | 最多 10 张参考图(例如要换上去的物体),每张是一个 http(s) 链接,最长 4096 字符,必须能直接下载,不能指向内网地址 |
video_urls | string[] | 否 | 最多 4 段参考视频(例如要模仿的动作),链接要求同 video_url。每段 3–30 秒,720p 及以上,画面比例不超过 2.5:1;和 video_url 加起来不超过 30 秒,所以 video_url 是 30 秒时不能再带 |
aspect_ratio | string | 是 | 画面比例:auto、21:9、16:9、9:16 或 1:1。auto 跟随要编辑的视频的比例 |
resolution | string | 是 | 720p 或 1080p,决定价格 |
duration | integer | 否 | 出片时长(秒),3–30,按它计费,见价格。传了就按它出片,和要编辑的视频有多长无关;不传时出片时长跟随要编辑的视频,见不传 duration |
webhook_url | string | 否 | 任务成功或失败时通知该地址:https,最长 2048 字符,不能指向内网、回环或保留地址。见回调 |
不传 duration
- 出片时长:要编辑的视频的时长(取画面和音轨里较长的那个),向上取整到整秒,多出不到 0.05 秒的不算(10.02 秒按 10 秒,10.06 秒按 11 秒)。
- 计费:先冻结 30 × 每秒单价,任务成功后按实际出片时长扣费,多冻结的部分退回,见价格。
- 余额:可用余额(以及 Key 的消费限额)要够 30 秒的费用,视频再短也一样,否则任务失败(
insufficient_balance或spend_limit_exceeded)。传了duration就只冻结请求的时长。
把车换成参考图里的那辆,1080p,8 秒:
curl https://api.nanoapi.ai/v1/tasks \
-H "Authorization: Bearer $NANOAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-4.0",
"mode": "video_edit",
"video_url": "https://example.com/source.mp4",
"image_urls": ["https://example.com/ref.jpg"],
"prompt": "Replace the car with the one in the reference image",
"aspect_ratio": "auto",
"resolution": "1080p",
"duration": 8
}'带一段参考视频、不传 duration(出片时长跟随要编辑的视频),720p:
curl https://api.nanoapi.ai/v1/tasks \
-H "Authorization: Bearer $NANOAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-4.0",
"mode": "video_edit",
"video_url": "https://example.com/main.mp4",
"video_urls": ["https://example.com/dance.mp4"],
"prompt": "Edit @Video1: make her move like the dancer in @Video2",
"aspect_ratio": "auto",
"resolution": "720p"
}'响应:200 OK。data 是刚创建的任务,只有下面这几个字段,各字段的含义见创建任务的返回。保存 data.id,用它获取结果:任务成功后,查询结果或回调里的 data.outputs[0].url 就是成片。创建之后任务仍可能失败(例如素材下载不了),以查询或回调的结果为准。
{
"code": 200,
"message": "success",
"data": {
"object": "task",
"id": "tk_01jbc4k7m2n9p5q8r3s6t1v4w7",
"model": "kling-4.0",
"status": "queued",
"error": null,
"created_at": "2026-10-30T08:30:00Z"
}
}价格
费用 = 出片时长 duration × 所选分辨率的每秒单价正在读取当前价格…
例如 1080p、8 秒(上面第一个请求)是 8 × 1080p 的每秒单价。
不传 duration(上面第二个请求)时,先冻结 30 × 720p 的每秒单价。任务成功后按出片时长 × 每秒单价扣费,多冻结的部分退回:要编辑的视频 11 秒,就扣 11 秒、退回 19 秒的费用。这时 billing.billed_seconds 是出片时长。任务失败全额退回。
计费秒数就是请求的 duration,和要编辑的视频有多长无关;不传 duration 时是出片时长。价格会调整,当前单价请从 GET /v1/products 读取(prices 里 mode 是这个模式的行),不要写死;实际费用以查询任务返回的 billing.frozen 为准。Kling 4.0 所有模式的价格见 Kling 4.0 → 价格。
错误
创建请求出错:请求返回 HTTP 错误,任务不会创建。这个模式特有的:
| 状态码 | error.type | 何时出现 | 怎么处理 |
|---|---|---|---|
400 | invalid_request | 没传 video_url 或 prompt,image_urls 超过 10 张或 video_urls 超过 4 段(video_urls takes at most 4 videos for mode video_edit),没传 aspect_ratio 或 resolution,或者 aspect_ratio、resolution、duration 取值不对。param 是对应的参数名 | 按 param 改好参数后重新请求 |
创建接口的其他错误(401、402、429 等)见创建任务 → 错误。
任务失败:创建请求成功(200),任务之后变成 failed。这种情况没有 HTTP 状态码,原因在任务的 error.type,通过查询任务或回调拿到。
error.type | 何时出现 | 怎么处理 |
|---|---|---|
insufficient_balance | 不传 duration 时:可用余额不够 30 秒的费用,视频再短也一样。创建后几秒内出现,不冻结费用 | 充值,或者传 duration,重新创建 |
invalid_media | 要编辑的视频、参考视频或参考图下载不了或读不了(损坏、格式不支持),或者视频低于 720p、画面比例超过 2.5:1。提交后几秒内下载素材时才发现,冻结的费用全额退回 | 确认 video_url、video_urls、image_urls 都能公开下载,视频都符合要求,重新创建 |
video_too_short | 有一段视频(video_url 或 video_urls 里的)不到 3 秒(The video duration must be between 3 and 30 seconds.)。提交后几秒内下载视频时才发现(started_at 可能为 null),冻结的费用全额退回 | 换成 3 秒以上的视频,重新创建 |
video_too_long | 有一段视频超过 30 秒,或者 video_url 和 video_urls 加起来超过 30 秒(The total duration of the videos must be at most 30 seconds.)。提交后几秒内下载视频时才发现(started_at 可能为 null),冻结的费用全额退回 | 裁剪视频(或少带几段参考视频),重新创建 |
所有模式共用的失败原因(例如余额不够这个任务)见 Kling 4.0 → 错误,全部失败原因见失败原因。