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