跳到导航

Kling 2.6 Motion Control

让一张图片中的角色复现一段 3~30 秒视频的动作,支持 720p 或 1080p;按图片朝向时结果最长 10 秒,按视频朝向时最长 30 秒。

  • 异步:创建调用返回任务 ID,任务成功后即可获得视频。
  • 两个输入都必填:一张角色图片和一段 3 到 30 秒的动作视频。图片中的角色会做出视频中的动作。
  • character_orientation 决定角色朝向跟随谁,也决定结果最长多久:image(默认)最长 10 秒,video 最长 30 秒。
  • 没有 duration 字段:结果与动作视频一样长,上限取决于所选朝向。
  • 按成片秒数计费,以创建时预留的金额为基础结算,分 720p 和 1080p。失败的任务不收费。

截至撰写时,两个 Kling 动作控制模型都不在线上的 GET /v1/media/models 列表中。模型不在该列表期间,为它创建任务会返回 503 processing_unavailable,且不会扣费。接入前请先查看该列表。

POST/v1/videos/tasks试一试

在调试窗口里打开本模型,填入你的 BeatAPI API 密钥即可创建任务。调用是真实的,费用从你自己的余额中扣除。

模型 ID

两个模型共用此端点和相同的输入。下表数值直接取自网关契约;只有 Kling 3.0 Motion Control 接受 background_source。

模型 IDresolutioncharacter_orientationbackground_source角色图片动作视频适用场景
kling-2.6-motion-control720p, 1080pimage, video—11想要更低的每秒单价,并且背景取自动作视频即可。
kling-3-motion-control720p, 1080pimage, videoinput_video, input_image11想选择背景取自动作视频还是角色图片(background_source)。每秒单价更高。

接口与鉴权

POST https://api.beatapi.io/v1/videos/tasks

Authorization string 必需

你的 BeatAPI API 密钥,以 Bearer <BEATAPI_API_KEY> 形式发送。在控制台创建密钥。密钥只能保存在你的服务端,不要放进浏览器或移动端应用。

请求体使用 JSON,并设置 Content-Type: application/json。Idempotency-Key 为可选:每个逻辑请求发送一个唯一值(最长 255 个字符),仅在重试完全相同的请求体时复用。24 小时内,用相同的键和请求体重试会再次返回第一次的响应,并带上 Idempotent-Replayed: true;相同的键搭配不同的请求体则返回 409 idempotency_conflict。非 2xx 的响应不会被保存,因此 400 或 402 之后的重试会重新执行。

请求流程

1

创建任务

向接口 POST 下方的参数。返回 201 表示任务已被接受,其价格已从你的余额中预留;任务在后台运行。保存 data.id。

2

等待任务完成

调用 GET /v1/tasks/{task_id},两次调用之间等待 data.poll_after_seconds 秒(图片 5 秒,视频 8 秒),直到 status 为 succeeded 或 failed。也可以为 task.succeeded 和 task.failed 注册 Webhook;仍需保留轮询作为兜底,因为因处理超时而终止的任务不会发送事件。

3

保存结果

状态为 succeeded 时,下载每个 data.output.media[].url 并保存你需要的文件;BeatAPI 不承诺结果链接的保留时长。状态为 failed 时,读取 data.error_code 和 data.error_message:预扣的金额已退回你的余额,data.retryable 表示再次发送相同请求是否可能成功。

输入模式

模式必填输入说明
动作迁移model、images(1 个链接)、reference_videos(1 个链接)角色图片会做出视频中的动作。prompt 可选。不接受其他内容:没有 duration、aspect_ratio、音频或额外的参考素材。

请求参数

model string 必需

要运行的模型。

取值:kling-2.6-motion-control

取值有误时

  • 缺失:"model" is required
  • 向此端点发送了图片模型:"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint

prompt string 可选

关于角色或场景的可选文字提示。动作本身来自视频。

长度:≤ 2500 个字符

  • 长度按字符计算(一个中日韩文字算一个字符)。接受空字符串。

取值有误时

  • 超出长度上限:"prompt" has an unsupported length

images string[] 必需

角色图片:恰好一个链接。它就是做出动作的角色。

数量:1–1
每一项都必须是公网 https:// 链接。本地文件请先上传(POST /v1/files),再传入返回的 data.url。

  • 发送包含一个公开 HTTPS 链接的列表;本地文件可用 POST /v1/files 上传,并在此处使用返回的 data.url。
  • 创建任务时不检查图片的大小、格式和尺寸。

取值有误时

  • 缺失:"images" is required
  • 空列表:"images" requires at least 1 item
  • 超过一个链接:"images" accepts at most 1 items
  • 不是 https:// 链接:"images[0]" must be a public HTTPS URL

reference_videos string[] 必需

动作视频:恰好一个链接。images 中的角色会复现这段视频里的动作。

数量:1–1
每一项都必须是公网 https:// 链接。本地文件请先上传(POST /v1/files),再传入返回的 data.url。

  • 长度必须为 3 到 30 秒(见输入素材限制)。结果与该视频一样长,上限由 character_orientation 决定。
  • 在主机允许的情况下,网关会在创建任务前通过字节范围请求从文件头读取时长。
  • 本地文件可用 POST /v1/files 上传(视频最大 100 MB),并在此处使用返回的 data.url。

按实际生成的视频秒数计费,因此请把片段裁剪到只含所需动作。使用 character_orientation: "image" 时,结果最长 10 秒。

取值有误时

  • 缺失:"reference_videos" is required
  • 空列表:"reference_videos" requires at least 1 item
  • 超过一个链接:"reference_videos" accepts at most 1 items
  • 不是 https:// 链接:"reference_videos[0]" must be a public HTTPS URL
  • 短于 3 秒或长于 30 秒:reference_videos[0] is 2 seconds long; this model takes reference video of 3 to 30 seconds.
  • 主机返回错误或空文件:reference_videos[0] could not be downloaded: the URL returned HTTP 404.

resolution string 可选默认值: 720p

输出分辨率,同时也是价格档位:1080p 每秒的价格高于 720p。

可选值:720p, 1080p
默认值:720p

  • 仅限小写。省略时使用 720p。

取值有误时

  • 取值不在列表中(例如 480p、4k 或 1080P):"resolution" must be one of: [720p 1080p]

character_orientation string 可选默认值: image

角色朝向是跟随角色图片(image)还是动作视频(video)。

可选值:image, video
默认值:image

  • 它同时决定结果的最长时长:image 最长 10 秒,video 最长 30 秒(见“朝向如何决定时长”)。
  • 省略时使用 image,因此超过 10 秒的动作视频需要显式指定 video。
  • 它决定创建任务时在余额上预留的金额:即该朝向允许的最长结果(见计费)。

取值有误时

  • 取值不在列表中:"character_orientation" must be one of: [image video]

网关还会在创建任务之前检查以下组合:

  • 必须恰好传入 1 张角色图片和 1 段已上传的 3–30 秒动作视频;character_orientation: image 时,输出最长 10 秒。

输入素材限制

网关会在创建任务之前读取每一项输入,超出这些限制的输入会被拒绝,并返回点名该输入的 400 bad_request。不扣费。

素材创建任务前检查的限制
视频每段 3–30 秒
  • 创建任务时只检查动作视频的时长限制:3 到 30 秒,按文件头测得,容差 0.1 秒。报错信息按位置指明输入,位置与字段报错一样从 0 开始计数:reference_videos[0] is 45 seconds long; this model takes reference video of 3 to 30 seconds.
  • 无法读取时长的片段(主机不允许字节范围请求,或文件不是 MP4 或 MOV)在这一步不会被拒绝,也不会被测量。只有主机返回错误或空文件时,创建调用才会被拒绝,例如 reference_videos[0] could not be downloaded: the URL returned HTTP 404.
  • image 适用于不超过 10 秒的片段。动作视频超过 10 秒时,请发送 character_orientation: "video"。
  • 创建任务时不检查图片的大小、格式和尺寸。
  • 有本地文件?用 POST /v1/files 上传(png、jpg、jpeg 或 webp 图片最大 50 MB;mp4 或 mov 视频最大 100 MB),再传入返回的 data.url。

朝向如何决定时长

没有 duration 字段。结果与动作视频一样长,character_orientation 为其设定上限。

character_orientation角色朝向跟随最长结果创建时在余额上预留
image(默认)角色图片10 秒按该分辨率的单价预留 10 秒
video动作视频30 秒按该分辨率的单价预留 30 秒
  • 任务结束时,按所生成视频的上报用量结算,通常是按其时长乘以每秒标价;与预留金额的差额会退还。如果没有上报用量,则按预留金额收费。见计费。

此模型不接受的字段

发送下列任一字段会在扣费之前被拒绝,而不是被忽略:

  • duration、aspect_ratio、generate_audio、seed、task_type、output_format、reference_images、reference_audios、quality、sound、watermark,以及其他视频模型的任何字段 → field "duration" is not supported by model kling-2.6-motion-control(其中是你发送的字段名)。
  • background_source → field "background_source" is not supported by model kling-2.6-motion-control;只有 kling-3-motion-control 接受它。
  • API 完全不认识的字段 → unknown field: <name>。

请求示例

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-2.6-motion-control",
"prompt": "Keep the singer’s look and outfit; follow the movement of the video.",
"images": [
"https://media.beatapi.io/samples/neon-singer.png"
],
"reference_videos": [
"https://your-cdn.example.com/clips/source.mp4"
],
"resolution": "720p"
}'

动作迁移

请把视频链接换成你自己的 3 到 30 秒的 MP4 或 MOV(没有公开的示例视频)。未指定 character_orientation,因此使用 image,结果最长 10 秒。

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-2.6-motion-control",
"prompt": "Keep the singer’s look and outfit; follow the movement of the video.",
"images": [
"https://media.beatapi.io/samples/neon-singer.png"
],
"reference_videos": [
"https://your-cdn.example.com/clips/source.mp4"
],
"resolution": "720p"
}'

1080p,朝向跟随视频

适用于超过 10 秒的片段:video 允许结果最长 30 秒。请把视频链接换成你自己的片段。结果越长,创建任务时在余额上预留的金额越多。

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-2.6-motion-control",
"images": [
"https://media.beatapi.io/samples/neon-singer.png"
],
"reference_videos": [
"https://your-cdn.example.com/clips/source.mp4"
],
"resolution": "1080p",
"character_orientation": "video"
}'

响应

创建任务(201)

