Deciding which jobs to send to Veo 3.1 Lite
Updated 2026-10-02
Veo 3.1 ships as three model ids: google/veo-3.1, google/veo-3.1-fast and google/veo-3.1-lite. The existing cost strategy guide covers how to spend across all three. This page is narrower: given a specific job, how do you decide whether Lite is the right id? It makes no quality comparisons, because those depend on your prompts. It gives you the questions to ask and a cheap way to answer them with your own footage.
Start from the job, not the variant
Lite is the low-cost end of the ladder. Cost per second is the only reason to choose it, so the useful question is "how many clips will I generate that nobody will scrutinise?" Five criteria separate jobs that fit from jobs that do not.
| Criterion | Points toward Lite | Points away from Lite |
|---|---|---|
| Volume | Hundreds of clips, most of which get discarded | A handful of hero shots |
| Review stage | Internal triage, storyboards, prompt tuning | Client-facing or published output |
| Delivery size | Small embeds, previews, social thumbnails | Large-screen or high-resolution delivery |
| Cost of a bad take | Low: regenerate and move on | High: a deadline or an approval depends on it |
| Prompt stability | Template-driven prompts you have already validated | Novel, detail-heavy prompts |
If three or more rows land in the left column, Lite is a reasonable default for that job. If the "cost of a bad take" row lands on the right, treat Lite as a draft tier only.
Workloads that usually fit
- Prompt exploration. You are trying ten phrasings of a camera move. You need to see which phrasing the model understands, not to ship the result.
- Bulk variations from a validated template. Product or catalogue clips where the prompt is a template and the inputs are a start image and a short motion description.
- Storyboard and animatic passes. Rough motion for timing, to be replaced by finals later.
- Automated tests. Integration tests that exercise create, poll and download need a real video back, not a good one. Short, small, cheap clips are ideal.
Workloads where it is a poor first choice
- Anything where fine detail is the point. Faces, hands, small text and product labels are where cheaper tiers are most likely to disappoint. Do not assume; run the check below.
- Final delivery at the top of the model's tier range. Check the Lite model page for which tiers it lists. At the time of writing it shows 720p and 1080p, while full Veo 3.1 lists higher ones, so a 4K deliverable has to come from a different id regardless of how Lite looks.
- One-shot jobs with no retry budget. If you cannot afford a second attempt, you want the variant you trust most.
The five-prompt bake-off
Rather than argue about quality in the abstract, settle it on your own content. Pick five prompts that represent your real workload, including your hardest one. Run each through Lite and Fast with identical parameters, and keep the job ids. Then have the person who will approve the output rank pairs blind. If Lite wins or ties on four of five, it is your default; if it loses on the hard prompt only, route hard prompts to Fast and keep Lite for the rest.
import os, time, requests
API = "https://videorouter.sh/api/v1"
H = {"Authorization": f"Bearer {os.environ['VIDEOROUTER_KEY']}"}
PROMPTS = ["a cyclist crossing a rainy intersection, tracking shot", "..."]
def run(model, prompt):
j = requests.post(f"{API}/videos", headers=H, json={
"model": model, "prompt": prompt,
"duration_secs": 5, "resolution": "720p"}).json()
while j.get("status") not in ("completed", "failed"):
time.sleep(5)
j = requests.get(f"{API}/videos/{j['id']}", headers=H).json()
return j
for p in PROMPTS:
for m in ("google/veo-3.1-lite", "google/veo-3.1-fast"):
j = run(m, p)
print(m, j["id"], j["status"], j.get("data", [{}])[0].get("url"))
Keep duration_secs short while testing; you are billed once at creation from the requested duration, and polling is free. A resolution that the host does not support is ignored rather than rejected, so check the returned file's dimensions before comparing.
Routing rules you can encode
Once you know where Lite holds up, write the rule down as code instead of leaving it as team folklore:
def pick_model(job):
if job["stage"] == "final":
return "google/veo-3.1"
if job["stage"] == "review" or job["has_faces"]:
return "google/veo-3.1-fast"
return "google/veo-3.1-lite"
The shape matters more than the specifics: the stage of the pipeline picks the id, not the developer's mood on the day.
Price and hosts
Lite is not priced identically on every host, and the cheapest host for Lite is not necessarily the cheapest for Fast. The live table shows the cheapest and priciest host per variant:
| Model | Cheapest host | Priciest host | Cheapest is | Hosts |
|---|---|---|---|---|
| google/veo-3.1 (2160p) | Pika $0.2 / second | MachGen $0.6 / second | 67% lower | 7 |
| google/veo-3.1-fast (2160p) | Replicate $0.1 / second | MachGen $0.3 / second | 67% lower | 7 |
| google/veo-3.1-lite (1080p) | SandBase $0.03 / second | WaveSpeedAI $0.08 / second | 62% lower | 3 |
Per second, before VideoRouter's 2% platform fee. For tiered models each row compares the resolution tier with the widest host-to-host gap. Built 2026-10-02 from the live catalog.
Leave the id unpinned to route to the cheapest healthy host, or append a host (google/veo-3.1-lite/<host>) as a soft preference that can still fall back. If you need a hard pin, use provider.only with allow_fallbacks: false, as described in VideoRouter's provider-selection documentation. Failed-upstream jobs are not billed, and the platform adds a 2% fee on video. See the model pages for per-host details and the pricing page for the table, or create a key and run the bake-off yourself.
Frequently asked questions
When is Veo 3.1 Lite the right choice?
When you generate many clips that are mostly reviewed internally, such as prompt exploration, templated variations, storyboards and integration tests. Reserve Fast or full Veo 3.1 for work where a bad take is expensive.
Does Lite support the same resolutions as full Veo 3.1?
Not necessarily. The Lite model page lists its own tiers, so check it before promising a delivery size. Unsupported resolutions are ignored rather than rejected, so verify the returned file.
How do I know whether Lite is good enough for my content?
Run a small blind comparison of Lite against Fast using the same prompts and parameters, including your hardest prompt, and let the person who approves output rank the pairs.
Can I route different jobs to different Veo variants automatically?
Yes. The variant is just the model string, so a small function keyed on pipeline stage can choose between google/veo-3.1-lite, -fast and the full model.
Keep reading
- Veo 3.1 vs Veo 3.1 Fast vs Lite — Which to Call from Your API
- Veo API Without Google Cloud: What You Skip and What You Keep
- Veo 3.1 Image-to-Video API: Request Shape and Workflow
- Veo 3.1 Cost Control: Drafts, Caching and Tier Gating
VideoRouter puts it next to dozens of other video and image models behind one API key, so you can compare providers, prices and fail over automatically. Compare providers on VideoRouter →