Veo 3.1 Fast is the faster tier of Google's Veo 3.1, released in October 2025. On Jantaris it produces fixed 8-second clips in 16:9 or 9:16 at 720p, 1080p or 4K. Besides text-to-video it accepts up to 3 images in image_urls. Prompts can be up to 4,000 characters. Google also offers 4 and 6 second clips, explicit first and last frame fields, an audio switch and clip extension, but Jantaris does not expose those options yet.
Best for
- Social ads and teasers in 9:16 or 16:9
- Product shots guided by reference images
- 4K B-roll for edits
- Fast iteration on Veo prompts before a quality render
Prompting tips
- Structure prompts like a shot description: subject, action, camera move, lens, lighting, sound.
- Put spoken lines in quotes and describe ambient sound separately.
- With images attached, say in the prompt what each one contributes: subject, outfit or setting.
- Draft on Fast, then re-render the best prompt on Veo 3.1 (Quality).
FAQ
How much does the Veo 3.1 Fast API cost?
Veo 3.1 Fast is priced at from $0.354 per video. You see estimated_cost before the job runs, and failed generations are not charged.
How long are Veo 3.1 Fast videos?
Every clip on Jantaris is 8 seconds. For longer videos, generate several shots and join them in your editor.
Does Veo 3.1 Fast support 4K?
Yes. 720p, 1080p and 4K are available in both 16:9 and 9:16.
How to call Veo 3.1 Fast via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-fast",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"aspect_ratio": "16:9",
"resolution": "720p"
}
}'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": "veo-3.1-fast",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"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://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": "veo-3.1-fast",
"input": {
"prompt": "A slow dolly shot through a neon-lit night market in the rain, reflections on wet asphalt, cinematic",
"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));
Parameters
| 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 |
The same schema is available from GET /v1/models/veo-3.1-fast.









