Gemini Omni Flash on /v1/videos: input_references and 9:16 in one call
Call gemini-omni-flash-1.1 through Sume's /v1/videos wire: input_references, 9:16, 720p, poll polling_url, download unsigned_urls. Fields and traps.

Sume serves Gemini Omni Flash 1.1 on its OpenRouter-compatible POST /v1/videos route as model: "gemini-omni-flash-1.1". Send a prompt, input_references for style or content images, aspect_ratio: "9:16" and resolution: "720p", then poll the returned polling_url until completed and download unsigned_urls[0].
What does the request look like?
The Video generation page says this route follows the OpenRouter Video Generation API field for field, with a short list of Sume differences. Model ids are bare catalog ids, with no provider prefix. The catalog entry for Omni lists 3 to 10 second durations, 360p, 720p, 1080p and 4K, 16:9 and 9:16, and image and video input_references with no audio.
input_references give the model visual guidance rather than exact frames. Send images as image_url objects. If you also send frame_images, the docs say frame_images takes precedence and the request becomes image-to-video, so send one or the other.
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: omni-videos-001" \
-d '{
"model": "gemini-omni-flash-1.1",
"prompt": "A vertical product clip: the bottle turns slowly on a marble counter, soft window light",
"duration": 6,
"resolution": "720p",
"aspect_ratio": "9:16",
"input_references": [
{ "type": "image_url", "image_url": { "url": "https://example.com/bottle.png" } }
]
}'How do I poll and download?
The submit response is a 202 with id, polling_url, status and model. Statuses are pending, in_progress, completed, failed and cancelled. When it is completed, unsigned_urls holds the content URLs, and GET /v1/videos/{jobId}/content?index=0 with your key downloads the file.
The docs suggest polling every 30 seconds. The same job also shows at GET /v1/jobs/{id}/status and GET /v1/jobs/{id}/result, as described in Jobs and results.
curl -s "https://api.sume.com/v1/videos/$JOB_ID" \
-H "Authorization: Bearer $SUME_API_KEY"
curl "https://api.sume.com/v1/videos/$JOB_ID/content?index=0" \
-H "Authorization: Bearer $SUME_API_KEY" \
--output omni.mp4Which fields return a 400?
The Sume differences table lists three. size returns 400 unsupported_parameter because every v1 model reports supported_sizes: null; use resolution plus aspect_ratio. A non-empty provider.options returns 400 unsupported_parameter, since no model allows passthrough in v1. And seed is rejected because no v1 model accepts it.
Omni itself adds more rules in the Video Router doc: generate_audio: false is rejected because native audio is always on, and there is no bitrate_mode and no audio reference. Google's Omni page also lists temperature, top_p, stop sequences and negative prompts as unsupported, so none of them are worth sending.
Where does editing live?
This route sends text, image and video references. The docs say Omni's video edit mode is exposed through the Video Router video_url field, so a source-clip edit goes to POST /v1/video-router/generate, covered in the Video Router page. Both routes create the same jobs and share model ids, and billing is provider list times 1.25 per output second by resolution on either.
Sources
Related posts
More in Developers
- GPT Image 2.5 curl command: generate and download in a shell
A copy-paste curl call to Sume's POST /v1/images for GPT Image 2.5, with jq to pull the URL, download the file, and a check for the 202 job response.
- Use a local photo as a GPT Image 2.5 reference: it needs a URL
Sume's input_references take public HTTPS image URLs only; localhost and private URLs are rejected. Three ways to turn a file on disk into a usable reference.
- GPT Image 2.5 negative prompt: no field, so write exclusions
Sume's /v1/images has no negative_prompt for GPT Image 2.5. Put exclusions in the prompt as positive rules and a preserve list; examples and a curl call.
- Batch GPT Image 2.5 from a CSV in Python: async jobs, safe retries
Render one GPT Image 2.5 packshot per CSV row on Sume: mode async, an Idempotency-Key per SKU, a small worker pool, and the 429 queue_full rule.
Written by Sume