The athletic man in the black sleeveless training top performs the explosive acrobatic backflip from the reference video on the open grass field, keeping his face, body build and outfit perfectly consistent, distant trees and bright sky behind him
Kling 2.6 Pro Motion Control API
kwaivgi/kling-v2.6-pro/motion-controlKling 2.6 Pro Motion Control(动作控制)将一张角色图片与一段参考视频转化为 1080p 动作迁移视频,具备高保真骨骼追踪、复杂动作合成与提示词环境引导能力。在交付制作级编舞、特技与体育表演的同时,保持角色的面部特征、身材比例与身份一致性。
拖拽文件、粘贴剪贴板素材,或输入 URL。
1/1 个素材
拖拽文件、粘贴剪贴板素材,或输入 URL。
1/1 个素材
示例
REST API
快速开始
完成鉴权,提交合法的 input 对象,然后凭 task_id 获取视频。
连接 Vidgo API
创建 API Key,仅保存在服务端,并以 Authorization: Bearer VIDGO_API_KEY 发送。
- 端点
- POST
https://api.vidgo.ai/api/generate/submit - 鉴权
- Authorization: Bearer VIDGO_API_KEY
提交一个生成任务
运行该工作流的最小合法请求体。model 必须为 kwaivgi/kling-v2.6-pro/motion-control。提交成功会立即返回 task_id,无需等待视频生成。
REQUEST_BODY=$(cat <<'JSON'
{
"model": "kwaivgi/kling-v2.6-pro/motion-control",
"input": {
"prompt": "The athletic man in the black sleeveless training top performs the explosive acrobatic backflip from the reference video on the open grass field, keeping his face, body build and outfit perfectly consistent, distant trees and bright sky behind him",
"image_urls": [
"https://cdn.vidgo.ai/apis/models/kwaivgi/kling-v2.6-pro/motion-control/v1/01/input-image.png"
],
"video_urls": [
"https://cdn.vidgo.ai/apis/models/kwaivgi/kling-v2.6-pro/motion-control/v1/01/input-video.mp4"
],
"character_orientation": "video",
"resolution": "1080p"
}
}
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。
查询状态
GET https://api.vidgo.ai/api/generate/status/{task_id}约每 2 秒轮询一次,随后逐步退避。仅在 not_started 或 running 时继续,遇到 finished 或 failed 停止。也可以在同一顶层请求契约中添加 callback_url。
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "running",
"created_time": "2025-12-25T10:59:37Z"
}
}{
"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
}
}完整可运行示例
展开查看完整脚本,包含 HTTP 与业务码校验、task_id 校验、轮询、终态处理与超时边界。
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "kwaivgi/kling-v2.6-pro/motion-control",
"input": {
"prompt": "The athletic man in the black sleeveless training top performs the explosive acrobatic backflip from the reference video on the open grass field, keeping his face, body build and outfit perfectly consistent, distant trees and bright sky behind him",
"image_urls": [
"https://cdn.vidgo.ai/apis/models/kwaivgi/kling-v2.6-pro/motion-control/v1/01/input-image.png"
],
"video_urls": [
"https://cdn.vidgo.ai/apis/models/kwaivgi/kling-v2.6-pro/motion-control/v1/01/input-video.mp4"
],
"character_orientation": "video",
"resolution": "1080p"
}
}
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 内接受的字段。请求示例展示了必需的顶层 model 字段。
| 字段 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| prompt | string | 否 | — | 可省略;null、空字符串和空白按未提供处理。非空文本去除首尾空白后最多 2,500 个字符。 |
| image_urls | array | 是 | — | 单张角色图片 URL(JPEG、PNG、WEBP,最大 10MB),仅支持 1 个 URL。 |
| video_urls | array | 是 | — | 单段参考视频 URL(MP4、MOV、MKV,最大 100MB),仅支持 1 个 URL。 |
| character_orientation | string | 是 | — | 角色朝向模式,image 或 video。 |
| resolution | string | 否 | 1080p | 可省略,默认 1080p;显式传入时仅接受 1080p。 |
响应字段
提交后立即返回任务标识;状态查询响应会附带进度、全部输出文件或失败信息。
| 字段 | 类型 | 说明 |
|---|---|---|
| code | integer | 应用层结果码,成功响应为 0 或 200。 |
| message | string | 可读信息或错误详情(如有)。 |
| data.task_id | string | 用于状态查询路径中的任务 ID。 |
| data.status | string | not_started、running、finished 或 failed。 |
| data.created_time | string | 任务创建时间,date-time 格式。 |
| data.progress | integer | 服务商上报的 0–100 进度。 |
| data.files[] | array | 成功任务的全部输出文件,按响应顺序排列。 |
| data.files[].file_url | string | 生成视频的公开 URL。 |
| data.files[].file_type | string | 文件类型,例如 video。 |
| data.error_message | string | null | status 为 failed 时的失败详情。 |
任务生命周期
not_started 与 running 为非终态;finished 与 failed 为终态,轮询到任一即应停止。
not_started任务已受理,排队等待开始。
running生成进行中,请继续使用同一 task_id 轮询。
finished生成成功。从 data.files[].file_url 读取全部视频 URL。
failed生成因错误终止。读取 data.error_message 并停止轮询。
轮询与错误处理
- 鉴权401 表示 Bearer API Key 缺失或无效,请修正后再重试。
- 参数校验400 表示存在非法字段、不支持的媒体键或积分余额不足,请修正请求后再提交。
- 网络与超时传输失败不同于任务失败。判定任务失败前,请在有限超时时间内重试状态查询。
- 轮询间隔建议从约 2 秒一次开始,长任务逐步加大间隔。
- 终态仅在 not_started 或 running 时继续轮询;遇到 finished 或 failed 立即停止。
- 回调选项在请求顶层提供 callback_url 可接收最终的扁平任务对象;若回调投递失败,仍可使用轮询。
端点限制
| 规格 | 取值 | 说明 |
|---|---|---|
| 输入模式 | 1 图 + 1 视频 | image_urls 与 video_urls 均要求恰好 1 个 URL,prompt 可选。 |
| 输出 | 视频任务 | 端点返回异步任务 ID。 |
| 分辨率 | 1080p | 由模型 ID kwaivgi/kling-v2.6-pro/motion-control 固定,必填。 |
| 参考时长 | 3–10 秒 / 3–30 秒 | image 朝向:3–10 秒;video 朝向:3–30 秒。请勿传 duration,后端会自动探测文件。 |
| 计费基准 | 12 积分/秒 | 积分 = ceil(实际探测秒数 × 12);先乘每秒积分,再对总积分向上取整。 |
相关模型
Kling 2.6 Pro Motion Control — 常见问题
什么是 Kling 2.6 Pro Motion Control(动作控制)API?
Kling 2.6 Pro Motion Control 是快手推出的动作迁移模型,可将参考视频中的动作迁移到角色图片上,输出 1080p 视频,按 12 积分/秒计费。只需一张角色图片、一段参考视频和可选的场景提示词,即可实现高保真骨骼追踪、复杂动作合成与提示词引导的环境控制。模型基于身份感知动作映射,在复刻制作级编舞、特技与体育节奏的同时,保持面部特征与身材比例一致。你可以通过编程方式调用,也可以在上方 Playground 中直接体验。
Kling 2.6 Pro Motion Control 的追踪精度如何?
Pro 面向高保真全身追踪,可还原参考视频的节奏、面部表情与多肢体协调。建议使用头部、肩部、躯干清晰可见的角色图片,并选择表演无遮挡的参考视频,迁移效果可更好还原细微手势与重心转移。
Kling 2.6 Pro Motion Control 支持复杂动作吗?
支持。它专为武术、舞蹈编创、体能训练与快速多肢体转换等高难度动作模式而设计。对于更长、更复杂的表演,若希望空间朝向跟随参考视频,建议选择 character_orientation 为 video。
Kling 2.6 Pro Motion Control 输出什么分辨率?
该端点仅输出 1080p。模型 kwaivgi/kling-v2.6-pro/motion-control 的 resolution 必填且固定为 1080p,是面向客户交付与制作评审的高保真档位。
Kling 2.6 Pro Motion Control 的参考视频可以多长?
参考视频至少 3 秒。character_orientation 为 image 时最长 10 秒;为 video 时最长 30 秒。请勿传 duration——后端会探测参考文件并按探测时长计费。
Kling 2.6 Pro 与 Standard 的计费有何区别?
标准版 720p 为每秒 8 积分,专业版 1080p 为每秒 12 积分。两者都先用实际探测秒数乘每秒积分,再对总积分向上取整。例如 5.2 秒分别为 42 和 63 积分。
Kling 2.6 Pro Motion Control 能保持角色身份吗?
可以。模型在将参考动作映射到目标角色的同时,保持面部特征、身材比例与整体形象在整段视频中一致。清晰、构图良好的角色图片能为 1080p 交付带来最强的身份保持效果。
Kling 2.6 Pro Motion Control 该选哪种 character_orientation 模式?
如果希望输出与照片朝向一致、并在 10 秒内获得更强的镜头跟随表现,选择 image;如果希望朝向跟随参考视频、支持最长 30 秒的复杂动作,选择 video。















