Kling 2.6 Motion Control is Kuaishou's budget motion transfer model, released in December 2025. It takes the movement from a reference video and applies it to the subject of a reference image, so a photo of a character can perform the same dance, gesture or walk. On Jantaris the subject's facing follows the image, so source clips run 3-10 seconds, and the source audio is kept. You choose std or pro quality. The 30-second video-facing mode and the audio switch are not available in Jantaris yet. Billing is per second of the source clip.
Best for
- High-volume motion trend videos on a budget
- Testing a motion idea before a v3 render
- Avatars that copy simple gestures
- Social templates reused with many different images
Prompting tips
- Trim the source clip to the exact movement you need, since billing follows its length.
- Match the image's pose and framing to the video's opening frame for a cleaner transfer.
- The source audio stays in the output, so it works well for movement synced to music.
- Start on
quality: stdand useprofor the takes you keep.
FAQ
What does Kling 2.6 Motion Control cost?
It costs $0.138 per second, counted per second of the source clip. Failed generations are not charged.
Is Kling 2.6 Motion Control cheaper than v3?
Yes. It has a lower per-second rate than Kling 3.0 Motion Control, which in turn offers better subject consistency.
What file formats does the reference video need?
MP4 or MOV, up to 100 MB.
How to call Kling 2.6 Motion Control via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-2.6-motion-control",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"video_url": "https://example.com/input.mp4"
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "kling-2.6-motion-control",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"video_url": "https://example.com/input.mp4"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "kling-2.6-motion-control",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"video_url": "https://example.com/input.mp4"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Parameters
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ||
quality | string | std pro | std |
image_url | string | ||
video_url * | string |
The same schema is available from GET /v1/models/kling-2.6-motion-control.









