Vidu Q3 Turbo is the faster, more affordable edition of ShengShu's Vidu Q3, released in January 2026 alongside Pro. It accepts exactly the same fields, so moving between the two means changing one word. Sound is generated by default and already paid for, which makes it a good engine for social content you publish every day.
What you can make
- Daily batches of short social clips.
- A product teaser from a single photo.
- A preview of a shot before you render the final on Vidu Q3 Pro.
- Short transitions between two images.
Settings that matter
- Length: 1 to 16 seconds. In short clips, one clear movement at the start of the prompt works best.
- Resolution: 540p, 720p (default) or 1080p. Use 540p for rough drafts.
- Images: one photo animates from a start frame; two photos make a first-to-last transition.
- Aspect ratio: 16:9, 9:16, 4:3, 3:4 or 1:1 in text-to-video. With images attached, their shape wins.
- Sound: dialogue and effects on by default, no surcharge.
- Switching tiers: keep requests identical to Vidu Q3 Pro and swap only the model id.
Starter prompt
A sneaker drops onto a puddle in slow motion, water splashes outward, camera at ground level, city traffic noise and a deep bass thump on impactReplace the sneaker with your product; one action and one sound effect is the right size for a 3 to 5 second clip.
Questions
What does a Vidu Q3 Turbo clip cost?
from $0.081 per second, sound included. You see the estimate before the job starts, and a failed clip is free.
Do I pay more for the generated sound?
No. Dialogue and effects are on by default and the price stays the same. If you plan to use your own music, swap the track in your editor.
Is Turbo good enough for final delivery?
For phone-first social content it often is. For hero shots, compare one render with Pro using the same prompt and seed.
Vidu Q3 Turbo 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-turbo",
"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-turbo",
"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-turbo",
"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-turbo.























