Extend a video Veo didn't make: which API takes an uploaded clip
Veo 3.1 extension only accepts Veo-made videos. Here is what Gemini Omni and Sume accept instead when you need to continue a clip you uploaded.

You cannot extend an arbitrary MP4 with Veo 3.1. Google's Veo page says extension works on Veo-generated videos only (read 2026-10-03). For a clip you shot or exported from another tool, Gemini Omni Flash is the Google route: its page says extension makes a 3 to 10 second continuation and that input videos for editing or extension must be 10 seconds or shorter (read 2026-10-03).
What each side accepts
Google also says editing or extending uploaded videos with Omni is not available in the EEA, Switzerland or the UK (read 2026-10-03).
| Route | Source clip | Output |
|---|---|---|
| Veo 3.1 extend | Veo-generated only, up to 141 s input, 720p, 9:16 or 16:9 | 7 s per extension, up to 20 extensions, up to 148 s total |
| Gemini Omni Flash extend | Uploaded or generated, 10 s or shorter | 3 to 10 s continuation |
On Sume
Sume has no extend endpoint. Its edit mode on gemini-omni-flash-1.1 takes a video_url through the Video Router and applies a prompt to it; that rewrites a clip, it does not append seconds. To lengthen a clip you can generate a longer clip directly (seedance-2.5 accepts 4 to 30 seconds) or chain clips by feeding the last frame of one into the first frame of the next.
The chaining pattern and its drift trade-offs are covered in the existing posts below.
Sources
Related posts
More in Developers
- Extend an AI clip by hand: last frame to the next clip, in Python
No extend endpoint? Pull a clip's last frame with Sume's video-frames API and feed it as the first frame of the next job. Python code under 30 lines.
- Fabric audio under 10 MB: how many seconds of wav and mp3 fit
Fabric lip-sync takes Sume-hosted audio under 10 MB, 300 s max. Stereo wav hits the size cap near 56 s; 128 kbps mp3 would reach 625 s, so length binds first.
- Fan out four Omni Flash clips in parallel and poll the jobs
Submit four Gemini Omni Flash requests at once on Sume, store each job id, poll status with backoff, then join the clips with Timeline.
- Where to find a voice ID for Sume text to speech: voices_list and voi_
Sume TTS wants a voice UUID or a voi_ library id, never a voice name like alloy. Where to copy it from, and the error you get for a name.
Written by Sume