Remove the jogger from the video completely. Keep the fountain, path, trees, benches, sunlight, and the original locked camera unchanged. Seamless background inpainting, no new people or objects. No logos, no readable text, no watermark.
Gemini Omni Flash Video Edit API
google/gemini-omni-flash/video-editGemini Omni Flash Video Edit revises one source video through natural-language instructions, with conversational targeting of what to change, native audio updates, and resolution from 720p to 4K. It applies the requested edits while preserving the retained subjects, camera continuity, and temporal flow you specify.
Required. Upload exactly one MP4, MOV, or WebM clip, up to 100 MiB.
Your generated video will appear here
Add your prompt and required media, review the settings, then click Run.
Examples
REST API
Quick Start
Authenticate with the API, submit the source video and edit prompt, then retrieve the revised clip using the task ID.
Connect to the Vidgo API
Create an API key, keep it only on your server, and send Authorization: Bearer VIDGO_API_KEY.
- Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Authentication
- Authorization: Bearer VIDGO_API_KEY
Submit one generation task
Fill in the parameters for this endpoint using the request example, then save the returned task_id to query progress and results.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "google/gemini-omni-flash/video-edit",
"input": {
"prompt": "Remove the jogger from the video completely. Keep the fountain, path, trees, benches, sunlight, and the original locked camera unchanged. Seamless background inpainting, no new people or objects. No logos, no readable text, no watermark.",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_urls": [
"https://cdn.vidgo.ai/apis/models/google/gemini-omni-flash/video-edit/v1/01/input-source.mp4"
]
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"Wait for the result
Query with task_id, continue for not_started/running, and stop for finished/failed. On success, read data.files[].file_url.
Track status
GET https://api.vidgo.ai/api/generate/status/{task_id}Poll status with a 2-second base interval, and increase the interval for longer tasks. Continue only while status is not_started or running, and stop once finished or failed. You can also specify callback_url in the request payload to receive webhook notifications.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "running",
"created_time": "2026-09-15T10:00:00Z"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}Complete runnable example
Expand for a complete script with HTTP and business-code checks, task_id validation, polling, terminal-state handling, and a timeout boundary.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "google/gemini-omni-flash/video-edit",
"input": {
"prompt": "Remove the jogger from the video completely. Keep the fountain, path, trees, benches, sunlight, and the original locked camera unchanged. Seamless background inpainting, no new people or objects. No logos, no readable text, no watermark.",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_urls": [
"https://cdn.vidgo.ai/apis/models/google/gemini-omni-flash/video-edit/v1/01/input-source.mp4"
]
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneInput parameters
The table lists available input parameters, types, and defaults. Request examples also include the required top-level model field.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| prompt | string | Yes | — | 1–20,000 characters after trimming. |
| video_urls | string[] | Yes | — | Exactly one publicly accessible HTTP(S) video URL is required; missing, empty, or multiple entries are rejected. duration is not accepted; this endpoint imposes no source-video duration limit. |
| resolution | string | No | 720p | 720p, 1080p, or 4k. |
| aspect_ratio | string | No | 16:9 | 16:9 or 9:16. |
Response Fields
A successful submission returns a task ID. Status queries provide progress, output files, and error details when a task fails.
| Field | Type | Description |
|---|---|---|
| code | integer | Application result code; successful responses use 0 or 200. |
| message | string | Human-readable message or error detail when present. |
| data.task_id | string | Task ID used in the status endpoint path. |
| data.status | string | not_started, running, finished, or failed. |
| data.created_time | string | Task creation time in date-time format. |
| data.progress | integer | Task progress from 0 to 100, when included in the response. |
| data.files[] | array | All output files from a successful task, in response order. |
| data.files[].file_url | string | Public URL for a generated video. |
| data.files[].file_type | string | File type, such as video. |
| data.error_message | string | null | Failure detail when status is failed. |
Task Lifecycle
Continue querying while the status is not_started or running. End polling at finished or failed, then process the output files or error details respectively.
not_startedThe task was accepted and is waiting to begin.
runningGeneration is in progress. Continue polling the same task_id.
finishedGeneration succeeded. Read every video URL from data.files[].file_url.
failedGeneration stopped with an error. Read data.error_message and stop polling.
Polling and Errors
- AuthenticationFor a 401 response, check the Bearer API key in Authorization, update the credentials, and retry.
- ValidationFor a 400 response, use the response details to check required fields, parameter ranges, and available credits, then adjust and resubmit.
- Network and timeoutIf a status query encounters a network error or timeout, retain the original task_id and retry the query, then handle the result according to the returned task status.
- Polling intervalPoll status with a 2-second base interval, and gradually increase the interval for longer tasks.
- Terminal statesContinue only for not_started or running. Stop immediately on finished or failed.
- Callback optionProvide callback_url at the request top level to receive the final flat task object; polling remains available if delivery fails.
Endpoint limits
| Specification | Value | Details |
|---|---|---|
| Input mode | Prompt + 1 source video | One public source clip plus a natural-language edit instruction. |
| Source video | MP4 / MOV / WebM | Exactly one public HTTP(S) video URL in video_urls. |
| Output | Video | Returns an asynchronous task ID; finished tasks include a revised video file with native audio. |
| Resolution | 720p / 1080p / 4k | Default is 720p. |
| Aspect ratio | 16:9 / 9:16 | Default is 16:9. |
| Billing basis | Per generation | 720p/1080p: 300 credits. 4k: 400 credits. |
Gemini Omni Flash Video Edit
Gemini Omni Flash Video Edit is Google DeepMind’s multimodal model for conversational video revision. Upload one public source video URL, describe what to change and what to keep, then generate an updated clip with synchronized audio. Choose 720p, 1080p, or 4K with 16:9 or 9:16 framing—ideal for ad varianting, dialogue retakes, wardrobe or object swaps, and soundtrack refreshes without rebuilding the shot from scratch.
Why Choose This?
Conversational edit instructionsDescribe changes in natural language—swap an object, adjust wardrobe, or refresh music—without timeline-based manual cuts.
Explicit retain-and-change controlState what must stay and what must update so revisions stay localized to the intended region or element.
Temporal continuity preservedKeeps camera motion and scene flow coherent while applying the requested creative changes.
Native audio revisionsUpdate dialogue, music, or ambience with the picture so soundtrack changes land in the same MP4.
720p to 4K delivery tiersIterate edits at 720p or 1080p, then deliver 4K when the revised master needs higher clarity.
Landscape and portrait outputsChoose 16:9 or 9:16 so edited variants match the original distribution layout.
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| prompt | Required | String. Natural-language edit instruction covering changes and retained content; 1–20,000 characters after trimming. |
| video_urls | Required | Exactly one publicly accessible HTTP(S) video URL is required; missing, empty, or multiple entries are rejected. duration is not accepted; this endpoint imposes no source-video duration limit. |
| resolution | Optional | String. Output clarity tier; the Playground preselects 720p. Default 720p1080p4k |
| aspect_ratio | Optional | String. Output framing; the Playground preselects 16:9. Default 16:99:16 |
How to Use
Upload the source videoProvide one public MP4, MOV, or WebM URL as the footage you want to revise.
Describe changes and retained contentIdentify the edit target and desired change, then clearly list people, setting, or camera work to keep.
Add audio revision cues if neededSpecify dialogue, music mood, or ambience updates so soundtrack changes align with the picture.
Select resolutionPick 720p for iteration, 1080p for clearer delivery, or 4K for high-detail masters.
Choose aspect ratioSelect 16:9 or 9:16 to match the intended distribution layout.
Review the cost and runCheck the cost shown on the Run button, finish the source video and prompt, then click Run.
Preview and download the videoWhen the task finishes, preview the revised picture and audio, then select Download video to save the result.
Pricing
Billed per generation by output resolution, with native audio included. 1 credit = $0.005. Configure the source clip, edit prompt, resolution, and aspect ratio.
| Usage | Rate | Details |
|---|---|---|
| 720p / 1080p | 300 credits | Default 720p costs 300 credits ($1.50). |
| 4k | 400 credits | 4k costs 400 credits ($2.00). |
Best Use Cases
Ad creative variantingSwap product colors, props, or on-screen talent details while keeping the approved camera path.
Dialogue and host retakesRefresh spoken lines or tone on an existing talking clip without reshooting the whole scene.
Soundtrack and ambience refreshReplace or swell music and effects to match a new brand mood on the same visual bed.
Localized scene adaptationsAdjust wardrobe, signage, or objects for regional versions while retaining core action.
Pro Tips
- Identify the edit target by position, color, or clothing—for example the person in the blue jacket on the left.
- Separate change and retain lines: Make the coat red. Keep the street setting and original camera movement.
- Keep one primary edit goal per submission, then refine audio or appearance in a follow-up pass.
- Describe music mood, entry point, and intensity so soundtrack revisions land on the intended beat.
- Match aspect_ratio to the source layout when you need framing continuity across variants.
Usage notes
- Gemini Omni Flash Video Edit requires prompt plus video_urls with exactly one public source video URL.
- Configure resolution and aspect_ratio for delivery; credits follow the selected resolution tier.
- Describe speech, music, or ambience changes in the prompt; native audio is included in the result.
- After an API submission, save the returned task_id to query progress and retrieve the final media URL.
Related Models
Gemini Omni Flash Video Edit API frequently asked questions
What is the Gemini Omni Flash Video Edit API?
Gemini Omni Flash Video Edit is a Google DeepMind multimodal model for conversational video revision. It edits one source clip through natural-language instructions, updating selected elements with native audio while preserving the footage and camera continuity you ask to keep, with output from 720p to 4K. Built on Gemini’s unified multimodal architecture, it localizes changes to the stated targets without rebuilding the entire shot from scratch. You can call it programmatically or try it from the playground above.
How do I specify retain regions in Gemini Omni Flash Video Edit?
Write separate retain instructions after the change request—for example Keep the street background and original camera move. Point to subjects by position, color, or clothing so the model knows what stays untouched.
How does Gemini Omni Flash Video Edit set clip length?
Output length follows the source video you submit. Provide video_urls and the edit prompt, then choose resolution and aspect ratio; credits follow the resolution tier in the Pricing section.
Can Gemini Omni Flash Video Edit refresh dialogue and music?
Yes. Describe new spoken lines, music mood, or ambience in the prompt so soundtrack revisions generate with the picture in the output MP4.
What source formats does Gemini Omni Flash Video Edit accept?
Submit exactly one public HTTP(S) video URL in video_urls using MP4, MOV, or WebM. The clip is the footage to revise; full field details are in the Parameters section.
When should Gemini Omni Flash Video Edit use 4K?
Choose 4K when the revised master needs sharper texture and lighting for final delivery. Iterate edits at 720p or 1080p first—same conversational workflow, lower credit cost.
How are Gemini Omni Flash Video Edit credits calculated?
Credits are charged per generation by resolution: 720p and 1080p cost 300 credits ($1.50), and 4K costs 400 credits ($2.00). See the Pricing section on this page.















