Gemini Omni Flash resolution: "4K" or "4k" on Sume
Sume accepts 4k as an alias of 4K for Gemini Omni Flash 1.1 and translates it to the lowercase token fal expects. Billed rate and Google's 4K caveat.

Either spelling works. For Gemini Omni Flash 1.1 on Sume, the catalog token is 4K, and the request validator also accepts 4k as an alias. Before the job reaches the provider, the payload builder translates the catalog token to the lowercase 4k value the upstream expects, so the casing you type is never the casing that travels.
The practical advice is to send exactly what GET /v1/videos/models lists and treat the alias as a convenience.
What Google says 4K means
Google's Omni API page lists resolutions of 360p, 720p (the default), 1080p and 4K, and marks 1080p and 4K as upscaled (read 2026-10-04). Its launch post says the same about 1080p and 4K being upscaled, and says 360p drafts are faster and cheaper than 720p (read 2026-10-04).
So 4K on Omni is an output size, not a native render size. If you need native detail, 720p is the base.
The Sume catalog row
Sume lists four resolutions for the model: 360p, 720p, 1080p and 4K, with 720p as the default. Durations run 3-10 s, aspect ratios are 16:9 and 9:16 only, and audio is always on.
| Resolution | List per second | Billed per second | Billed for 8 s |
|---|---|---|---|
| 360p | $0.03 | $0.0375 | $0.30 |
| 720p (default) | $0.10 | $0.125 | $1.00 |
| 1080p | $0.15 | $0.1875 | $1.50 |
| 4K | $0.30 | $0.375 | $3.00 |
Cost of choosing 4K
Because 4K is an upscale, it is the most expensive way to get the same underlying render. At 8 s it bills $3.00, three times the 720p price of $1.00. The amount is reserved on submit and refunded if the job fails.
Use the 360p tier to check the shot first; the stored note on Omni 360p draft cost has the numbers.
List the resolutions from the API
This script prints the resolutions the live catalog reports for any Omni row.
import os
import requests
resp = requests.get(
"https://api.sume.com/v1/videos/models",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
timeout=30,
)
resp.raise_for_status()
for m in resp.json()["data"]:
if "omni" in m["id"]:
print(m["id"], m["supported_resolutions"])
print(m["pricing_skus"])Sources
Related posts
More in Developers
- Moving Veo scripts to Gemini Omni: an Interactions API checklist
Veo 3.1 previews shut down Oct 22. Omni uses the Interactions API, task values, base64 or uri delivery and different limits. A checklist for rewriting scripts.
- Generate a Python client from the Sume OpenAPI JSON
Point openapi-python-client at the live Sume OpenAPI document, regenerate on each release, and keep a thin wrapper for polling, retries and the data envelope.
- List Sume Formats with GET /v1/formats: limit, next_cursor, has_more
GET /v1/formats pages with a keyset cursor and a default limit of 50. Loop on has_more and pass next_cursor back as cursor to read the whole catalog.
- GitHub Actions and Sume: secret setup and a smoke test
Store SUME_API_KEY as a GitHub Actions secret, never echo it, and run sume account get --json as a read-only smoke test in a manually triggered workflow.
Written by Sume