Kling 3.0 is the Kling to use when a character has to speak on camera or a shot must land on an exact final frame. Kuaishou released it in February 2026. It creates video from a prompt or from images, can generate sound with dialogue, lip sync and ambience, and goes up to 4K for ads.
Kuaishou's multi-shot mode and @-elements are not on Kadraris yet, but you can list several shots in one prompt.
What you can make
- A smooth move from a first frame to a last frame
- Characters delivering lines with matching lip movement
- Packshots animated into short product films
- 4K clips for social and paid ads
Settings that matter
duration: 3 to 15 seconds, 6 by default.resolution: 720p, 1080p (default) or 4K.aspect_ratio: 16:9, 9:16 or 1:1. When images are attached, the output follows the image.generate_audio: off by default. Turn it on for dialogue and ambient sound.- Transitions: first frame in
image_url, last frame inend_image_url, and describe the movement between them. - Prompts up to 2,500 characters. Put spoken lines in quotes and say who speaks and how.
Starter prompt
Shot 1: a chef plates a dessert in a busy kitchen. Shot
2: close-up, she looks at camera and says proudly, "This
one took me ten years." Clatter of pans, warm lightChange the character, line and setting, and keep the quotes around the dialogue so the voice is generated.
Questions
What does a Kling 3.0 clip cost?
from $0.0963 per second. The exact estimate for your settings comes back before the job runs, and failed clips cost $0. Worked examples are in Kling 3.0 API pricing.
Can I use Kling without a Kuaishou subscription?
Yes, you pay per clip from your Kadraris balance. The Kling without a subscription guide explains how that compares with Kuaishou's own plans.
How do I copy movement from my own video?
Use Kling 3.0 Motion Control. For dialogue in other languages, see lip sync with Kling.
Kling 3.0 in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-3.0",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 6
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "kling-3.0",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 6
}
}).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://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "kling-3.0",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "1080p",
"duration": 6
}
}),
})).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));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 2500 chars | |
aspect_ratio | string | 16:9 9:16 1:1 | 16:9 |
resolution | string | 720p 1080p 4k | 1080p |
duration | integer | 3-15 | 6 |
generate_audio | boolean | false | |
image_url | string | ||
end_image_url | string | ||
image_urls | array | max 2 |
Fetch this list as JSON with GET /v1/models/kling-3.0.























