One continuous 8-second cinematic shot. Slow push-in down a wet-asphalt night avenue lined with neon storefronts; rain beads on the pavement and a metal awning. No people in close-up, no shops selling products, no readable signs. Lighting: high-contrast neon magenta and teal bouncing off black puddles. Camera: locked-axis slow dolly-in at chest height, no cuts. Native audio: rain on metal, distant traffic hiss, and a low analog music pulse. No logos, no readable text, no products, no packaging, no prices, no CTA, no advertising, no watermark, no brand marks.
Gemini Omni 1.1 Flash Text-to-Video API
google/gemini-omni-1.1-flash/text-to-videoGemini Omni 1.1 Flash (Text-to-Video) turns text prompts into short videos with native audio, camera and lighting control, and output from 360p to 4K. Direct scenes, action, and sound in one creative brief to produce 4–10 second clips for product concepts, storyboards, and social content.
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 inputs and instructions, 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 inputs and settings for this endpoint using the request example, then save the returned task_id to query generation progress and results.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "google/gemini-omni-1.1-flash/text-to-video",
"input": {
"prompt": "One continuous 8-second cinematic shot. Slow push-in down a wet-asphalt night avenue lined with neon storefronts; rain beads on the pavement and a metal awning. No people in close-up, no shops selling products, no readable signs. Lighting: high-contrast neon magenta and teal bouncing off black puddles. Camera: locked-axis slow dolly-in at chest height, no cuts. Native audio: rain on metal, distant traffic hiss, and a low analog music pulse. No logos, no readable text, no products, no packaging, no prices, no CTA, no advertising, 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-1.1-flash/text-to-video",
"input": {
"prompt": "One continuous 8-second cinematic shot. Slow push-in down a wet-asphalt night avenue lined with neon storefronts; rain beads on the pavement and a metal awning. No people in close-up, no shops selling products, no readable signs. Lighting: high-contrast neon magenta and teal bouncing off black puddles. Camera: locked-axis slow dolly-in at chest height, no cuts. Native audio: rain on metal, distant traffic hiss, and a low analog music pulse. No logos, no readable text, no products, no packaging, no prices, no CTA, no advertising, 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. Prepare the inputs for this task and configure the output.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| prompt | string | Yes | — | 1–20,000 characters after trimming. |
| duration | integer | No | 8 | 4, 6, 8, or 10, in seconds. |
| resolution | string | No | 720p | 360p, 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 inputs, parameter values, and available credits, then make the indicated adjustments before submitting again.
- 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 the scene, camera, lighting, mood, and sound. |
| Output | Video with native audio | The endpoint returns an asynchronous task ID; finished tasks include a video file. |
| Resolution | 360p / 720p / 1080p / 4k | Default is 720p. |
| Duration | 4 / 6 / 8 / 10 seconds | Default is 8 seconds. |
| Aspect ratio | 16:9 / 9:16 | Default is 16:9. |
| Billing basis | Per generation | 360p–1080p: 4s=45, 6s=60, 8s=75, 10s=90 credits. 4k: 4s=105, 6s=120, 8s=135, 10s=150 credits. |
Gemini Omni 1.1 Flash Text-to-Video
Gemini Omni 1.1 Flash Text-to-Video turns text prompts into short videos with speech, music, and ambient sound. Describe subject action, camera movement, lighting, and audio to bring product ideas, story scenes, and brand atmospheres into moving footage.
Why Choose This?
Text-driven scene creationBuild a scene through descriptions of subjects, surroundings, and action, turning a product idea or story moment into a watchable clip.
Camera movement controlDescribe push-ins, tracking shots, orbits, and shot sizes to direct attention toward product details or key story moments.
Lighting and atmosphereSpecify light sources, color, and mood to explore morning light, neon streets, or soft interiors around the same creative idea.
Native speech and soundCreate dialogue, music, and ambient sound alongside the video, planning visual content and its soundtrack in one prompt.
Multiple output resolutionsChoose 360p, 720p, 1080p, or 4K to match the output specifications for previews, editing, and content delivery.
Landscape and portrait clipsCombine 16:9 or 9:16 framing with a 4, 6, 8, or 10 second duration to plan composition and pacing for landscape stories or portrait social content.
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| prompt | Required | String. Defines the scene, action, camera, lighting, mood, and sound; 1–20,000 characters after trimming. |
| duration | Optional | Integer. Sets output length; the Playground preselects 8 seconds. Default 84610 |
| resolution | Optional | String. Sets output resolution; the Playground preselects 720p. Default 720p360p1080p4k |
| aspect_ratio | Optional | String. Controls output framing; the Playground preselects 16:9. Default 16:99:16 |
How to Use
Describe the scene and actionEnter a subject, setting, and main action, such as a glass marble rolling along a metal track beside a warm desk lamp.
Add camera and sound directionDescribe camera movement, lighting, and speech, music, or ambient sound, such as a low tracking shot accompanied by crisp rolling sounds.
Choose a resolutionChoose 360p, 720p, 1080p, or 4K, with 720p selected by default, to match the output specifications for editing or presentation.
Choose a durationChoose 4, 6, 8, or 10 seconds, with 8 seconds selected by default, to plan the clip around its main action and pacing.
Choose an aspect ratioChoose 16:9 landscape or 9:16 portrait, with 16:9 selected by default, and frame the subject for the intended layout.
Review the cost and runReview the cost shown on the Run button, complete the required uploads and prompt, then click Run.
Preview and download the videoWhen the task finishes, preview the video and sound in the output panel, then select Download video to save the result.
Pricing
Billed per generation based on video duration and resolution tier, with native audio included in the result. 1 credit = $0.005.
| Usage | Rate | Details |
|---|---|---|
| 360p / 720p / 1080p | 4s=45, 6s=60, 8s=75, 10s=90 credits | Default 720p / 8s costs 75 credits ($0.375). |
| 4k | 4s=105, 6s=120, 8s=135, 10s=150 credits | 4k / 8s costs 135 credits ($0.675). |
Best Use Cases
Product concept filmsDescribe a product scene, key action, and musical direction to create concept footage for creative pitches and brand presentations.
Storyboard previewsTurn one action beat from a script into a clip with sound to communicate shot size, camera movement, and staging.
Portrait brand contentBuild a scene around one brand theme and choose 9:16 framing to create portrait footage for social channels.
Atmospheric footageCombine rain, streets, or interior lighting with ambient sound to create clips for an opening sequence or story transition.
Pro Tips
- Organize the prompt around subject and setting, action, camera, lighting, and audio so each part has a clear creative role.
- Describe subject action and camera movement separately, such as “The person walks toward the door. The camera tracks slowly from the side,” to define how they relate.
- For a continuous shot, specify the starting camera position, direction of travel, and final composition.
- Introduce speech, music, and effects with “Audio:” and connect sounds to actions, such as a hinge creaking as a door opens.
- Build each 4–10 second clip around one main action, describing its opening state, progression, and closing image.
Usage notes
- Gemini Omni 1.1 Flash Text-to-Video generates video from a required text prompt (prompt), with duration, resolution, and aspect ratio settings to configure the output.
- Describe speech, music, or ambient sound in the prompt; native audio is included in the result.
- Provide a prompt of 1–20,000 characters after trimming, describing the scene, action, camera, and sound.
- Save the task_id returned by an API submission to query progress and retrieve the result.
Related Models
Gemini Omni 1.1 Flash Text-to-Video API frequently asked questions
What is the Gemini Omni 1.1 Flash Text-to-Video API?
Gemini Omni 1.1 Flash Text-to-Video is a Google model for generating video from text. It creates short videos up to 4K resolution with native dialogue, music, and ambient sound effects from text prompts, supporting precise camera movement, lighting, and atmospheric scene control. Built on Gemini's multimodal intelligence architecture, it strictly follows prompt physics and visual continuity while delivering cinematic narrative pacing. You can call it programmatically or try it from the playground above.
Can Gemini Omni 1.1 Flash Text-to-Video generate speech and music?
Yes. The model features native audio-visual synchronization without requiring post-production audio synthesis. By describing dialogue lines, musical moods, or ambient sound effects (such as footsteps or raindrops) in your prompt, the model embeds synchronized audio tracks directly into the output MP4 video.
What is the maximum duration for a single Gemini Omni 1.1 Flash Text-to-Video generation?
A single call supports generating clips up to 10 seconds, with choices of 4, 6, 8, or 10 seconds (the playground defaults to 8 seconds). For narratives requiring broader story arcs, you can structure sequential story beats cleanly within the prompt or extend shots progressively using continuation workflows.
Does Gemini Omni 1.1 Flash Text-to-Video support 4K resolution?
Yes. The model provides output resolution tiers from 360p, 720p, and 1080p up to 4K. 4K mode is ideal for high-end commercial showcases and final delivery by preserving fine lighting reflections and surface textures, whereas 720p offers a balanced preview experience for daily iteration.
Can I use 360p to rapidly prototype Gemini Omni 1.1 Flash Text-to-Video concepts?
Yes. The 360p resolution is designed specifically for low-latency drafting, significantly accelerating generation speed and reducing credit consumption. You can validate staging, subject movement, and camera timing in 360p drafts before switching to 1080p or 4K for production rendering.
How do I direct camera movement in Gemini Omni 1.1 Flash Text-to-Video?
We recommend separating subject choreography and camera directions into distinct sentences within your prompt. Using explicit cinematographic terms such as slow dolly forward, 360-degree orbit, or low-angle tracking shot, combined with specific lighting cues (like warm side lighting or neon reflections), produces controlled and coherent motion.
Is Gemini Omni 1.1 Flash Text-to-Video suitable for 9:16 vertical videos?
Yes. The model supports standard 16:9 landscape and 9:16 portrait aspect ratios. When selecting 9:16, focus prompt descriptions on vertical composition and subject positioning, allowing the model to naturally optimize focal balance and background framing for mobile feeds.
