Skip to content

Kling 视频生成 API ​

本文介绍如何通过本服务调用 Kling 视频生成模型。客户端使用本服务签发的 API Token;示例中的 BASE_URL 和 API_TOKEN 请替换为实际值。

扩展参数统一放在 metadata 中,字段名使用 PascalCase,例如 Sound、ImageTail、CameraControl。不要在 metadata 中传 Model、Prompt、Image、Duration、Mode,这些字段由顶层参数生成。

接口一览 ​

方法路径用途响应风格
POST/v1/videos创建视频生成任务OpenAI Video 对象
GET/v1/videos/{task_id}查询任务状态和结果OpenAI Video 对象
GET/v1/videos/{task_id}/content下载生成的视频视频二进制
POST/v1/video/generations创建视频生成任务旧兼容格式
GET/v1/video/generations/{task_id}查询任务状态和结果旧兼容格式
POST/v1/videos/generations创建视频生成任务旧兼容格式

能力路由 ​

本服务会根据图片输入自动选择文生视频或图生视频:

请求形态能力说明
不传 image / images文生视频只使用文字提示词生成视频
传入 image图生视频使用 image 作为首帧或参考图
传入 images图生视频仅使用第一张图片作为首帧或参考图;尾帧请用 metadata.ImageTail

支持模型 ​

API 模型名上游模型码文生视频图生视频
kling-v1v1.0支持不建议使用
kling-v1-5v1.5支持不建议使用
kling-v1-6v1.6支持支持
kling-v2-masterv2.0支持支持
kling-v2-1v2.1不建议使用支持
kling-v2-1-masterv2.1m支持不建议使用
kling-v2-5-turbov2.5支持支持
kling-v2-6v2.6支持支持
kling-v3v3.0支持支持

kling-v2-1 对应图生视频文档中的 v2.1;kling-v2-1-master 对应文生视频文档中的 v2.1m。新接入请按能力选择模型,不要在图生视频中混用 kling-v2-1-master。

鉴权 ​

所有请求都使用 Bearer Token:

http
Authorization: Bearer sk-...
Content-Type: application/json

请求参数 ​

顶层参数 ​

参数名称类型必选描述
modelstring是要调用的 Kling 模型名称,必须使用“支持模型”表中的 API 模型名,例如 kling-v2-6、kling-v3。服务会把该名称转换为上游模型码。
promptstring是视频内容描述。建议同时描述主体、动作、场景、镜头语言和风格,例如“雨夜街头,一名男子撑伞走过霓虹灯牌,镜头缓慢跟拍,电影感”。最长建议 2500 字符。
imagestring图生视频必选单张首帧或参考图。支持公网 HTTP/HTTPS URL 或 Base64 图片。传入后请求按图生视频处理。图片建议不超过 10MB,分辨率不小于 300x300,宽高比在 1:2.5 到 2.5:1 之间,格式为 JPG、JPEG 或 PNG。
imagesstring[]否图片 URL/Base64 数组。当前 Kling 图生视频只使用第一张;如需尾帧,不要放第二张到 images,应使用 metadata.ImageTail。
durationinteger/string否视频秒数。省略默认 5。可用值见下方 Duration 参数。
modestring否生成模式。省略默认 std。可用值见下方 Mode 参数。
metadataobject否扩展参数对象。只能放下方“metadata 参数”表中的字段,字段名使用 PascalCase。

metadata 参数 ​

metadata 中不要包含 Model、Prompt、Image、Duration、Mode,这些字段会由顶层 model、prompt、image / images、duration、mode 生成。若重复传入,容易造成请求内容和计费模型不一致。

