# Gemini Omni Flash Edit (video-edit) > Gemini Omni Flash Edit applies a requested visual change to an owned video. It accepts a prompt and one source clip; roasOS currently uses the provider's default 720p edit tier. Status: roasOS API v1.1. Catalog `model-catalog@2026-10-06.v5`, pricing `customer-pricing@2026-11-05.v15`. The endpoint `POST /v1/video-edit/gemini-omni-flash` is live. `POST /v1/generations` has no `video-edit` type, so this endpoint is the only path to this model. ## Endpoint POST https://api.roasos.com/v1/video-edit/gemini-omni-flash Auth: Authorization: Bearer roasos_sk_… (scope api:write). Idempotency-Key required. quote_only / quote_id / webhook_url as in https://docs.roasos.com/llms.txt. ## Good at Style, setting and other prompt-directed visual changes that do not require replacement identity images. Ask to preserve motion, cuts, framing and existing text, then review the result; matching frames or output length is not guaranteed. Use `/v1/video-edit/kling-4` when you need replacement identity references. Use `/v1/video/gemini-omni-flash` for new footage. ## Pricing Reservation unit: source_second. Pricing key: `gemini-omni-flash`. | request | reserved credits | |---|---| | `3s_source` | 3 | | `5s_source` | 5 | | `10s_source` | 10 | | `15s_source` | 15 | Reserved credits use measured source duration and the catalog rate. Completion refunds credits proportionally for shorter output and caps longer output at the approved quote. The source is not charged again as an input-video offset. Send `quote_only: true` for the exact reservation. ## Modes - `edit` Provider endpoints: `google/gemini-omni-flash/v1.2/edit`. ## Request fields | field | type | required | default | rule | |---|---|---|---|---| | `prompt` | string | yes | — | ≥ 1 character; ≤ 10,000 characters | | `quote_id` | string | no | — | UUID | | `quote_only` | boolean | no | `false` | — | | `video_url` | string | yes | — | https URL; ≤ 4,096 characters | | `wait_timeout_seconds` | integer | no | `0` | 0–60 | | `webhook_url` | string | no | — | https URL; ≤ 4,096 characters | The schema is strict: a field that is not in this table returns `400 unsupported_option`. Field names are the roasOS role names, one name per role across every family. ## Media - `video_url` — the source video | role | items | max size | content types | duration | |---|---|---|---|---| | `video_url` | ≤ 1 | 100 MB | `video/mp4` | 0–15 s | - Refused: `avatar_id`, `elements`, `product_id`, `product_images`, `references`, `reference_images`, `image_url`, `end_image_url`, `scene_id`, `scene_image`, `video_urls`, `audio_urls`, `audio_url`, `voice_id`. A refused role returns `400 unsupported_option`. - Every URL must be an immutable object on `https://cdn.roasos.com/…` that your workspace owns; any other URL is `400 reference_media_not_workspace_owned`. Upload with `POST /v1/uploads` (direct POST of the bytes to `put_url`, or a `source_url` import), then use the returned CDN URL. ## Prompt - Limit: 10,000 characters. - Name the requested change and state which details should remain. - Preserve existing captions and graphics unless their removal is requested. Do not append a new-generation no-text suffix. - Voice editing is unsupported, and there is no explicit keep-original-audio control. Do not promise original voice or soundtrack preservation. ## Not exposed - `aspect_ratio`: not accepted by this public endpoint. - `resolution`: pinned to `720p; the edit tier is left at its provider default`. - `duration_seconds`: not accepted by this public endpoint. - `generate_audio`: not accepted by this public endpoint. - `references`: not accepted by this public endpoint. - `image_url`: not accepted by this public endpoint. - `end_image_url`: not accepted by this public endpoint. - `voice_editing`: not accepted by this public endpoint. - `regional_availability`: pinned to `not available in the EEA, Switzerland or the UK`. ## Result Result kind `video`. Always present: `url`. ```json { "data": { "id": "gen_…", "kind": "video", "model": "gemini-omni-flash", "status": "completed", "result": {"url":"https://cdn.roasos.com/workspaces/ws_01/result"} } } ``` Files live on `https://cdn.roasos.com` and are immutable; a result URL can be a media input to the next call. Poll `GET /v1/jobs/{id}/status` → `{ id, status, updated_at }`, then `GET /v1/jobs/{id}/result` (`409 run_not_completed` until the job is `completed`, `failed` or `canceled`). Statuses: `queued → processing → completed | failed | canceled`. ## Example ```bash # 1. quote — nothing is spent curl -X POST https://api.roasos.com/v1/video-edit/gemini-omni-flash \ -H "Authorization: Bearer roasos_sk_live_…" \ -H "Idempotency-Key: 0f1c9e2a-gemini-omni-flash-0001" \ -H "Content-Type: application/json" \ -d '{"quote_only":true,"prompt":"A woman holds the bottle at eye level in a bright kitchen, morning light, static camera.","video_url":"https://cdn.roasos.com/workspaces/ws_01/uploads/video_url.mp4"}' # → 200 { "data": { "kind": "quote", "quote_id": "q_7Hk…", "credits": 3, "expires_at": "…", "confirmation": { "model": "gemini-omni-flash", "example": "3s_source" } } } # 2. run — the same body and the same Idempotency-Key, quote_id instead of quote_only curl -X POST https://api.roasos.com/v1/video-edit/gemini-omni-flash \ -H "Authorization: Bearer roasos_sk_live_…" \ -H "Idempotency-Key: 0f1c9e2a-gemini-omni-flash-0001" \ -H "Content-Type: application/json" \ -d '{"quote_id":"q_7Hk…","prompt":"A woman holds the bottle at eye level in a bright kitchen, morning light, static camera.","video_url":"https://cdn.roasos.com/workspaces/ws_01/uploads/video_url.mp4"}' # → 201 { "data": { "id": "gen_…", "kind": "video", "model": "gemini-omni-flash", "status": "queued", "credits_reserved": 3, "links": { "status": "/v1/jobs/gen_…/status", "result": "/v1/jobs/gen_…/result" } } } # 3. poll curl https://api.roasos.com/v1/jobs/gen_…/status -H "Authorization: Bearer roasos_sk_live_…" curl https://api.roasos.com/v1/jobs/gen_…/result -H "Authorization: Bearer roasos_sk_live_…" ``` ## Today Use `POST /v1/video-edit/gemini-omni-flash` with `prompt`, `video_url` and shared quote controls, or the corresponding MCP tool. Browser Edit and agent `generateVideo.sourceVideo` reach this operation through the same quoted public endpoint. Explicit Edit intent with replacement assets is refused; it cannot silently become reference generation. Legacy generic requests retain their existing source-shape routing. - One workspace-owned MP4 source, at most 15 seconds and at most 100 MiB. No first frame, last frame, replacement images, avatar/product assets or identity elements. - The public edit contract exposes no duration, aspect ratio or resolution control. Resolution is pinned to the provider-default 720p; additional provider tiers are not exposed. - fal does not serve uploaded-video editing to users in the European Economic Area, Switzerland or the United Kingdom. - The quote reserves credits from measured source duration at the 720p rate. Completion refunds credits proportionally for shorter output and caps longer output at the approved quote. The source is not charged again as an input-video offset. ## See also https://docs.roasos.com/models/video-edit/gemini-omni-flash · https://api.roasos.com/v1/catalog/video-edit/gemini-omni-flash · google/gemini-omni-flash/v1.2/edit