任务对象。任务成功之前 output 为 null。标注“运行中”的字段会在任务结束后消失。

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "video",
"capability_id": "kling-2.6-motion-control",
"capability_version": 1,
"media_type": "video",
"model": "kling-2.6-motion-control",
"status": "queued",
"stage": "queued",
"created_at": 1791993600,
"updated_at": 1791993600,
"completed_at": null,
"poll_after_seconds": 8,
"output": null,
"usage": {
"credits_reserved": 0.6,
"credits_settled": 0,
"credits_refunded": 0,
"credits_charged": 0.6,
"billable_duration_seconds": 10
},
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": null,
"error_message": null
}
}
字段类型说明
data.idstring任务 ID:task_ 后接 32 位字母和数字。用于轮询以及匹配 Webhook 事件。
data.objectstring固定为 task。
data.task_kindstringimage 或 video。
data.capability_idstring你发送的模型 ID。
data.capability_versioninteger模型的契约版本,当前为 1。
data.media_typestringimage 或 video。
data.modelstring你发送的模型 ID(与 capability_id 相同)。
data.statusstringqueued、processing、succeeded 或 failed。只有后两个是终态。
data.stagestring与 status 相同;为旧版客户端保留。
data.created_atinteger任务创建时间,Unix 秒。
data.updated_atinteger最后一次变更时间,Unix 秒。
data.completed_atinteger | null任务结束时间,Unix 秒;运行中为 null。
data.poll_after_secondsinteger运行中:下一次轮询前需要等待的秒数(图片 5,视频 8)。
data.typical_secondsobject运行中且近期样本足够时出现:在最近的 window 内,根据 samples 个任务统计的完成时间 p50 和 p90,单位为秒。
data.outputobject | null任务结果;status 为 succeeded 之前为 null。见下方输出字段。
data.usage.credits_reservednumber创建任务时从你的余额中预扣的美元金额。
data.usage.credits_chargednumber该任务的费用(美元);失败的任务为 0。
data.usage.credits_settlednumber最终结算扣除的美元金额;任务成功时设置,否则为 0。
data.usage.credits_refundednumber退回你余额的美元金额;失败的任务在退款记录完成后等于预扣金额。
data.usage.billable_duration_secondsinteger仅视频:计价所依据的秒数。模型未上报时长时不出现。
data.request_idstring请求 ID。联系支持时请附上。
data.error_codestring | null失败码;任务未失败时为 null。
data.error_messagestring | null出了什么问题以及该改什么;任务未失败时为 null。

任务完成

GET /v1/tasks/{task_id} 返回 HTTP 200 和 status: "succeeded",结果在 data.output 中。

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "video",
"capability_id": "kling-2.6-motion-control",
"capability_version": 1,
"media_type": "video",
"model": "kling-2.6-motion-control",
"status": "succeeded",
"stage": "succeeded",
"created_at": 1791993600,
"updated_at": 1791993690,
"completed_at": 1791993690,
"output": {
"media": [
{
"type": "video",
"url": "https://media.beatapi.io/outputs/task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ/0.mp4",
"mime_type": "video/mp4"
}
],
"r2_url": "https://media.beatapi.io/outputs/task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ/0.mp4"
},
"usage": {
"credits_reserved": 0.6,
"credits_settled": 0.6,
"credits_refunded": 0,
"credits_charged": 0.6,
"billable_duration_seconds": 10
},
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": null,
"error_message": null
}
}

输出字段

字段类型说明
output.mediaobject[]生成的文件;此模型输出一个视频。
output.media[].typestring固定为 video。
output.media[].urlstring已存储视频的 HTTPS 链接。请下载并自行保存;不承诺保留期限。
output.media[].mime_typestring已存储视频的 MIME 类型,例如 video/mp4。
output.r2_urlstring再次给出视频 URL,供旧版客户端使用。请改读 media。

任务失败

失败的任务在 GET /v1/tasks/{task_id} 上仍然是 HTTP 200:失败信息在响应体里。预扣金额会全额退回,因此不会扣费。

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "video",
"capability_id": "kling-2.6-motion-control",
"capability_version": 1,
"media_type": "video",
"model": "kling-2.6-motion-control",
"status": "failed",
"stage": "failed",
"created_at": 1791993600,
"updated_at": 1791993690,
"completed_at": 1791993690,
"output": null,
"usage": {
"credits_reserved": 0.6,
"credits_settled": 0,
"credits_refunded": 0.6,
"credits_charged": 0,
"billable_duration_seconds": 10
},
"retryable": true,
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": "processing_failed",
"error_message": "The task failed during processing on our side. Retry; a failed task is refunded."
}
}
字段类型说明
data.error_codestringbad_request 和 content_policy_violation(需修改请求)之一,或 processing_unavailable、processing_timeout、processing_failed 和 result_transfer_failed(稍后重试)之一。见错误码。
data.error_messagestring一句话,指出问题和处理方式。
data.retryableboolean仅在任务失败时出现:为 true 表示再次发送相同请求可能成功。
data.usageobject退款记录完成后(通常就在任务失败的那一刻):credits_charged 和 credits_settled 为 0;credits_refunded 等于 credits_reserved。

