Gemini Omni edit input is capped at 10 seconds: trim first on Sume
Google says Omni edit inputs must be 10 seconds or less. Cut the clip with Sume's video-trim at $0.02 a job, then send the short clip to the edit request.

Google's Gemini Omni docs say input videos for editing and extension must be 10 seconds or less, so a 40-second take has to be cut before you ask for an edit. On Sume the cut is POST /v1/video-trim, a fixed-price media tool that costs $0.02 per job and returns a new MP4 without touching the source.
The limits on both sides
Google's guide also says video references support a maximum of three clips of up to three seconds each. Sume's Video Router row for gemini-omni-flash-1.1 repeats the reference shape: up to 10 images and up to 3 clips of 3 seconds each, addressed as <IMAGE_REF_0> and <VIDEO_REF_0>. Edit mode takes video_url and lets the source clip set the output length.
| Limit | Value | Where it comes from |
|---|---|---|
| Edit and extension input | 10 seconds or less | Google Omni API guide |
| Video references | 3 clips, 3 seconds each | Google Omni API guide |
| Output length on edit | Set by the source clip | Sume Video Router docs |
| Trim duration field | 0.2 to 900 seconds | Sume video-trim docs |
Cut with video-trim
Video trim takes one media.sume.com clip from your workspace, a start in seconds, and exactly one of end or duration. It does not fetch from the open internet, so import the clip first with POST /v1/media-imports. Every write needs an Idempotency-Key. The default precision is exact, a frame-accurate re-encode, which is what you want before an edit.
import os, time, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
B = "https://api.sume.com"
r = requests.post(f"{B}/v1/video-trim", timeout=60,
headers={**H, "Idempotency-Key": "trim-first-001"},
json={"video_url": os.environ["CLIP_URL"], "start": 12, "duration": 9})
r.raise_for_status()
job = r.json().get("data", r.json())
job_id = job["request_id"]
while True:
s = requests.get(f"{B}/v1/jobs/{job_id}/status", headers=H, timeout=30).json()
s = s.get("data", s)
if s.get("result_ready") or s.get("status") in ("completed", "failed", "canceled"):
break
time.sleep(3)
res = requests.get(f"{B}/v1/jobs/{job_id}/result", headers=H, timeout=30)
print(res.status_code, res.text[:400])
Then edit
The trim result contains a video_url that points to a new artifact, never the source. Put that URL in the video_url field of the Omni edit request shown in the edit walkthrough, with a short instruction and Google's own advice to say "Keep everything else the same". The docs do not show a trim-to-edit example end to end, so test one clip before you batch.
Choosing the cut points
Keeping the source untouched is the quiet benefit here. The trim writes a new artifact, so the original take stays available for a second cut if the first edit does not land.
- Cut on a motion boundary, such as the end of a gesture, so the edit has a clean start.
- Use
precision: exactwhen the edit must start on a specific frame, andkeyframeonly when speed matters more than accuracy. - If the trim clamps to the source end, the result carries the
trim_clamped_to_sourcewarning, so read the warnings before you edit. - Edit the best 9 seconds first, then stitch the edited piece back into the long take on a timeline.
Budget the two steps
A 9-second 720p edit costs about $0.90 at the $0.10 list rate, or $1.13 billed after the 1.25 multiplier and rounding up to cents (9 x 0.10 = 0.90, x 1.25 = 1.125). Add $0.02 for the trim. Edit jobs reserve against an estimate of the clip length, which defaults to 8 seconds when you send no duration, so a failed reserve shows up as 402 insufficient_credits before any provider work starts.
Sources
Related posts
More in Developers
- Gemini Omni audio is always on: generate_audio false returns 400
Sume's Omni row rejects generate_audio false with a 400 because audio is native and always on. To ship a silent clip, drop the track with video-trim after.
- Omni edit: one change per turn or one combined prompt, and the cost
Three single-change Omni edits on a 10 s clip are $3.75 at 720p; one combined prompt is $1.25. Per-turn is 3x the price, so pick by how a failed edit costs you.
- Gemini Omni 40-second extension: chain 10-second clips on Sume
Google extends Omni scenes in 10-second steps up to 40 seconds. Sume's catalog shows no extend field, so chain clips with a last-frame image instead.
- Omni Flash 3-second video reference: trim a clip's last 3 s first
Gemini Omni Flash 1.1 on Sume takes up to 3 video references, each at most 3 s. Trim the tail of a finished clip for $0.02, then cite it as VIDEO_REF_0.
Written by Sume