Omni video_url or reference_video_urls: edit a clip or borrow from it?
On Sume, video_url edits your clip and keeps its framing. reference_video_urls only conditions a new clip. How the two differ in limits, fields and billing.

Use video_url when you want the clip you have, changed; use reference_video_urls when you want a new clip that borrows from it. On Sume's Gemini Omni Flash 1.1 row, video_url is the edit source: the prompt describes the change and the output follows the source clip. reference_video_urls takes up to three clips of three seconds or less each and conditions a fresh generation. Sume's Video Router doc says the two cannot be combined.
The fields look alike but do different jobs, so pick the one that matches the result you want before you pay for a render.
What is the difference field by field?
The table lists what Sume's docs say about each field, with Google's own limits for uploaded media from the Omni guide.
| video_url (edit) | reference_video_urls | |
|---|---|---|
| Purpose | Change an existing clip | Condition a new generation |
| Count | One clip | Up to 3 clips |
| Length limit | Google: uploads of 10 seconds or less | Each clip 3 seconds or less |
aspect_ratio | Not accepted; framing is kept | 16:9 or 9:16 |
duration | Only a reserve hint (default 8 s) | 3 to 10 s |
resolution | Optional, default 720p | 360p to 4K |
| Combine with images | No (image_url, end_image_url, reference_*_urls) | Yes, with up to 10 reference images |
| Addressing in the prompt | Describe the edit | <VIDEO_REF_0>, 0-based |
What does an edit request look like?
Send video_url and a prompt that says what to change and what to keep. Sume's example swaps a bottle for an apple and tells the model to keep everything else the same. The output follows the source clip, so do not send aspect_ratio; Sume returns a 400 if you do, and its code message says the output keeps the source framing.
curl -X POST https://api.sume.com/v1/video-router/generate \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: omni-edit-001" \
-d '{
"model": "gemini-omni-flash-1.1",
"prompt": "Replace the bottle with an apple. Keep everything else the same.",
"video_url": "https://example.com/clip.mp4",
"resolution": "720p",
"mode": "async"
}'When is a reference clip the right choice?
Choose references when the new clip has a different scene, camera or length and you only want a person's likeness or a movement style carried over. Google's guide says video references work best with likenesses, that any audio in a reference video is ignored, and that each reference clip can be three seconds at most. Reference the clip in the prompt with <VIDEO_REF_0>, counting from zero in list order.
Do not stack many video references. The guide warns that referencing or reasoning across multiple videos is not supported and may degrade results, even though Sume's row accepts up to three clips.
How do I prepare a long clip for an edit?
Google's limits for uploaded video apply: inputs for editing must be 10 seconds or less, and editing uploaded videos is not available to users in the EEA, Switzerland and the United Kingdom. Cut your source down first with Sume's video trim, which returns a new MP4 for $0.02 per job and leaves the original alone.
Because the output length follows the source, Sume's doc says a duration sent alongside video_url is only a hint for the reserve estimate, and that fal does not return an output duration, so the reserve is not a probe. Plan for the cost of a clip as long as the source, and check the finished result's length before you use it in a timeline.
Sources
Related posts
More in Developers
- Genkit createMcpHost: connect the hosted Sume MCP server
Genkit's createMcpHost takes a url and requestInit headers for remote servers. Wire https://mcp.sume.com/mcp into ai.generate and close the host after.
- Get one Sume video model by id: GET /v1/video-router/models/{id}
Look up a single Sume video model's limits and price with GET /v1/video-router/models/{id}. Response fields, the 404 for unknown ids, and a short script.
- GitHub App ghs_ tokens are now ~520 characters: check Sume calls
GitHub's new installation tokens are about 520 characters, not 40. What breaks in a workflow that also calls Sume, and why Sume takes one credential header.
- Go 1.27 drains response bodies: a Sume job poll loop
Go 1.27 drains unread HTTP/1 body bytes on Close. A stdlib loop that polls GET /v1/jobs/:id/status and honors next_poll_after_seconds.
Written by Sume