完整示例

创建任务,按服务端给出的轮询提示等待,然后打印结果链接。请在环境变量中设置 BEATAPI_API_KEY 并安装 requests。

import os
import time
import uuid
import requests
API = "https://api.beatapi.io"
HEADERS = {"Authorization": f"Bearer {os.environ['BEATAPI_API_KEY']}"}
def create_task(body: dict) -> dict:
# One Idempotency-Key per logical request: a retry with the same key cannot create a second task.
headers = {**HEADERS, "Idempotency-Key": str(uuid.uuid4())}
for attempt in range(3):
response = requests.post(f"{API}/v1/videos/tasks", headers=headers, json=body, timeout=60)
if response.status_code in (429, 503) and attempt < 2:
time.sleep(int(response.headers.get("Retry-After", 10)))
continue
break
try:
payload = response.json()
except ValueError: # an edge error page is not JSON
response.raise_for_status()
raise
if not response.ok:
error = payload["error"]
raise RuntimeError(f"{response.status_code} {error['code']}: {error['message']} (request_id={error.get('request_id')})")
return payload["data"]
def wait_for_task(task_id: str, timeout_seconds: int = 1800) -> dict:
deadline = time.monotonic() + timeout_seconds
while time.monotonic() < deadline:
response = requests.get(f"{API}/v1/tasks/{task_id}", headers=HEADERS, timeout=30)
if response.status_code == 429 or response.status_code >= 500:
time.sleep(int(response.headers.get("Retry-After", 10)))
continue
response.raise_for_status()
task = response.json()["data"]
if task["status"] in ("succeeded", "failed"):
return task
time.sleep(task.get("poll_after_seconds", 5))
raise TimeoutError(f"task {task_id} is still running; keep polling later")
task = create_task({
"model": "kling-2.6-motion-control",
"prompt": "Keep the singer’s look and outfit; follow the movement of the video.",
"images": [
"https://media.beatapi.io/samples/neon-singer.png"
],
"reference_videos": [
"https://your-cdn.example.com/clips/source.mp4"
],
"resolution": "720p"
})
print("created", task["id"])
task = wait_for_task(task["id"])
if task["status"] == "failed":
raise SystemExit(f"{task['error_code']}: {task['error_message']}")
for item in task["output"]["media"]:
print(item["url"])

计费

  • 这些价格在模型上架后生效;在此之前,创建请求会被拒绝,且不收费。
  • 按成片秒数计费,单价取决于 resolution。character_orientation 和提示词不影响单价。下表按 8 秒结果标价。
  • 结果与动作视频一样长,因此创建任务时最终价格尚不确定。网关会按该分辨率的单价,预留该朝向允许的最长结果:image 为 10 秒,video 为 30 秒。image 约为 0.60(720p)或0.60(720p)或 1.00(1080p),video 约为 1.80(720p)或1.80(720p)或 3.00(1080p)。余额必须覆盖该金额,否则创建调用会返回 402 insufficient_credits。
  • 任务结束时,按所生成视频的上报用量结算,通常是按其时长乘以每秒标价,预留金额的剩余部分会退还。如果没有上报用量,则按预留金额收费。usage.credits_charged 和 usage.credits_settled 显示实际扣费。此模型的 usage.billable_duration_seconds 报告的是创建时预留的秒数(10 或 30),而不是成片的长度;实际支付的金额请看 credits 字段。
  • 失败的任务(包括提交后被内容审核拒绝的任务)全额退款。在任务创建之前就被拒绝的请求不收费。

当前牌价,与价格页一致。享有协商折扣的账户实付更低;任务的 data.usage 始终显示实际扣费金额。

