Introduction
Image-to-video for Gemini Omni 1.1 Flash: a first frame, and optionally a last frame, in; a 4-10 second clip with sound out.
| Field | Value |
|---|---|
| Input | Image |
| Output | Video |
| Publisher | |
| Clip length | 4, 6, 8 or 10 seconds |
| Resolution | 720p native; 1080p and 4K upscaled by Google |
| Aspect ratios | 16:9, 9:16 |
| Frame rate | 24 fps |
| Sound | Generated with every clip |
| Inputs | Text; first frame with optional last frame; up to 7 reference images |
Key features & highlights
Seven reference slots, and they all count
Image 1 was a man in a denim jacket, Image 2 a photo of an observatory with a woman at the telescope. The prompt asked for the man to walk up to the observatory and wave; he did, with his face and jacket kept. The woman from Image 2 appeared too, at the telescope behind him. Crop each reference to what you want in the shot. Rendered at 4K (3840x2160), shown here at 1080p.
Longer clips, with cuts it chooses
An 8-second 9:16 clip from our observatory prompt: the dome's two halves slid apart to show a brass telescope and a lit control desk, then about 6 seconds in the model cut to an outside angle of the telescope against the stars. Write "one continuous shot" if you do not want cuts.
Hit the closing frame
The same first and last frames we sent to the Veo 3.1 tiers. In 4 seconds at 720p she turned from the telescope to face the camera, crossed her arms and ended leaning on the railing, as in the last frame.
A portrait becomes a scene
One studio portrait and the prompt "At dusk the woman from the reference walks toward the camera and smiles." Omni put her on a quiet street at dusk with her hair, corduroy jacket and turtleneck kept from the photo, walking toward us and smiling, in 4 seconds at 720p.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Required, up to 20,000 characters. Describe the motion, the camera and the sound from the first frame to the end of the clip. at least 1 characters · at most 20000 characters |
image_url | Yes | Required. The opening frame (JPEG, PNG or WebP, up to 20 MB). at least 1 characters |
last_image_url | No | Optional closing frame. The clip moves from the first frame to this one. at least 1 characters |
aspect_ratio | No | 16:9 (default) or 9:16. It does not change the price. |
resolution | No | 720p (default) is the model's native output; 1080p and 4K are upscaled by Google and cost more. |
duration_seconds | No | 4, 6, 8 or 10 seconds (default 8). Longer clips cost more. |
seed | No | For Omni shot comparisons, choose an integer from 0 to 2147483647 and change one scene control at a time; the seed does not promise identical frames. |
Pricing
Billed per clip by length (4, 6, 8 or 10 seconds) and resolution; 1080p and 4K cost more than 720p. Aspect ratio and seed do not change the price. Failed or declined requests are not charged.
| Resolution | Duration: 4 | Duration: 6 | Duration: 8 | Duration: 10 |
|---|---|---|---|---|
| $0.3648 / request | $0.5473 / request | $0.7297 / request | $0.9122 / request |
| $0.5473 / request | $0.821 / request | $1.0946 / request | $1.3683 / request |
| $1.0946 / request | $1.642 / request | $2.1893 / request | $2.7367 / request |
Use cases
New projects on Google's current video model
Google recommends Gemini Omni Flash for new work instead of Veo 3.1. Clips go to 10 seconds, so one request covers what takes an 8-second clip plus an extend on Veo.
Ads and product shots with several assets
Send the product, the person and the location as separate references, up to 7, and call them Image 1, Image 2 and so on in the prompt.
Delivering at 1080p or 4K
Draft at 720p, then render the version you keep at 1080p or 4K. Both are upscaled by Google from the 720p output, so judge the motion at 720p first.
Shots that must end on a set picture
Give a first frame and an optional last frame on image to video, up to 10 seconds per shot.
Prompt guide & pro tips
Name your references by number
Write "the man in Image 1" and "the observatory in Image 2", in upload order. Anything visible in a reference may show up, so crop out what you do not want.
Say whether you want cuts
On longer clips the model may cut to a new angle by itself. Add "one continuous shot" to keep a single take, or describe the shots you want.
Describe the sound
End the prompt with a line such as "Sound: footsteps on gravel" and put spoken words in quotes. Sound is included at every resolution.
Draft at 720p, deliver at 4K
A 4-second draft at 720p costs $0.3648; the same clip at 4K costs $1.0946. Fix the prompt first, then pay for resolution once.
Introduction
Gemini Omni 1.1 Flash Image to video starts a clip on your picture and animates it for 4, 6, 8 or 10 seconds, with sound. Add a last frame and the clip travels from one picture to the other. Google reviews prompts and images before generating; requests it declines fail and are not charged.
Choose a Gemini Omni 1.1 Flash mode
| What you start with | Mode |
|---|---|
| a written scene | Gemini Omni 1.1 Flash Text to video |
| a first frame, and optionally a last frame | Gemini Omni 1.1 Flash Image to video (you are here) |
| photos of people, products or places to keep | Gemini Omni 1.1 Flash Reference to video |
Prompt tips
- Describe the motion and the camera, not what the picture already shows.
- With a last frame, say how the scene gets from one picture to the other.
- Pick the aspect ratio that matches your first frame.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "google/gemini-omni-1.1-flash/image-to-video",
"input": {
"aspect_ratio": "16:9",
"duration_seconds": 8,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "720p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.








