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
- 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.
- A Go client for Sume from OpenAPI, with Retry-After
The docs list only a TypeScript SDK. Generate a Go client from the live OpenAPI schema, send x-api-key, and back off on 429 with retry-after.
- Google's June 15 deprecation notice gave 15 and 63 days: run a drill
Google announced Veo and Imagen 4 deprecations on Jun 15, 2026 with shutdowns Jun 30 and Aug 17. Here is a five-step drill that fits inside the shorter window.
- GPT Image 2.5 returns base64; Sume returns a URL: port the code
OpenAI's image API returns base64 data for GPT Image models, and Sume's returns hosted URLs. The three lines that change when you move a decoder over.
Written by Sume