选项牌价(美元)
8 秒 · 720p$0.48
8 秒 · 1080p$0.8

常见错误

错误或现象原因处理方式
400 field "duration" is not supported by model kling-2.6-motion-control此模型不接受的字段(aspect_ratio、seed、generate_audio、task_type 等也一样)。请删除该字段。时长跟随你的动作视频。
400 "images" accepts at most 1 items or "reference_videos" accepts at most 1 items角色图片或动作视频多于一个。每个列表请恰好发送一个链接。
400 "reference_videos" is required缺少动作视频;此模型没有仅文本或仅图片模式。请在 reference_videos 和 images 中各发送一个链接。
400 reference_videos[0] is 2 seconds long; this model takes reference video of 3 to 30 seconds.动作视频短于 3 秒或长于 30 秒。请裁剪或更换片段。未扣费。
400 reference_videos[0] could not be downloaded: the URL returned HTTP 404.该链接返回错误或空文件。请把片段放到公开的 HTTPS 链接上,或用 POST /v1/files 上传。
400 "resolution" must be one of: [720p 1080p]480p、4k,或 1080P 这类大写写法。请发送 720p 或 1080p。
400 field "background_source" is not supported by model kling-2.6-motion-controlbackground_source 只存在于 kling-3-motion-control。请删除它,或改用 kling-3-motion-control。
402 insufficient_credits余额低于创建时预留的金额,即该朝向允许的最长结果(image 为 10 秒,video 为 30 秒)。请充值,或使用 character_orientation: "image" 配合不超过 10 秒的片段,预留金额更少。
创建任务时返回 503 processing_unavailable该模型目前不提供:它不在 GET /v1/media/models 中。未扣费。请先查看该列表,再退避重试。
任务 failed,错误码 content_policy_violation提示词、某个输入或结果被内容审核拒绝。请修改输入。原样重试仍会失败;不会扣费。

HTTP 错误速查

任务生成之前的错误会以非 2xx 响应返回,不扣费。请根据 error.code 或 error.retryable 判断处理方式;message 会指出问题所在。完整列表和重试策略见错误码。

{
"error": {
"code": "bad_request",
"message": "\"prompt\" is required",
"retryable": false,
"request_id": "req_5f0c2a9e4b7d4e31"
}
}
HTTP 状态码error.code处理方式
400bad_request, content_policy_violation修改请求;message 会点名出错的字段。不要原样重试。
401missing_api_key, invalid_api_key(旧版客户端可能看到 unauthorized)以 Authorization: Bearer <key> 发送有效的密钥。
402insufficient_credits充值,或提高密钥的额度,然后重新发送。
403forbidden该密钥或账户不能使用此模型(例如免费额度只覆盖部分模型)。不要原样重试。
404not_found在 GET /v1/tasks/{task_id} 上:该任务在此密钥所属账户下不存在。请检查 ID。
409idempotency_conflict换一个新的 Idempotency-Key,或等待使用该键的第一个请求完成。
429rate_limit_exceeded等待 Retry-After 秒(也见 error.retry_after_seconds)后重试。
500internal_error退避重试;若持续出现,请带上 request_id 联系支持。
503processing_unavailable, processing_timeout, processing_failed, result_transfer_failed未扣费。使用指数退避重试。

两个模型的区别

Kling 2.6 Motion ControlKling 3.0 Motion Control
输入一张角色图片,一段 3~30 秒的动作视频相同
resolution720p, 1080p相同
character_orientationimage(默认)、video相同
background_source不接受input_video(默认)、input_image
每秒单价较低较高(见各页的价格表)

身份验证

AuthorizationBearer

Send your API key as Authorization: Bearer <BEATAPI_API_KEY>.

请求头

Idempotency-Keystring可选<=255 characters

