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.

Google's Gemini Omni can continue an existing clip in 10-second steps up to 40 seconds, but Sume's gemini-omni-flash-1.1 row does not expose that extend call. To get a longer scene through Sume you chain separate 10-second jobs, using the final frame of each clip as the first frame of the next.
What Google offers and what Sume exposes
Google's prompt guide says scene extension takes an existing clip and continues generating from where it left off, across multiple 10-second intervals up to 40 seconds total. Sume's Video Router doc is explicit about the other side: the API does not expose previous_interaction_id or extend, because it is not in the published input schema of fal, the provider behind the row.
| Question | Google Gemini Omni | Sume gemini-omni-flash-1.1 |
|---|---|---|
| Continue an existing clip | Yes, scene extension | No extend field |
| Step length | 10 seconds | 3 to 10 seconds per job |
| Maximum total | 40 seconds | Chain jobs yourself |
| Start from an image | Yes, reference images | image_url with optional end_image_url |
The chain recipe
Generate clip one with duration: 10. Pull a frame near the end with video frames, host that frame at a public HTTPS URL, and send it as image_url on job two with a prompt that starts with the action that follows. Repeat up to four times for roughly 40 seconds. In the OpenRouter-shaped /v1/videos body the same idea is a frame_images entry with frame_type: first_frame.
- Keep style, lighting and location words identical in every prompt, so the model sees one scene.
- Say "keep everything else the same" only on edits, not on new chained shots.
- Expect small identity drift at each seam, and check frames at the cut before you stitch.
Sketch of the second job
This reuses the submit-and-poll helper from the earlier post. LAST_FRAME must be a public HTTPS image, because Sume's docs say image inputs must be reachable over public HTTPS.
import os, time, hashlib, json, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
def run(body):
key = "omni-" + hashlib.sha256(json.dumps(body, sort_keys=True).encode()).hexdigest()[:24]
r = requests.post("https://api.sume.com/v1/videos", json=body,
headers={**H, "Idempotency-Key": key}, timeout=60)
r.raise_for_status()
url = r.json()["polling_url"]
while True:
s = requests.get(url, headers=H, timeout=30).json()
if s["status"] in ("completed", "failed", "cancelled"):
return s
time.sleep(10)
s = run({"model": "gemini-omni-flash-1.1", "duration": 10, "resolution": "720p",
"aspect_ratio": "16:9",
"prompt": "The vendor turns and hands the fish to a child. In a single continuous shot.",
"frame_images": [{"type": "image_url", "frame_type": "first_frame",
"image_url": {"url": os.environ["LAST_FRAME"]}}]})
print(s["status"], s.get("usage"))
Cost of a 40-second scene
Omni at 720p lists at $0.10 per second on Sume's catalog, billed at list times 1.25. One 10-second job is $1.00 list and $1.25 billed, so four chained jobs are $5.00 billed for 40 seconds.
Seam checks that save a re-render
A chain is also easy to resume. Because each job has its own id and a stable key, a crash after step three only repeats step four, and you never pay twice for steps one to three.
- Compare the last frame of clip one with the first frame of clip two at full size, not as a thumbnail.
- Match the lighting words word for word across prompts.
- If a character changes, add a reference image of that character to the next job.
- Keep one
Idempotency-Keyper chained step so a retry reuses its job.
When to use another model
If continuity matters more than one model family, Sume's catalog also lists models with longer single-shot ranges, such as seedance-2.5 at 4 to 30 seconds. Read the Video Router capabilities before you choose.
Sources
Related posts
More in Developers
- 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.
- Two reference images, one Omni prompt: <IMAGE_REF_0> and <IMAGE_REF_1>
On Sume, Gemini Omni Flash 1.1 takes up to 10 reference images and names them <IMAGE_REF_0>, <IMAGE_REF_1> in list order. Here is a two-reference request.
- A one-file Python CLI that replaces a Sora script, on Sume
One argparse script, standard library only: prompt, model, seconds, resolution and aspect flags in, mp4 out, with an idempotency key derived from the arguments.
- One handler for both: Sume run webhook payload equals the GET receipt
A Sume run webhook's payload is byte-identical to GET /v1/format-runs/{run_id}. Write one function for polling and webhook, and branch on outcome.
Written by Sume