Kling 4.0 视频生成
kling-4.0:文生视频、多关键帧图生视频、全能参考生成与视频编辑,3–30 秒、720p/1080p,异步,用 GET /tasks 查询
POST/text-to-video/kling-4.0
POST/image-to-video/kling-4.0
POST/omni-video/kling-4.0
可灵 4.0 的三个生成入口,路径与字段和可灵官方 API 一致。注意这些路径不带 /v1 前缀。
| 项 | 值 |
|---|---|
| 模型 | kling-4.0(写在路径里,请求体不传 model) |
| 模式 | 异步(提交 → 轮询 GET /tasks) |
| 计费 | 按总时长(秒)结算,按分辨率、是否有输入视频分别计价,见计费 |
| 媒体保留 | 结果链接 30 天后清理,请及时转存 |
快速开始
curl https://api.vibelab.me/text-to-video/kling-4.0 \
-H "Authorization: Bearer $LOOPTOKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "一只猫在窗台上打哈欠,镜头缓慢推进,伴随轻柔的环境音。",
"settings": {"duration": 10, "resolution": "1080p", "aspect_ratio": "16:9"}
}'响应示例:
{
"code": 0,
"message": "SUCCEED",
"request_id": "6a0d571e-d36c-4811-bb2b-698c94b19a8c",
"data": {
"id": "893605946402811985",
"status": "submitted",
"create_time": 1781080778802,
"update_time": 1781080778802
}
}用 data.id 调用 GET /tasks?task_ids=893605946402811985 查询结果,见响应。
模式选择
| 模式 | 入口 | 怎么传参 |
|---|---|---|
| 文生视频 | /text-to-video/kling-4.0 | 顶层 prompt |
| 图生视频 | /image-to-video/kling-4.0 | contents 中放 1–10 张 first_frame / middle_frame / last_frame,可选 1 项 prompt |
| 全能参考生成 | /omni-video/kling-4.0 | contents 中恰好 1 项 prompt,加参考图、参考视频、主体、音色 |
| 视频编辑 | /omni-video/kling-4.0 | 同上,素材中放 1 段 base_video(待编辑视频) |
请求参数
请求体
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
prompt | string | 文生视频必填 | - | 仅文生视频使用。长度须满足 英文字符数 / 26000 + 非英文字符数 / 11000 ≤ 1(纯英文 ≤ 26,000,纯中文 ≤ 11,000) |
contents | object[] | 图生、全能参考必填 | - | 素材列表,每项结构见下表 |
settings.resolution | string | 否 | 1080p | 720p、1080p |
settings.duration | integer | 否 | 由模型决定 | 3–30 秒。省略时由模型从提示词识别时长,识别不到为 10 秒;有待编辑视频时优先采用其时长 |
settings.aspect_ratio | string | 否 | 文生 16:9;全能参考 adaptive | 21:9、16:9、9:16、1:1;全能参考额外支持 adaptive;图生视频采用图片比例 |
options.callback_url | string | 否 | - | 任务状态变化时的 HTTPS 回调地址,见回调 |
options.external_task_id | string | 否 | - | 自定义任务 ID,同一账号下不可重复,可用于查询 |
options.watermark_info.enabled | boolean | 否 | false | 是否额外生成带水印结果 |
contents 素材项
type | 内容字段 | id | 数量限制 |
|---|---|---|---|
prompt | text(长度规则同 prompt) | - | 图生视频 ≤ 1;全能参考恰好 1 |
first_frame / last_frame | url | 可选 | 各 ≤ 1 |
middle_frame | url | 全能参考中有多张时必填 | 图片合计 ≤ 10 |
refer_image | url | 多张时必填 | 图片合计 ≤ 10;仅全能参考 |
feature_video | url | 可选 | 参考视频 + 待编辑视频合计 ≤ 5;仅全能参考 |
base_video | url | 可选 | ≤ 1;仅全能参考 |
element | element_id | 必填 | ≤ 7(视频角色主体 ≤ 3);仅全能参考 |
voice | voice_id | 必填 | ≤ 3;仅全能参考 |
- 除
prompt外的素材合计 ≤ 15;同一任务内id不得重复,在提示词中用@id引用。 - 图片:URL 或 Base64,JPG/JPEG/PNG,≤ 30MB,宽高 ≥ 300px,比例 2:5–5:2。
- 视频:URL,MP4/MOV,≤ 300MB,每段和总时长 3–30 秒(含视频角色主体),宽高 700–4553px,总像素 ≤ 8,294,400,比例 2:5–5:2,24–60fps。存在视频角色主体时,其与参考视频合计 ≤ 5。
- 图片、视频的格式、尺寸和时长由上游最终校验;数量限制由 LoopToken 提交时校验。
element_id、voice_id来自主体管理和音色管理,只能引用自己创建的资产,或已通过官方列表核实的预置资产(首次使用官方 ID 前先查询对应的官方列表页)。
请求示例
图生视频:首帧、中间帧、尾帧
{
"contents": [
{"type": "prompt", "text": "从 @start 自然过渡到 @middle,再到 @end,保持人物一致。"},
{"type": "first_frame", "url": "https://example.com/start.jpg", "id": "start"},
{"type": "middle_frame", "url": "https://example.com/middle.jpg", "id": "middle"},
{"type": "last_frame", "url": "https://example.com/end.jpg", "id": "end"}
],
"settings": {"duration": 15, "resolution": "1080p"}
}视频编辑
{
"contents": [
{"type": "prompt", "text": "编辑 @video,参考 @image 的色彩,保留原有动作与背景。"},
{"type": "base_video", "url": "https://example.com/input.mp4", "id": "video"},
{"type": "refer_image", "url": "https://example.com/style.jpg", "id": "image"}
],
"settings": {"duration": 10, "resolution": "1080p", "aspect_ratio": "adaptive"}
}响应
用 GET /tasks 查询,状态依次为 submitted → processing → succeeded / failed(终态)。成功结果在 data[].outputs:
| 字段 | 类型 | 说明 |
|---|---|---|
outputs[].type | string | video |
outputs[].url | string | 视频地址 |
outputs[].duration | string | 实际输出时长(秒) |
outputs[].watermark_url | string | 带水印结果,仅 options.watermark_info.enabled 为 true 时返回 |
usage.input_duration | string | 输入视频总时长(秒,含视频角色主体),仅有输入视频且任务结束时返回 |
输出为 24fps,始终带声音(声音内容通过提示词描述)。除上游的 billing 扣费字段外,官方返回的其他字段原样透传。
计费
总时长按官方规则计算后乘以对应档位单价。输出时长按标称整数秒计(如结果 3.041 秒计 3 秒),输入时长按 usage.input_duration(两位小数)计:
| 情况 | 总时长 | 档位 |
|---|---|---|
| 无输入视频 | 输出时长 | 无视频输入 |
| 有输入视频,输入时长 ≤ 输出时长 | 输出时长 × 2 | 有视频输入 |
| 有输入视频,输入时长 > 输出时长 | 输入时长 + 输出时长 | 有视频输入 |
输入视频包含 feature_video、base_video 和视频角色主体,是否有输入视频以结果中的 usage.input_duration 为准。
- 提交时按
settings.duration预冻结,省略时长按 30 秒;含feature_video、base_video或element时按有视频输入档位、时长再加 30 秒预冻结。 - 成功后按实际总时长结算,多退少补;失败全额退回。
错误
错误体为 {"code": ..., "message": "...", "request_id": "..."},通用错误码见 Kling 错误。以下是本页参数校验返回的 400 / 1201:
message | 处理 |
|---|---|
prompt is required and must be a string | 文生视频传顶层 prompt;contents 中的 prompt 项要带 text |
prompt exceeds Kling 4.0 mixed-language length limit | 缩短提示词,满足混合长度规则 |
contents must be a non-empty array | 图生、全能参考必须传 contents |
contents must include exactly one prompt | 全能参考恰好 1 项 prompt;图生最多 1 项 |
image-to-video requires 1-10 images; omni-video supports at most 10 images | 调整图片数量 |
unsupported image-to-video contents type "..." | 图生视频只接受 prompt 和三种帧 |
contents exceeds Kling 4.0 material limits | 对照素材项的数量限制 |
element requires id / voice requires id | 为主体、音色素材填写 id |
settings.duration must be an integer between 3 and 30 | 时长传 3–30 的整数,或省略 |
settings.resolution must be 720p or 1080p | 4.0 不支持 4k |
settings.audio is not supported for kling-4.0 | 删除 settings.audio,在提示词中描述声音 |
unsupported settings.aspect_ratio | adaptive 仅全能参考可用 |
external_task_id already exists | 换一个自定义任务 ID |
没有能使用所引用主体或音色的渠道时,返回 503 / 5001。
注意事项
- 请求体传
settings.audio→ 400;4.0 始终有声。 - 主体、音色资产 → 只能在创建或查询它的原渠道账号下使用。