Veo 3.1 request on Sume: 720p, 4, 6 or 8 seconds, in Python

A working POST /v1/videos call for veo-3.1-lite with 6 seconds, 9:16 and no audio, the rates for the three Veo rows, and what Sume rejects.

5 min readSume
All posts

To call Veo 3.1 on Sume, POST to https://api.sume.com/v1/videos with model set to veo-3.1, veo-3.1-fast or veo-3.1-lite, a prompt, a duration of 4, 6 or 8, a 720p resolution and a 16:9 or 9:16 ratio. Sume's Veo rows are text-to-video only, at 720p, with audio on by default and a lower rate when generate_audio is false.

Google describes Veo 3.1 as a model for generating video with native audio, with extension, frame-specific generation and image direction (Gemini API video docs, read 2026-10-10). Sume's rows expose only the text-to-video mode that was proven end to end, so the extra modes are not available here.

The request

The script below submits a 6-second vertical clip without audio on the Lite row, polls the job and prints the download URL. It reads the key from SUME_API_KEY and uses the documented poll fields status and unsigned_urls.

import os, time, requests

H = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
body = {
    "model": "veo-3.1-lite",
    "prompt": "A paper boat drifting down a rainy street gutter, shallow focus",
    "duration": 6,
    "resolution": "720p",
    "aspect_ratio": "9:16",
    "generate_audio": False,
}
job = requests.post("https://api.sume.com/v1/videos", headers={**H, "Idempotency-Key": "veo-demo-001"}, json=body).json()
print(job.get("id"), job.get("status"))
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("error"))

Rates and a 6-second example

Sume's catalog stores Veo list rates per output second at 720p, taken from the Vertex list on 2026-10-08, and bills them times 1.25. A 6-second clip reserves the figures in the last column.

Veo 3.1 rows on Sume, list rates from the repo catalog dated 2026-10-08, billed at list x 1.25
RowList with audioList without audio6 s billed with audio6 s billed without audio
veo-3.1$0.40$0.20$3.00$1.50
veo-3.1-fast$0.10$0.08$0.75$0.60
veo-3.1-lite$0.05$0.03$0.375$0.225

What Sume refuses

The schema rejects these before any reserve:

  • Any duration other than 4, 6 or 8 (default 8).
  • Any resolution other than 720p.
  • Any ratio other than 16:9 (default) or 9:16.
  • Image, first or last frame, reference or video_url inputs, and bitrate_mode.
  • provider.options (every v1 row reports an empty allowed_passthrough_parameters).

Check the row exists first

A Veo row appears in GET /v1/videos/models only where the Google Cloud route is configured, so read that list before you hard-code an id. If you need 10 seconds, 1080p or 4K, Gemini Omni Flash 1.1 is the Sume row for that (3 to 10 seconds, up to 4K); the Gemini API pricing page (read 2026-10-10) lists Veo 3.1 4K and 1080p tiers that Sume does not offer.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume