Veo 3.1 Fast is the speedier edition of Google's Veo 3.1, available since October 2025. You get the Veo look and the same resolutions, up to 4K, with shorter waits. Every clip in Kadraris runs exactly 8 seconds, which suits ads, teasers and single shots for an edit.
What you can make
- Vertical or horizontal social ads and teasers.
- Product shots steered by a few reference images.
- 4K B-roll to cut into a longer video.
- Quick prompt rounds before the final render on the quality tier.
Settings that matter
- Length: fixed at 8 seconds. Google also has 4 and 6 second clips, but they are not offered in Kadraris yet.
- Resolution: 720p, 1080p or 4K.
- Aspect ratio: 16:9 or 9:16.
- Images: up to 3 in
image_urls. Tell the prompt what each brings: the subject, the outfit, the setting. - Prompt: up to 4,000 characters. Build it like a shot note: subject, action, camera, lens, light, sound.
- Not exposed yet: separate first and last frame fields, an audio on/off switch and clip extension.
Starter prompt
Low-angle tracking shot, 24mm lens: a skateboarder rolls down an empty sunlit street, wheels clacking on the pavement, he says "Almost there" and grins, warm late-afternoon lightWrite spoken words in quotes and add background sounds as a separate phrase; swap the subject and the street for your own.
Questions
What does Veo 3.1 Fast cost per clip?
from $0.354 per video. The API returns estimated_cost before the job runs, and failed clips cost nothing.
Can I make videos longer than 8 seconds?
Not in one clip. Generate several 8-second shots and join them in your editor.
When should I switch to the quality tier?
When the draft is right and the final has to look its best. Rerun the prompt on Veo 3.1 (Quality). The Veo 3.1 vs Veo 3.1 Fast page compares the two.
Veo 3.1 Fast in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast",
"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"
}
}'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": "veo-3.1-fast",
"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"
}
}).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": "veo-3.1-fast",
"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"
}
}),
})).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 | ≤ 4000 chars | |
aspect_ratio | string | 16:9 9:16 | 16:9 |
resolution | string | 720p 1080p 4k | 720p |
duration | integer | 8 | 8 |
image_urls | array | max 3 |
Fetch this list as JSON with GET /v1/models/veo-3.1-fast.























