Vidu Q3 Pro is the higher-quality edition of ShengShu's Vidu Q3, out since January 2026. It covers an unusually wide range of lengths, from a one-second sting to a sixteen-second single shot. Sound with dialogue and effects is generated by default, and it does not raise the price, so there is no reason to leave it out.
What you can make
- Very short 1 to 3 second loops, stings and logo reveals.
- A single continuous 16-second scene.
- A morph from one keyframe image to another.
- Clips with talking and sound effects where audio comes free with the picture.
Settings that matter
- Length: 1 to 16 seconds, 5 by default.
- Resolution: 540p, 720p or 1080p.
- Images: one image animates a start frame; two images make a transition from the first to the last.
- Aspect ratio: 16:9, 9:16, 4:3, 3:4 or 1:1, but only for text-to-video. With images, the frames decide the shape.
- Sound: on by default at no extra cost. Describe it, for example "rain on a tin roof, far-off thunder".
- Seed and prompt: a
seedholds a result steady while you tweak wording (-1is random); prompts go up to 2,000 characters.
Starter prompt
A lighthouse keeper opens a heavy door into a storm, wind tears at his coat, he shouts "Hold the line!", waves crash against rocks below, thunder rolls, dramatic side lightingSet the length to the moment you need; for a 3-second sting, cut the prompt to one action.
Questions
What does Vidu Q3 Pro charge per clip?
from $0.142 per second, with sound already included. If generation fails, you pay nothing.
Pro or Turbo?
The parameters are identical. Pro gives the higher fidelity, Vidu Q3 Turbo is quicker and cheaper. The first test of both shows how they differ in practice.
How does Vidu Q3 Pro compare with Kling 3.0?
Vidu Q3 Pro in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "vidu-q3-pro",
"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": "720p",
"duration": 5
}
}'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": "vidu-q3-pro",
"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": "720p",
"duration": 5
}
}).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": "vidu-q3-pro",
"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": "720p",
"duration": 5
}
}),
})).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 | ≤ 2000 chars | |
aspect_ratio | string | 16:9 9:16 4:3 3:4 1:1 | 16:9 |
resolution | string | 540p 720p 1080p | 720p |
duration | integer | 1-16 | 5 |
generate_audio | boolean | true | |
image_url | string | ||
end_image_url | string | ||
seed | integer |
Fetch this list as JSON with GET /v1/models/vidu-q3-pro.























