A single continuous five-second full-body sports shot of the same adult gymnast on the blue mat. She steps to the right, bends sideways, places her hands on the mat one after the other, sends her straight legs overhead in one smooth controlled cartwheel, then lands one foot followed by the other and stands upright. Exactly one cartwheel, no flips or repeated rotations. Preserve her face, fitted teal training clothes and all four limbs. Fixed wide side view with the entire body and landing area always visible, realistic weight transfer and natural timing. No cuts, no other people, no text.
Kling 2.1 Pro Image to Video API
kwaivgi/kling-video/v2.1/pro/image-to-videoKling 2.1 Pro Image to Video 将静态图像转化为原生 1080p 全高清电影级视频,支持起始帧与可选结束帧双关键帧约束,提供 5 秒与 10 秒时长。它在完整锁定主体样貌、环境细节与景深层次的同时,精确推演复杂的时空运动轨迹与镜头运镜过渡。
595/5,000

示例
REST API 规格
快速上手
提交任务并查询状态。example.com 和 your-domain.com 地址仅为占位示例;图片和回调地址请替换为你自己的公开可访问地址,输出文件地址仅作展示。
第一步:配置身份鉴权
在控制台申请 API Key,并在发起请求时通过请求头携带 Authorization: Bearer <API_KEY>。
- 任务提交端点
- POST
https://api.vidgo.ai/api/generate/submit - 鉴权请求头
- Authorization: Bearer VIDGO_API_KEY
第二步:提交生成任务
POST /api/generate/submit: kwaivgi/kling-video/v2.1/pro/image-to-video
REQUEST_BODY=$(cat <<'JSON'
{
"model": "kwaivgi/kling-video/v2.1/pro/image-to-video",
"input": {
"prompt": "A slow camera pan across a sunlit garden.",
"start_image_url": "https://example.com/start-frame.png",
"duration": 5,
"end_image_url": "https://example.com/end-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-24T00:00:00Z"
}
}{
"code": 200,
"data": {
"task_id": "task-example",
"status": "finished",
"files": [
{
"file_type": "video",
"file_url": "https://example.com/output.mp4"
}
],
"created_time": "2026-09-23T00:00:00Z"
}
}端到端完整脚本示例
展开查看在生产环境中具备轮询重试、异常保护和超时处理的完整自动化脚本。
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "kwaivgi/kling-video/v2.1/pro/image-to-video",
"input": {
"prompt": "A slow camera pan across a sunlit garden.",
"start_image_url": "https://example.com/start-frame.png",
"duration": 5,
"end_image_url": "https://example.com/end-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 对象)
生成参数放在 input 中,model 和可选 callback_url 放在请求根级。使用标准 JSON 类型;不支持的 input 字段会被拒绝。
| 字段 | 类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| prompt | string | 是 | - | 必填非空字符串,去除首尾空白后最多 5,000 个 Unicode 字符。 |
| start_image_url | string | 是 | - | 必填首帧图片的公开 HTTP(S) URL,须包含主机名且不能包含凭据或空白。 |
| end_image_url | string | 否 | - | 可选尾帧图片的公开 HTTP(S) URL;不使用时省略,不能传空字符串或 null。 |
| duration | integer | 否 | 5 | 仅支持整数值 5 或 10,省略时默认为 5 秒。不接受字符串、布尔值、小数时长或 null。 |
| negative_prompt | string | 否 | - | 可选字符串,描述希望避免的内容。 |
响应字段(查询状态接口)
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 | 当任务失败时返回的具体诊断错误信息。 |
任务生命周期
客户端应持续轮询任务状态,直至进入 finished 或 failed 终态:
not_started排队中
running生成中
finished已就绪
failed失败
轮询与异常处理
- 轮询频率建议建议提交任务后前 10 秒每隔 2-3 秒轮询一次,之后可适度放缓至 5 秒一次。
- 网络容错设计遇到临时网络抖动或网关 5xx 错误时不要重新提交任务,应使用原 task_id 继续轮询重试。
- 回调机制(Webhook)在提交任务时传入 callback_url,可在任务完成时自动接收系统推送的最终结果。
接口规格
| 规格项 | 取值 | 说明 |
|---|---|---|
| 模型 | kwaivgi/kling-video/v2.1/pro/image-to-video | |
| 时长 | 5 / 10 s | 仅支持整数值 5 或 10,省略时默认为 5 秒。不接受字符串、布尔值、小数时长或 null。 |
Kling 2.1 Pro Image to Video API 常见问题
Kling 2.1 Pro Image to Video API 是什么?
Kling 2.1 Pro Image to Video 是快手(Kwaivgi)用于电影级图像生成视频的模型。它将静态参考图像转化为原生 1080p 全高清视频,支持 5 秒与 10 秒时长,并具备起始帧与可选结束帧双关键帧约束能力。基于先进的时空生成扩散架构,它在完整保留源图人物身份面貌、服装纹理与光影构图的同时,模拟复杂细腻的物理运动与运镜轨迹。你可以通过 API 进行程序化调用,也可以在上方体验区直接在线试用。
Kling 2.1 Pro Image to Video 的尾帧参数如何使用?
同时传入 start_image_url 与 end_image_url 时,模型会将首张图作为视频开头,尾张图作为视频结尾,并在 5 秒或 10 秒时长内智能计算两帧之间的平滑动态与机位过渡,实现高精度的动作闭环。
Kling 2.1 Pro Image to Video 的输出分辨率是多少?
Kling 2.1 Pro Image to Video 原生输出 1080p 全高清视频。生成的视频严格保留输入素材的原生构图与画幅比例,在超宽大屏与移动端高分辨率视网膜屏上均能呈现超细腻的画质表现。
Kling 2.1 Pro Image to Video 支持配置哪些时长?
模型支持配置 5 秒或 10 秒视频,在请求中的 duration 参数传入整数值 5 或 10 即可。若省略该字段,系统默认按照 5 秒生成。不支持传入小数或非数字格式。
Kling 2.1 Pro Image to Video 如何计费?
费用按单次视频生成扣除积分:5 秒视频为 55 积分($0.275),10 秒视频为 110 积分($0.550)。任务提交时预扣积分,若任务因系统原因生成失败,所消耗积分将自动全额返还。
在什么场景下应该优先选择 Kling 2.1 Pro?
当你的项目对成片分辨率有 1080p 全高清严苛要求,或者需要通过 end_image_url 锁定最终结束姿态时,应首选 Pro 端点;如果仅需要低成本验证创意或制作常规社交短视频,选择 720p 的 Standard 端点更为经济。
Kling 2.1 Pro Image to Video 可以只输入起始帧吗?
完全可以。end_image_url 是可选参数。如果不传入尾帧,Kling 2.1 Pro 将作为标准单图生视频模型运行,完全依靠文本提示词驱动 start_image_url 生成 1080p 视频。
Kling 2.1 Pro Image to Video 对图片链接有哪些要求?
start_image_url 与可选的 end_image_url 均须为公网可直接访问的 HTTP(S) 图片链接,支持 JPG、PNG 与 WebP 格式。链接不能包含内网地址、空格或账号密码等身份认证凭据。