AI video editing API: edit a video with a prompt (video-to-video)
Edit an existing clip with a prompt: send video_url to POST /v1/video-router/generate with gemini-omni-flash-1.1. What edit mode takes, rejects, and costs.

To edit an existing video with a prompt through the Sume API, send POST /v1/video-router/generate with model: "gemini-omni-flash-1.1", the clip's public HTTPS URL in video_url, and a prompt that describes the change. Sending video_url selects the model's video_to_video (edit) mode: Sume routes this model by the shape of the request, so you never pick an endpoint.
Fields and rules below come from the Video Router docs and the model's catalog entry, read on 2026-09-26.
Which model can edit a video?
Gemini Omni Flash 1.1 (gemini-omni-flash-1.1). Of the models the catalog lists, it is the one whose Video Router capabilities include video_to_video, and its GET /v1/videos/models description reads “text/image/reference-to-video and video edit with native synced audio.” Its other modes are covered in Gemini Omni Flash 1.1 video API.
The docs point new integrations to the OpenRouter-compatible POST /v1/videos in general (how that route works), but they expose this model's edit mode through the Video Router's video_url field, and POST /v1/videos refuses video_url with 400 invalid_request when model is a catalog id. So edits go to the Video Router, which stays available and unchanged.
How do I send an edit request?
Put the source clip in video_url and describe the edit in prompt. This is the docs' example on the production host:
video_urlmust be a fetchable public HTTPS URL. Localhost, private-network, non-HTTPS, and signed or private URLs are rejected before submission.resolutionis optional and defaults to 720p.- The docs example also sends an
Idempotency-Keyheader andmode: "async".
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: video-router-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"
}'What does edit mode accept and reject?
An edit takes a prompt, a source clip, and optionally a resolution. The rest of the model's generation fields do not apply:
| Field | In edit mode |
|---|---|
prompt | Describes the edit. |
video_url | The source clip to edit, not a reference. |
resolution | Optional. Defaults to 720p. |
aspect_ratio | Rejected. |
duration | Not sent to the model. If given, it is only the hint for the reserve estimate. |
image_url, end_image_url, reference_*_urls | Cannot be combined with video_url. |
generate_audio | No toggle: native synced audio is always produced. Omit the field. |
bitrate_mode | Not available on this model. |
What is the difference between an edit and a reference video?
The edit source is the clip you change. A reference video guides a new clip: Gemini Omni Flash 1.1 takes up to three reference_video_urls of at most 3 seconds each for reference-to-video, and those cannot ride along with video_url. If you want a fresh generation that borrows from existing footage, see Reference-to-video API.
How do I get the edited clip?
The Video Router returns Sume's { "data": ... } job envelope. Store the job id, poll GET /v1/jobs/{id}/status (or wait with mode: "sync" or "subscribe" for up to 30 seconds), and fetch GET /v1/jobs/{id}/result once result_ready is true. The result carries Sume-hosted artifacts.
How is a video edit billed?
Gemini Omni Flash 1.1 is billed at the provider's list price × 1.25 per output second by resolution, plus a 5.5% agent fee by default. The amount is reserved from the workspace USD balance when you submit. Edit mode takes no duration, so a duration you send serves only as the length hint for that reserve estimate.
The per-resolution rates are the pricing_skus entries on GET /v1/videos/models; see also API pricing.
Sources
Related posts
Written by Sume