Veo 3.1 Lite is the lowest-cost tier of Google's Veo 3.1, released in March 2026. It is prompt-only: image inputs are rejected, so every clip starts from text. Each request returns a fixed 8-second clip in 16:9 or 9:16 at 720p, 1080p or 4K, billed at a flat rate per generation. Prompts can be up to 4,000 characters. It is the simplest way to get Veo footage when you do not need frame control or reference images.
Best for
- Generic B-roll and establishing shots
- Testing Veo prompt ideas at low cost
- Automated text-to-video pipelines
- 4K background footage for web pages
Prompting tips
- With no image input, describe the look fully: color palette, era, lens, time of day.
- Every clip is 8 seconds, so plan an action that fills that time.
- Set
aspect_ratio: 9:16for vertical platforms; the default is 16:9. - When you need to start from an image, switch to Veo 3.1 Fast.
FAQ
How much does Veo 3.1 Lite cost?
It is billed flat per generation at from $0.177 per video. Failed generations are not charged.
Can Veo 3.1 Lite do image-to-video?
No, image inputs are rejected. It is text-to-video only.
How long are Veo 3.1 Lite clips?
Always 8 seconds, at the resolution you choose.
How to call Veo 3.1 Lite 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-lite",
"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-lite",
"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-lite",
"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 |
The same schema is available from GET /v1/models/veo-3.1-lite.