请求体使用 JSON,并设置 Content-Type: application/json。Idempotency-Key 为可选:每个逻辑请求发送一个唯一值(最长 255 个字符),仅在重试完全相同的请求体时复用。24 小时内,用相同的键和请求体重试会再次返回第一次的响应,并带上 Idempotent-Replayed: true;相同的键搭配不同的请求体则返回 409 idempotency_conflict。非 2xx 的响应不会被保存,因此 400 或 402 之后的重试会重新执行。

请求

This endpoint expects an object.
imageslist of strings必需

角色图片:恰好一个链接。它就是做出动作的角色。

数量:1–1

每一项都必须是公网 https:// 链接。本地文件请先上传(POST /v1/files),再传入返回的 data.url。

  • 发送包含一个公开 HTTPS 链接的列表;本地文件可用 POST /v1/files 上传,并在此处使用返回的 data.url。
  • 创建任务时不检查图片的大小、格式和尺寸。

取值有误时

  • 缺失:"images" is required
  • 空列表:"images" requires at least 1 item
  • 超过一个链接:"images" accepts at most 1 items
  • 不是 https:// 链接:"images[0]" must be a public HTTPS URL
modelenum必需

要运行的模型。

取值:kling-2.6-motion-control

取值有误时

  • 缺失:"model" is required
  • 向此端点发送了图片模型:"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
允许的值:
reference_videoslist of strings必需

动作视频:恰好一个链接。images 中的角色会复现这段视频里的动作。

数量:1–1

每一项都必须是公网 https:// 链接。本地文件请先上传(POST /v1/files),再传入返回的 data.url。

  • 长度必须为 3 到 30 秒(见输入素材限制)。结果与该视频一样长,上限由 character_orientation 决定。
  • 在主机允许的情况下,网关会在创建任务前通过字节范围请求从文件头读取时长。
  • 本地文件可用 POST /v1/files 上传(视频最大 100 MB),并在此处使用返回的 data.url。

说明:按实际生成的视频秒数计费,因此请把片段裁剪到只含所需动作。使用 character_orientation: "image" 时,结果最长 10 秒。

取值有误时

  • 缺失:"reference_videos" is required
  • 空列表:"reference_videos" requires at least 1 item
  • 超过一个链接:"reference_videos" accepts at most 1 items
  • 不是 https:// 链接:"reference_videos[0]" must be a public HTTPS URL
  • 短于 3 秒或长于 30 秒:reference_videos[0] is 2 seconds long; this model takes reference video of 3 to 30 seconds.
  • 主机返回错误或空文件:reference_videos[0] could not be downloaded: the URL returned HTTP 404.
character_orientationenum可选默认为 image

角色朝向是跟随角色图片(image)还是动作视频(video)。

可选值:image, video

默认值:image

  • 它同时决定结果的最长时长:image 最长 10 秒,video 最长 30 秒(见“朝向如何决定时长”)。
  • 省略时使用 image,因此超过 10 秒的动作视频需要显式指定 video。
  • 它决定创建任务时在余额上预留的金额:即该朝向允许的最长结果(见计费)。

取值有误时

  • 取值不在列表中:"character_orientation" must be one of: [image video]
允许的值:
promptstring可选<=2500 characters

关于角色或场景的可选文字提示。动作本身来自视频。

长度:≤ 2500 个字符

  • 长度按字符计算(一个中日韩文字算一个字符)。接受空字符串。

取值有误时

  • 超出长度上限:"prompt" has an unsupported length
resolutionenum可选默认为 720p

输出分辨率,同时也是价格档位:1080p 每秒的价格高于 720p。

可选值:720p, 1080p

默认值:720p

  • 仅限小写。省略时使用 720p。

取值有误时

  • 取值不在列表中(例如 480p、4k 或 1080P):"resolution" must be one of: [720p 1080p]
允许的值:

响应

任务对象。任务成功之前 output 为 null。标注“运行中”的字段会在任务结束后消失。

错误

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
409
Conflict Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error