Kling 2.6 Motion Control
kwaivgi/kling-v2.6/motion-control
kwaivgi/kling-v2.6/motion-control. Duyệt API mô hình ảnh, video và đổi khuôn mặt. Thử mô hình rồi tích hợp qua một API REST thống nhất.
Mô hình liên quan
Đầy đủ tham số, lược đồ đầu ra và giá hiện tại
| Chợ API mô hình AI | Một nền tảng cho mọi thứ | Phổ biến nhất | Điều khoản | Duyệt API mô hình ảnh, video và đổi khuôn mặt. Thử mô hình rồi tích hợp qua một API REST thống nhất. |
|---|---|---|---|---|
| image *Character Image | image_upload | — | image/jpeg,image/jpg,image/png · 0–1 items | |
| character_orientationCharacter Orientation | select | image | image | video | |
| promptPrompt | text | — | ≤ 500 chars | |
| negative_promptNegative Prompt | text | — | ≤ 500 chars | |
| resolutionGeneration Mode | select | 1080P | 720P | 1080P | |
| keep_original_soundKeep Original Sound | boolean | true | — |
Đầy đủ tham số, lược đồ đầu ra và giá hiện tại
| Tìm hiểu thêm | Một nền tảng cho mọi thứ | Duyệt API mô hình ảnh, video và đổi khuôn mặt. Thử mô hình rồi tích hợp qua một API REST thống nhất. |
|---|---|---|
| videos | array<string> |
API
Duyệt API mô hình ảnh, video và đổi khuôn mặt. Thử mô hình rồi tích hợp qua một API REST thống nhất.
cURL
# 1) Submit — returns { "task_uuid": "..." }
curl -X POST "https://www.namifusion.com/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"image": [
"https://assets.namifusion.com/uploads/image/e6d71928-36de-4d71-a26c-9b1b427a6dfd/2026-03-27/0847e5142a20.jpg?imageMogr2/thumbnail/600x/format/webp/quality/85"
],
"character_orientation": "image",
"prompt": "Preserve the appearance of the person in the reference image while following the movements in the reference video. Keep motion smooth and natural, with consistent facial features and clothing.",
"resolution": "1080P",
"keep_original_sound": true
}
}'
# 2) Poll until status is "completed", then read the output URLs
curl "https://www.namifusion.com/api/v1/marketplace/run/tasks/TASK_UUID" \
-H "Authorization: Bearer YOUR_API_KEY"Python
import time, requests
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1) Submit
resp = requests.post(
"https://www.namifusion.com/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control",
headers=HEADERS,
json={
"input": {
"image": [
"https://assets.namifusion.com/uploads/image/e6d71928-36de-4d71-a26c-9b1b427a6dfd/2026-03-27/0847e5142a20.jpg?imageMogr2/thumbnail/600x/format/webp/quality/85"
],
"character_orientation": "image",
"prompt": "Preserve the appearance of the person in the reference image while following the movements in the reference video. Keep motion smooth and natural, with consistent facial features and clothing.",
"resolution": "1080P",
"keep_original_sound": True
}
},
)
resp.raise_for_status() # 401/402/429/5xx stop here instead of polling a bad task
task = resp.json()
# 2) Poll until a terminal state (completed / failed / cancelled).
# This model is allowed up to 600s server-side.
deadline = time.time() + 660
while task.get("status") not in ("completed", "failed", "cancelled"):
if time.time() > deadline:
raise TimeoutError(f"still {task.get('status')} — keep the task_uuid and poll later")
time.sleep(3)
poll = requests.get(f"https://www.namifusion.com/api/v1/marketplace/run/tasks/{task['task_uuid']}", headers=HEADERS)
poll.raise_for_status()
task = poll.json()
print(task["status"], task.get("output"))JavaScript
const API_KEY = "YOUR_API_KEY";
const HEADERS = { Authorization: `Bearer ${API_KEY}` };
// 1) Submit
const resp = await fetch("https://www.namifusion.com/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control", {
method: "POST",
headers: { ...HEADERS, "Content-Type": "application/json" },
body: JSON.stringify({
"input": {
"image": [
"https://assets.namifusion.com/uploads/image/e6d71928-36de-4d71-a26c-9b1b427a6dfd/2026-03-27/0847e5142a20.jpg?imageMogr2/thumbnail/600x/format/webp/quality/85"
],
"character_orientation": "image",
"prompt": "Preserve the appearance of the person in the reference image while following the movements in the reference video. Keep motion smooth and natural, with consistent facial features and clothing.",
"resolution": "1080P",
"keep_original_sound": true
}
}),
});
if (!resp.ok) throw new Error(`submit failed: ${resp.status} ${await resp.text()}`);
let task = await resp.json();
// 2) Poll until a terminal state (completed / failed / cancelled).
// This model is allowed up to 600s server-side.
const deadline = Date.now() + 660 * 1000;
while (!["completed", "failed", "cancelled"].includes(task.status)) {
if (Date.now() > deadline) throw new Error(`still ${task.status} — keep the task_uuid and poll later`);
await new Promise((r) => setTimeout(r, 3000));
const poll = await fetch(`https://www.namifusion.com/api/v1/marketplace/run/tasks/${task.task_uuid}`, { headers: HEADERS });
if (!poll.ok) throw new Error(`poll failed: ${poll.status}`);
task = await poll.json();
}
console.log(task.status, task.output);Tài liệu API
NamiFusion Kling 2.6 Motion Control
AI motion-controlled video generation: upload a character image and a motion reference video to create an animated video that preserves the character's identity.
NamiFusion Kling 2.6 Motion Control is a video generation service designed for motion transfer scenarios. It takes a character image and a motion reference video, transfers the dance, action, or gesture from the reference video onto the target character, and outputs a result video with better identity consistency and temporal coherence.
Key Features
- Motion Transfer: Transfer body movements from a reference video to a target character, suitable for dance, performance, and action demonstration scenarios.
- Character Consistency: Uses the character image as the visual subject of the generated video and preserves the person's appearance and identity features as much as possible.
- Optional Prompt Control: Supports
promptandnegative_promptto provide additional guidance for style and undesired content. - Async Tasks: Returns a
task_uuidafter submission, and you can retrieve processing status and final results through polling.
Technical Specifications
| Parameter | Details |
|---|---|
| Model ID | kwaivgi/kling-v2.6-pro/motion-control |
| Request Method | Async POST (submit task + poll for results) |
| Input | Character image URL + motion reference video URL |
| Output | Generated video URL |
| Processing Time | Typically tens of seconds to several minutes, with a maximum polling wait time of 10 minutes |
| Pricing | $0.07 / second for 720P, $0.112 / second for 1080P, minimum charge of 3 seconds |
Quick Start
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control | POST | Submit a motion control task |
/api/v1/marketplace/run/tasks/{task_uuid} | GET | Query task status and results |
Authentication
Include your API Key in the request header:
X-API-Key: sk-your-api-key
Usage Example
Step 1: Submit a Task
curl -X POST "https://www.namifusion.com/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control" \
-H "X-API-Key: sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"input": {
"image": "https://static.example.com/character.png",
"video": "https://static.example.com/motion.mp4",
"character_orientation": "image",
"prompt": "full body, natural motion, cinematic lighting",
"negative_prompt": "blur, distortion, extra limbs, low quality",
"keep_original_sound": true
}
}'
Response Example:
{
"task_uuid": "443ea3cd-4025-40d2-901f-ef18970dbc43",
"status": "pending",
"cost_credits": 0
}
Step 2: Poll Task Status
curl -X GET "https://www.namifusion.com/api/v1/marketplace/run/tasks/443ea3cd-4025-40d2-901f-ef18970dbc43" \
-H "X-API-Key: sk-your-api-key"
Processing:
{
"task_uuid": "443ea3cd-4025-40d2-901f-ef18970dbc43",
"status": "processing"
}
Completed:
{
"task_uuid": "443ea3cd-4025-40d2-901f-ef18970dbc43",
"model_id": "kwaivgi/kling-v2.6-pro/motion-control",
"status": "completed",
"output": {
"video_url": "https://cdn.example.com/results/kling_motion_control_output.mp4"
},
"cost_credits": 0,
"created_at": "2026-03-27T11:40:00Z",
"completed_at": "2026-03-27T11:41:20Z"
}
Python Example
import requests
import time
API_KEY = "sk-your-api-key"
BASE_URL = "https://www.namifusion.com/api/v1/marketplace/run"
HEADERS = {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
}
payload = {
"input": {
"image": "https://static.example.com/character.png",
"video": "https://static.example.com/motion.mp4",
"character_orientation": "image",
"prompt": "full body, natural motion, cinematic lighting",
"negative_prompt": "blur, distortion, extra limbs, low quality",
"keep_original_sound": True,
}
}
submit_resp = requests.post(
f"{BASE_URL}/kwaivgi/kling-v2.6-pro/motion-control",
headers=HEADERS,
json=payload,
)
submit_resp.raise_for_status()
task = submit_resp.json()
task_uuid = task["task_uuid"]
print(f"Task submitted: {task_uuid}")
while True:
status_resp = requests.get(
f"{BASE_URL}/tasks/{task_uuid}",
headers=HEADERS,
)
status_resp.raise_for_status()
result = status_resp.json()
status = result["status"]
print(f"Status: {status}")
if status == "completed":
print("Result:", result["output"]["video_url"])
break
if status == "failed":
print("Failed:", result.get("error_message", "Unknown error"))
break
time.sleep(5)
Detailed Parameters and Return Values
Request Parameters
The request body is JSON, and all parameters are placed inside the input object:
{
"input": {
"image": "https://...",
"video": "https://...",
"character_orientation": "image",
"prompt": "full body, natural motion",
"negative_prompt": "blur, low quality",
"keep_original_sound": true
}
}
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
image | string | Yes | - | Character image URL. Supports .jpg, .jpeg, and .png, with a maximum file size of 10MB, minimum dimensions of 300x300, and an aspect ratio range from 1:2.5 to 2.5:1. |
video | string | Yes | - | Motion reference video URL. Supports .mp4 and .mov, with a maximum file size of 10MB, minimum dimensions of 300x300, and an aspect ratio range from 1:2.5 to 2.5:1. |
character_orientation | string | No | "image" | Character source type. The current model configuration uses image as the default. Supported values: image, video. |
prompt | string | No | null | Optional positive prompt for describing motion style, camera mood, character expression, and similar guidance. Maximum length is 500 characters. |
negative_prompt | string | No | null | Optional negative prompt for constraining unwanted content. Maximum length is 500 characters. |
keep_original_sound | boolean | No | true | Whether to preserve the original audio from the motion reference video. |
Task Status
After submitting the task, query its status by polling. A 5-second polling interval is recommended:
| Status | Description |
|---|---|
pending | The task has been created and is waiting to be processed. |
processing | The task is being processed. |
completed | The task is completed, and the result video URL is available in output.video_url. |
failed | The task failed. Check error_message for the reason. |
Return Value Structure
Task Submission Response
| Field | Type | Description |
|---|---|---|
task_uuid | string | Unique task identifier used for later status queries. |
status | string | Initial task status, usually pending. |
cost_credits | number | Credits consumed by this task. |
Task Completion Response
| Field | Type | Description |
|---|---|---|
task_uuid | string | Unique task identifier. |
model_id | string | Model ID (kwaivgi/kling-v2.6-pro/motion-control). |
status | string | Task status. |
output.video_url | string | Generated result video URL. |
cost_credits | number | Credits consumed. |
created_at | string | Task creation time (ISO 8601). |
completed_at | string | Task completion time (ISO 8601). |
error_message | string | Error message, returned only when failed. |
How Parameters Affect the Output
| Parameter | Effect on Output |
|---|---|
image | Determines the appearance of the main character in the final video. A clear character image with no occlusion and complete framing is recommended. |
video | Provides the motion trajectory and rhythm reference. Clearer movement and a more prominent subject usually lead to more stable transfer results. |
prompt | Adds guidance for camera style, motion atmosphere, clothing details, or scene tendencies, but does not replace the reference motion itself. |
negative_prompt | Helps reduce issues such as blur, distortion, extra limbs, and low-quality details. |
keep_original_sound: true | The output video preserves the original sound from the reference video as much as possible, making it more suitable for dance and performance scenarios. |
keep_original_sound: false | The output video does not preserve the original sound from the reference video, making it more suitable for later audio replacement or editing. |
Notes
- Input URLs must be publicly accessible: Both
imageandvideoshould be public URLs that the server can download directly. - Using an image as the character input is recommended: The current model configuration defaults to
character_orientation: "image", which is also the most stable and clearly defined integration method. - Keep prompts concise and specific:
promptandnegative_promptwork best as supplemental guidance. Avoid stacking too many conflicting descriptions. - A 5-second polling interval is recommended: This model uses async task processing. Query the task status every 5 seconds, with a maximum wait time of 600 seconds.
- The result field is a single video URL: After task completion, read the result from
output.video_urlrather than from an array field likevideos.