A single uninterrupted five-second locked shot from inside the same polar research station. The solid rectangular steel door is hinged on its LEFT edge. It slowly swings inward toward the left wall from fully closed to fully open, revealing the same snowy plain, dark mountain ridge and green aurora seen in the final image. The frame, wall panels and floor never move. Cold blue outdoor light spreads across the threshold as the door opens; outside, the aurora shimmers very subtly. No people, no morphing or dissolves, no camera movement. Physically coherent rigid hinged door and continuous movement from the supplied first frame to the supplied last frame.
Kling 1.6 Pro Image to Video API
kwaivgi/kling-video/v1.6/pro/image-to-videoKling 1.6 Pro Image to Video 将静态参考图像转化为原生 1080p 电影级超高清视频,支持首尾帧闭环控制与多图 Elements 资产延续,提供 5 秒与 10 秒时长。它精准锁定人物相貌与光影构图,通过物理动力学模拟自然动作与复杂运镜,呈现首尾平滑衔接的高品质动态。

体验上传支持 JPG、PNG、WebP,每个文件最多 10 MiB。可在 JSON 模式填写 HTTP(S) URL。

体验上传支持 JPG、PNG、WebP,每个文件最多 10 MiB。可在 JSON 模式填写 HTTP(S) URL。
示例
REST API 规格
快速开始
提交端点请求并查询任务状态。请将示例素材 URL 替换为可访问的真实文件。
第一步:配置 API 鉴权
在控制台申请 API Key,并在每个 HTTP 请求头中携带 Authorization: Bearer <API_KEY> 进行身份验证。
- 任务提交端点
- POST
https://api.vidgo.ai/api/generate/submit - 鉴权请求头
- Authorization: Bearer VIDGO_API_KEY
第 2 步:提交生成任务
POST /api/generate/submit。model 和可选 callback_url 位于根级,生成参数位于 input 内。
REQUEST_BODY=$(cat <<'JSON'
{
"model": "kwaivgi/kling-video/v1.6/pro/image-to-video",
"input": {
"prompt": "A quiet forest in morning light, with a slow camera pan.",
"duration": 5,
"start_image_url": "https://example.com/start-frame.png"
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"第三步:轮询任务执行结果
使用 task_id 查询进度;not_started 或 running 时继续轮询,finished 或 failed 时停止。成功后读取 data.files[].file_url,失败时读取 data.error_message。
状态查询端点
GET https://api.vidgo.ai/api/generate/status/{task_id}使用 task_id 查询进度;not_started 或 running 时继续轮询,finished 或 failed 时停止。成功后读取 data.files[].file_url,失败时读取 data.error_message。
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "task-example",
"status": "not_started",
"created_time": "2026-09-23T08:00:00"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}端到端完整脚本示例
展开查看在生产环境中具备轮询重试、异常保护和超时处理的完整自动化脚本。
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "kwaivgi/kling-video/v1.6/pro/image-to-video",
"input": {
"prompt": "A quiet forest in morning light, with a slow camera pan.",
"duration": 5,
"start_image_url": "https://example.com/start-frame.png"
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
done请求参数(input 对象)
向 /api/generate/submit 提交 POST 请求时,input 内部所支持的生成参数配置:
| 字段 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| prompt | string | 必填 | — | 必填非空字符串,去除首尾空白后最多 2,500 个 Unicode 字符。 |
| duration | integer | 必填 | — | 必填数值 5 或 10 秒;不接受字符串、布尔值或小数时长。API 无默认值,体验表单初始选择 5 秒。 |
| aspect_ratio | string | 可选 | — | 可选 1:1、16:9、9:16,无默认值。 |
| negative_prompt | string | 可选 | — | 可选字符串,最多 2,500 个 Unicode 字符。 |
| cfg_scale | number | 可选 | — | 可选有限数值 0–1,无默认值;Elements 工作流不支持。 |
| start_image_url | string | 按工作流必填 | — | 首帧工作流必填 HTTP(S) 图片 URL;与 image_urls 互斥。 |
| end_image_url | string | 可选 | — | Pro 可选尾帧 HTTP(S) 图片 URL;必须同时提供 start_image_url,不能与 image_urls 同用。 |
| image_urls | array | 按工作流必填 | — | Elements 工作流必填 1–4 个 HTTP(S) 参考图 URL;与首帧、尾帧及 cfg_scale 互斥。 |
响应字段(查询结果)
通过 GET /api/generate/status/{task_id} 轮询获取的任务详情:
| 字段 | 类型 | 描述 |
|---|---|---|
| code | integer | 业务响应状态码,200 表示成功。 |
| data.task_id | string | 异步任务全局唯一流水号。 |
| data.status | string | 任务执行阶段:not_started(排队中)、running(生成中)、finished(已完成)、failed(失败)。 |
| data.files | array | 生成成功时包含的成片文件列表,每项含 file_url 与 file_type。 |
| data.error_message | string | null | 任务执行异常时的具体错误描述。 |
任务生命周期
客户端应根据 status 字段判断任务进度,达到 finished 或 failed 终态时立即终止轮询:
not_started任务已接收,等待执行。
running正在生成。
finished生成完成,从 data.files 获取视频 URL。
failed生成失败,请查看 data.error_message,已扣积分按现有流程返还。
轮询与异常处理
- 轮询频次推荐建议初始轮询间隔设为 2–3 秒,随着任务持续可递增至 5 秒一次,避免过密请求。
- 网络波动与重试若查询网络出现 5xx 或连接超时,不代表任务失败,可稍作休眠后继续重试查询。
- 异步 Webhook 回调支持在提交请求体根层级传递 callback_url,在任务终态时系统将通过 POST 自动推送完整任务结果。
接口规格
| 规格项 | 取值 | 说明 |
|---|---|---|
| 模型 ID | kwaivgi/kling-video/v1.6/pro/image-to-video | 请求根级 model 字段。 |
| 时长 | 5 / 10s | 必填数值 5 或 10 秒;不接受字符串、布尔值或小数时长。API 无默认值,体验表单初始选择 5 秒。 |
Kling 1.6 Pro Image to Video API 常见问题
Kling 1.6 Pro Image to Video API 是什么?
Kling 1.6 Pro Image to Video 是快手(Kwaivgi)研发的旗舰级图像生成视频模型。它能够将静态参考图片转化为原生 1080p 电影级超高清动态视频,全面支持单图首帧动画、首尾双关键帧精准过渡以及 1–4 张多图 Elements 资产一致性工作流。依托先进的多模态时空扩散底座与高阶物理模拟能力,它能在保持主体相貌、光影质感与空间结构高度逼真的同时,生成连贯自然的摄影机运镜与大幅度动作。你可以通过 API 进行程序化调用,也可以在上方体验区直接在线试用。
Kling 1.6 Pro Image to Video 如何使用首尾双帧控制功能?
你只需在请求体中同时传入起始帧 start_image_url 与结束帧 end_image_url。模型会将两张图片分别作为视频的第 1 帧和最后 1 帧,并在设定的 5 秒或 10 秒内自动合成合理且连贯的中间过渡动态。
Kling 1.6 Pro Image to Video 与 Standard Image to Video 有何区别?
主要有三大区别:第一,Pro 输出原生 1080p 电影级全高清画质(Standard 为 720p);第二,Pro 独家支持 end_image_url 尾帧定向过渡控制;第三,Pro 计费为 15 积分/秒(Standard 为 9 积分/秒),更适合对画质与动作终态有严格要求的专业制作。
Kling 1.6 Pro Image to Video 的 Elements 工作流有什么作用?
Elements 工作流允许通过 image_urls 数组传入 1 到 4 张多角度参考图。模型通过综合多张图片的特征表征,在较长动作或运镜转移中能够大幅减少主体变形走样,维持角色与道具的高度一致。
Kling 1.6 Pro Image to Video 支持哪些画面宽高比?
该端点支持 16:9、9:16 与 1:1 三种画面宽高比。你可以通过 aspect_ratio 参数显式指定,建议选择与传入图片相契合的长宽比以减少多余画幅裁切。
Kling 1.6 Pro Image to Video 的计费费率是多少?
该端点按秒计费,费率为 15 积分/秒(相当于 $0.075/秒)。单图首帧、首尾双帧与 Elements 多图模式单价一致:5 秒视频消耗 75 积分($0.375),10 秒视频消耗 150 积分($0.750),任务生成失败自动全额退还。
上传参考图片有什么格式与尺寸要求?
在体验区上传时支持 JPG、PNG 与 WebP 格式,单个文件大小上限为 10 MiB;在 API 调用中,请提供公网可正常访问、无鉴权校验且具备有效主机的 HTTP(S) 直链 URL。