Underwater documentary tracking shot: a green sea turtle glides through a towering kelp forest, volumetric sunbeams piercing deep blue water, a school of small silver fish scattering, fine particles drifting in the light. Camera smoothly follows the turtle at a steady distance, no cuts. Natural lighting, photorealistic. Audio: soft muffled ocean ambience and a distant whale call. No logos, no readable text, no products, no watermark, no brand marks.
Gemini Omni Flash Text to Video API
google/gemini-omni-flash/text-to-videoGemini Omni Flash Text to Video turns text prompts into 4–10 second clips with native lip-synced audio, cinematic camera and lighting control, and resolution from 720p to 4K. It follows prompt narrative and pacing while keeping subject motion, scene continuity, and audiovisual alignment coherent across the shot.
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 prompt and settings, then retrieve the video 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/text-to-video",
"input": {
"prompt": "Underwater documentary tracking shot: a green sea turtle glides through a towering kelp forest, volumetric sunbeams piercing deep blue water, a school of small silver fish scattering, fine particles drifting in the light. Camera smoothly follows the turtle at a steady distance, no cuts. Natural lighting, photorealistic. Audio: soft muffled ocean ambience and a distant whale call. No logos, no readable text, no products, no watermark, no brand marks.",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}
}
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/text-to-video",
"input": {
"prompt": "Underwater documentary tracking shot: a green sea turtle glides through a towering kelp forest, volumetric sunbeams piercing deep blue water, a school of small silver fish scattering, fine particles drifting in the light. Camera smoothly follows the turtle at a steady distance, no cuts. Natural lighting, photorealistic. Audio: soft muffled ocean ambience and a distant whale call. No logos, no readable text, no products, no watermark, no brand marks.",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}
}
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. |
| duration | integer | No | 6 | 4, 6, 8, or 10 seconds. |
| 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 | Text only | A prompt defines scene, camera, lighting, mood, and sound. |
| Output | Video | Returns an asynchronous task ID; finished tasks include a video file with native audio. |
| Resolution | 720p / 1080p / 4k | Default is 720p. |
| Duration | 4 / 6 / 8 / 10 seconds | Default is 6 seconds. |
| Aspect ratio | 16:9 / 9:16 | Default is 16:9. |
| Billing basis | Per generation | 720p/1080p: 4s=120, 6s=150, 8s=200, 10s=220 credits. 4k: 4s=250, 6s=300, 8s=350, 10s=450 credits. |
Gemini Omni Flash Text to Video
Gemini Omni Flash Text to Video is Google DeepMind’s multimodal model for fast text-driven video creation. From a natural-language prompt alone, it outputs 4–10 second clips with synchronized speech, music, and ambient sound, plus director-style camera and lighting cues. Choose 720p, 1080p, or 4K with 16:9 or 9:16 framing—ideal for social short-form batches, ad concept drafts, brand storyboards, and creative prototyping.
Why Choose This?
Text-only omni video in one passDescribe subject, scene, mood, and action in natural language to generate a finished short clip with picture and sound together—no separate audio pipeline.
Native audio with lip syncEmbeds dialogue, music, and ambience in the MP4, aligning mouth motion and timing with spoken lines and on-screen action.
Cinematic camera and lighting languageResponds to push-in, dolly, tracking, orbit, and lighting cues so you can stage product reveals and story beats with clear visual direction.
720p to 4K delivery tiersIterate at 720p or 1080p, then step up to 4K when you need sharper texture and lighting detail for final delivery.
Flexible 4–10 second pacingPick 4, 6, 8, or 10 seconds (default 6) to match hooks, mid-length demos, and fuller short narratives.
Landscape and portrait framingUse 16:9 for horizontal storytelling or 9:16 for Reels, Shorts, and TikTok-ready vertical layouts.
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| prompt | Required | String. Scene, action, camera, lighting, mood, and audio cues; 1–20,000 characters after trimming. |
| duration | Optional | Integer. Output length in seconds; the Playground preselects 6. Default 64810 |
| 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
Write the scene promptDescribe subject, setting, and main action in prompt—for example a product hero shot under golden-hour light with a confident walk-through.
Add camera and audio directionSpecify push-in, dolly, or tracking moves, lighting mood, and dialogue or ambience cues so picture and sound stay aligned.
Set output durationChoose 4, 6, 8, or 10 seconds (default 6) to match the pacing of the beat you want to generate.
Select resolutionPick 720p for fast iteration, 1080p for clearer delivery, or 4K for high-detail finals.
Choose aspect ratioSelect 16:9 landscape or 9:16 portrait to match the distribution layout.
Review the cost and runCheck the cost shown on the Run button, finish the prompt and settings, then click Run.
Preview and download the videoWhen the task finishes, preview picture and synced audio in the output panel, then select Download video to save the result.
Pricing
Billed per generation by duration and resolution tier, with native audio included. 1 credit = $0.005.
| Usage | Rate | Details |
|---|---|---|
| 720p / 1080p | 4s=120, 6s=150, 8s=200, 10s=220 credits | Default 720p / 6s costs 150 credits ($0.75). |
| 4k | 4s=250, 6s=300, 8s=350, 10s=450 credits | 4k / 6s costs 300 credits ($1.50). |
Best Use Cases
Social short-form productionBatch 9:16 hooks and talking scenes with lip-synced audio for TikTok, Reels, and Shorts.
E-commerce product motionDescribe product reveals, texture close-ups, and ambient sound for shoppable demos and landing-page heroes.
Brand concept storyboardsTurn campaign briefs into 4–10 second cinematic beats to align creative direction before full production.
Dialogue and virtual-host clipsDirect speaking performances with language and tone cues so mouth motion tracks the scripted delivery.
Pro Tips
- Structure the prompt as subject and setting, action, camera, lighting, then audio so each layer has a clear job.
- Name camera moves explicitly—slow push-in, side tracking, or dolly—then separate subject motion into its own sentence.
- End with an Audio line for dialogue language, music mood, and ambience tied to on-screen events.
- State light quality and color—golden hour side light, soft window fill, neon reflections—to lock atmosphere.
- Keep one primary action per clip and describe opening state, progression, and closing frame to reduce visual drift.
Usage notes
- Gemini Omni Flash Text to Video is driven by a required prompt, with optional duration, resolution, and aspect_ratio.
- Describe speech, music, or ambience in the prompt; native audio with lip sync is included in the result.
- Prompt length is 1–20,000 characters after trimming; keep instructions concrete and cinematic.
- After an API submission, save the returned task_id to query progress and retrieve the final media URL.
Related Models
Gemini Omni Flash Text to Video API frequently asked questions
What is the Gemini Omni Flash Text to Video API?
Gemini Omni Flash Text to Video is a Google DeepMind multimodal model for generating video from text prompts. It creates 4–10 second clips with native lip-synced audio, cinematic camera and lighting control, and resolution options from 720p to 4K. Built on Gemini’s unified multimodal architecture, it follows prompt physics and narrative pacing while keeping subject motion, scene continuity, and audiovisual alignment coherent. You can call it programmatically or try it from the playground above.
How long can Gemini Omni Flash Text to Video generate?
Each run supports 4, 6, 8, or 10 seconds, with the Playground preselecting 6 seconds. Choose shorter lengths for hooks and longer ones for fuller beats; exact credit cost scales with duration and resolution in the Pricing section.
Does Gemini Omni Flash Text to Video include native lip sync?
Yes. Dialogue, music, and ambience are generated with the picture and embedded in the MP4. Add language, tone, and environmental sound cues in the prompt so mouth motion and timing track the spoken delivery.
When should Gemini Omni Flash Text to Video use 4K?
Use 4K when finals need sharper texture, lighting reflections, and delivery clarity. For daily iteration, start at 720p or 1080p—same duration options, lower credit cost—then promote selected takes to 4K.
How does Gemini Omni Flash Text to Video follow camera prompts?
Write explicit moves such as slow push-in, dolly, or side tracking in their own sentences, separate from subject action. Pair them with lighting cues so framing and atmosphere stay intentional across the clip.
Is Gemini Omni Flash Text to Video suitable for 9:16 shorts?
Yes. Select 9:16 and describe vertical composition and subject placement for mobile feeds. Use 16:9 when you need landscape storytelling or horizontal ad placements.
How are Gemini Omni Flash Text to Video credits calculated?
Credits are charged per generation by duration and resolution. At 720p/1080p, 6 seconds costs 150 credits ($0.75); at 4K the same length costs 300 credits ($1.50). Full rate tables are in the Pricing section on this page.















