Veo 3.1 Lite, Fast or Standard: matching Sume models by job

Google lists Veo 3.1 at $0.05, $0.10 and $0.40 a second at 720p, and Sume does not list it. Match each tier to a listed model: Wan, Omni, Kling by job.

5 min readSume
All posts

Sume does not list Veo 3.1, so the tiers map to listed models by job: a cheap draft maps to Wan 3.0 at 480p or Omni at 360p, a Fast-tier hook maps to Omni at 720p, and a Standard-tier hero shot at 1080p maps to Omni at 1080p or Kling 3. On Google's list, Veo 3.1 Lite is $0.05 a second at 720p, Fast $0.10 and Standard $0.40; all include audio. See Google's Gemini API pricing, read 2026-10-05.

Google's figures are its list prices. The Sume figures below are list times 1.25, as in the Video Router guide, so the two columns are not like for like.

Veo tier against closest listed model

Google prices Veo 3.1 Lite at $0.08 a second at 1080p, Fast at $0.12, Standard at $0.40; at 4K, Fast is $0.30 and Standard $0.60, with no 4K on Lite.

Veo 3.1 tiers (Google list) and a listed Sume model for the same job (read 2026-10-05)
JobVeo 3.1 tier and Google list rateListed Sume modelSume rate per second
Cheap draft, 720pLite, $0.05wan-3.0 at 480p$0.0625
Hook test with sound, 720pFast, $0.10gemini-omni-flash-1.1 at 720p$0.125
Hero shot, 1080pStandard, $0.40gemini-omni-flash-1.1 at 1080p$0.1875
Silent hero shot, 1080pStandard, $0.40kling-3 at 1080p$0.14
4KFast, $0.30gemini-omni-flash-1.1 at 4K$0.375

What does not transfer

Matching is by job, not by look. The listed models do not reproduce Veo's output, and a prompt tuned for Veo will need re-tuning. Run the same prompt on two candidates at the cheapest resolution first.

Omni accepts 3 to 10 seconds, 16:9 and 9:16 only. If a Veo workflow needs another ratio or a longer clip, move to Wan 3.0 (2 to 30 seconds) or Seedance 2.5 (4 to 30 seconds).

  • Use GET /v1/videos/models to confirm the limits before you port a workflow.
  • Leave model as sume/auto if you do not want to pin a row.

Request

The Fast-tier hook job on Omni.

import os, time, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
payload = {
    "model": "gemini-omni-flash-1.1",
    "prompt": "A sneaker lands on a wet street, slow motion, street sounds",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "9:16",
}
job = requests.post("https://api.sume.com/v1/videos", headers=H, json=payload).json()
while True:
    time.sleep(30)
    s = requests.get(job["polling_url"], headers=H).json()
    if s["status"] in ("completed", "failed", "cancelled"):
        break
print(s["status"], s.get("unsigned_urls"), s.get("usage"))

Sources

Related posts

More in Comparisons

All Comparisons posts

Written by Sume