参数名称类型必选适用模型 / 能力描述
ImageTailobject否kling-v1-6、kling-v2-master、kling-v2-1、kling-v2-5-turbo、kling-v2-6、kling-v3;仅图生尾帧图。对象字段:Url string,公网图片地址;Base64 string,图片 Base64。二选一。图片要求同 image。不要与 CameraControl、StaticMask、DynamicMasks 同时传。
AspectRatiostring否全部文生模型输出画幅。可选 16:9、9:16、1:1,省略默认 16:9。图生视频由输入图决定画幅,不要传该字段。
NegativePromptstring否全部模型;文生、图生负向提示词,用于减少模糊、畸变、低清晰度等问题。最长建议 2500 字符。
CfgScalenumber否kling-v1、kling-v1-5、kling-v1-6、kling-v2-1、kling-v2-1-master、kling-v3提示词相关性强度,取值 [0,1],省略默认 0.5。不要用于 kling-v2-master、kling-v2-5-turbo、kling-v2-6。
Soundstring否kling-v2-6、kling-v3;文生、图生是否生成声音。可选 on、off。kling-v2-6 使用 mode=std 时只能无声;需要声音时用 mode=pro 或省略 mode。
VoiceListarray<object>否kling-v2-6;仅图生指定音色列表,需要同时传 Sound=on。最多 2 个对象,每个对象包含 VoiceId string。Prompt 中需要引用对应音色 ID。不要与 ElementList 同时传;kling-v3 不支持指定音色。
CameraControlobject否kling-v1-6、kling-v2-master、kling-v2-1、kling-v2-1-master、kling-v2-5-turbo、kling-v2-6、kling-v3;文生、图生运镜控制。对象字段:Type string,可选 simple、down_back、forward_up、right_turn_forward、left_turn_forward;Config object。Type=simple 时 Config 必填,且 Horizontal、Vertical、Pan、Tilt、Roll、Zoom 六选一,类型均为 number,取值 [-10,10]。图生时不要与 ImageTail、StaticMask、DynamicMasks 同时传。
StaticMaskstring否kling-v1-6、kling-v2-master、kling-v2-1、kling-v2-5-turbo、kling-v2-6、kling-v3;仅图生静态遮罩图片,传公网 URL 或 Base64。格式要求同 image,宽高比必须与 image 一致;如同时传 DynamicMasks,分辨率必须与 DynamicMasks.Mask 一致。不要与 ImageTail、CameraControl 同时传。
DynamicMasksarray<object>否kling-v1-6、kling-v2-master、kling-v2-1、kling-v2-5-turbo、kling-v2-6、kling-v3;仅图生动态遮罩列表,最多 6 个对象。每个对象包含:Mask string,遮罩图 URL/Base64,格式要求同 image,宽高比必须与 image 一致;Trajectories array<object>,运动轨迹点。每个轨迹点包含 X integer、Y integer,5 秒视频轨迹点数量为 2 到 77 个,坐标原点为图片左下角。不要与 ImageTail、CameraControl 同时传。
MultiShotboolean否kling-v3;文生、图生是否开启多镜头。设为 true 时 Prompt 不生效,需要同时传 ShotType;图生场景不要同时传 ImageTail。
ShotTypestring否kling-v3;文生、图生分镜方式。可选 customize、intelligence。使用 customize 时必须传 MultiPrompt。
MultiPromptarray<object>否kling-v3;文生、图生自定义分镜提示词,1 到 6 个对象。每个对象包含 Index integer、Prompt string、Duration string;单个分镜文本最长 512 字符,分镜时长不小于 1 秒且不大于任务总时长,所有分镜 Duration 之和需要等于任务总时长。
ElementListarray<object>否kling-v3;仅图生参考主体列表,最多 3 个对象。每个对象包含 ElementId string,表示主体库中的主体 ID。不要与 VoiceList 同时传。
LogoAddboolean/integer否全部模型;文生、图生是否添加水印或 AI 标识。传 false 或 0 可关闭。
LogoParamobject否全部模型;文生、图生水印参数对象。字段:LogoUrl string,水印图片 URL;LogoImage string,水印图片 Base64,和 LogoUrl 二选一且同时传时以 LogoUrl 为准;LogoRect object,包含 X、Y、Width、Height integer,单位 px。
CallbackUrlstring否全部模型;文生、图生上游回调地址。上游回调不替代本服务任务查询。
ExternalTaskIdstring否全部模型;文生、图生外部任务 ID,用于业务幂等或追踪。

Duration ​

API 模型名文生视频可用值图生视频可用值
kling-v15、10不建议使用
kling-v1-5建议省略,使用上游默认不建议使用
kling-v1-65、105、10
kling-v2-master5、105、10
kling-v2-1不建议使用5、10
kling-v2-1-master5、10不建议使用
kling-v2-5-turbo5、105、10
kling-v2-65、105、10
kling-v33 到 15 的整数3 到 15 的整数

Mode ​

API 模型名文生视频可用值图生视频可用值
kling-v1pro不建议使用
kling-v1-5pro不建议使用
kling-v1-6std、pro仅首帧或首尾帧建议使用 pro
kling-v2-master建议省略建议省略
kling-v2-1不建议使用首尾帧建议使用 pro
kling-v2-1-master建议省略不建议使用
kling-v2-5-turbo首尾帧可用 pro;其他场景建议省略首尾帧建议使用 pro
kling-v2-6pro 或省略;需要声音时不要用 std首尾帧建议使用 pro;需要声音时不要用 std
kling-v3建议省略建议省略

请求示例 ​

文生视频 ​

bash
curl -X POST "${BASE_URL}/v1/videos" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-v2-6",
    "prompt": "日出时分,一艘白色帆船缓慢穿过海湾,电影感镜头,柔和金色光线",
    "duration": 5,
    "mode": "pro"
  }'

图生视频 ​

bash
curl -X POST "${BASE_URL}/v1/videos" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-v2-6",
    "prompt": "镜头缓慢向前推进,海面和云层自然流动,保持主体构图稳定",
    "image": "https://cdn.example.com/first-frame.png",
    "duration": 5,
    "mode": "pro"
  }'

音视频直出 ​

