Home › Guides › Which workloads suit Lite

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.

CriterionPoints toward LitePoints away from Lite
VolumeHundreds of clips, most of which get discardedA handful of hero shots
Review stageInternal triage, storyboards, prompt tuningClient-facing or published output
Delivery sizeSmall embeds, previews, social thumbnailsLarge-screen or high-resolution delivery
Cost of a bad takeLow: regenerate and move onHigh: a deadline or an approval depends on it
Prompt stabilityTemplate-driven prompts you have already validatedNovel, 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

Workloads where it is a poor first choice

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:

ModelCheapest hostPriciest hostCheapest isHosts
google/veo-3.1 (2160p)Pika
$0.2 / second
MachGen
$0.6 / second
67% lower7
google/veo-3.1-fast (2160p)Replicate
$0.1 / second
MachGen
$0.3 / second
67% lower7
google/veo-3.1-lite (1080p)SandBase
$0.03 / second
WaveSpeedAI
$0.08 / second
62% lower3

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

Using Veo is one part of the job.

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 →