json
{
  "model": "kling-v3",
  "prompt": "雨夜街头的电影感镜头,人物低声旁白,车辆灯光从背景掠过",
  "image": "https://cdn.example.com/start.png",
  "duration": 5,
  "metadata": {
    "Sound": "on"
  }
}

首尾帧 ​

json
{
  "model": "kling-v2-6",
  "prompt": "从首帧自然过渡到尾帧,镜头平滑移动,人物动作连贯",
  "image": "https://cdn.example.com/start.png",
  "duration": 5,
  "mode": "pro",
  "metadata": {
    "ImageTail": {
      "Url": "https://cdn.example.com/end.png"
    }
  }
}

运镜 ​

json
{
  "model": "kling-v2-6",
  "prompt": "镜头从远景缓慢推近到人物面部,电影感景深",
  "image": "https://cdn.example.com/portrait.png",
  "duration": 5,
  "mode": "pro",
  "metadata": {
    "NegativePrompt": "模糊,畸变,低清晰度,画面抖动",
    "CameraControl": {
      "Type": "simple",
      "Config": {
        "Zoom": 2.0,
        "Vertical": 0.2
      }
    }
  }
}

运动笔刷 ​

json
{
  "model": "kling-v2-6",
  "prompt": "只让人物手臂轻微挥动,背景保持稳定",
  "image": "https://cdn.example.com/portrait.png",
  "duration": 5,
  "metadata": {
    "DynamicMasks": [
      {
        "Mask": "https://cdn.example.com/arm-mask.png",
        "Trajectories": [
          { "X": 410, "Y": 520 },
          { "X": 460, "Y": 500 }
        ]
      }
    ]
  }
}

多镜头和主体参考 ​

json
{
  "model": "kling-v3",
  "prompt": "角色从室外走进咖啡店,保持角色一致",
  "duration": 10,
  "metadata": {
    "MultiShot": true,
    "ShotType": "customize",
    "MultiPrompt": [
      { "Prompt": "远景,角色走过街角" },
      { "Prompt": "中景,角色推门进入咖啡店" }
    ],
    "ElementList": [
      {
        "Name": "main_character",
        "Image": {
          "Url": "https://cdn.example.com/character.png"
        }
      }
    ]
  }
}

提交响应 ​

POST /v1/videos 提交成功后返回公开任务 ID。任务仍在异步执行,需继续查询。

json
{
  "id": "task_2c8f7b3e9a",
  "task_id": "task_2c8f7b3e9a",
  "object": "video",
  "model": "kling-v2-6",
  "status": "queued",
  "progress": 0,
  "created_at": 1788912000
}

查询任务 ​

bash
curl "${BASE_URL}/v1/videos/task_2c8f7b3e9a" \
  -H "Authorization: Bearer ${API_TOKEN}"

成功完成时的响应示例:

json
{
  "id": "task_2c8f7b3e9a",
  "object": "video",
  "model": "kling-v2-6",
  "status": "completed",
  "progress": 100,
  "created_at": 1788912000,
  "completed_at": 1788912042,
  "metadata": {
    "url": "https://example.com/generated-video.mp4"
  }
}

旧路径响应中的 result_url 与 OpenAI Video 响应中的 metadata.url 指向同一类结果视频。

轮询示例 ​

bash
TASK_ID="task_2c8f7b3e9a"

while true; do
  BODY=$(curl -s "${BASE_URL}/v1/videos/${TASK_ID}" \
    -H "Authorization: Bearer ${API_TOKEN}")
  echo "${BODY}"

  STATUS=$(printf '%s' "${BODY}" | jq -r '.status')
  if [ "${STATUS}" = "completed" ] || [ "${STATUS}" = "failed" ]; then
    break
  fi

  sleep 5
done

建议 3 到 5 秒查询一次。不要为同一个业务请求重复创建多个视频任务。

下载视频 ​

bash
curl -L "${BASE_URL}/v1/videos/task_2c8f7b3e9a/content" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -o output.mp4

如果查询响应中的 metadata.url 或 result_url 是临时地址,可能会过期;长期保存请下载后转存到自己的对象存储。

常见错误 ​

错误表现可能原因处理建议
unsupported model模型名不在支持列表,或渠道未开放该模型检查 model 拼写和后台模型配置
图片地址被拒绝图片不可公网访问、格式/尺寸不符合要求使用公网 HTTPS 图片,并检查图片大小、格式和宽高比
参数被上游拒绝字段与“metadata 参数”表不匹配,或互斥字段同时传入按表移除不支持字段;尾帧、运镜、静态遮罩、动态遮罩只保留一种
音频未生成非 kling-v2-6 / kling-v3,或 kling-v2-6 使用了 mode=std换 kling-v2-6 / kling-v3,并使用 mode=pro 或省略模式
查询一直未完成上游队列拥塞或模型生成耗时较长继续轮询同一个任务 ID,避免重复提交
下载失败结果 URL 过期或代理安全策略拦截尽快下载;必要时让管理员检查视频代理和 SSRF 配置