Introduction
Gemini Omni 1.2 Flash image-to-video turns an opening still into movement. Supply image_url and a prompt explaining the action after that image. The pier example uses a nighttime boat still to begin a 5-second departure with engine and water sounds.
Add last_image_url when the scene needs a planned ending. With that closing image, the allowed length is 3–10 seconds; without it, choose 3–15 seconds. A closing-frame request above 10 seconds is refused before any charge. In our tests, two studio pictures guided a dancer between the opening and closing poses.
Key features & highlights
- Use your supplied still as the first frame of the animation.
- Guide the final composition with an optional second image.
- Generate sound during animation instead of uploading an audio track.
- Select landscape 16:9 or vertical 9:16 for the requested scene.
- Work at 360p or default 720p, with higher-rate 1080p and 4K upscaled by Google.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Required motion instructions. Explain the action after the opening image, camera behavior and desired sounds. at least 1 characters · at most 20000 characters |
image_url | Yes | Required URL of the still that opens the generated scene. at least 1 characters |
last_image_url | No | Optional URL of the closing still. Supplying it requires a duration of 3–10 seconds; longer requests are refused before charging. at least 1 characters |
aspect_ratio | No | Use 16:9 for landscape, the default, or 9:16 for vertical framing. No auto option is offered; this setting adds no charge. |
resolution | No | Available sizes are 360p, default 720p, 1080p and 4K. Both 1080p and 4K are upscaled by Google and cost more; Google lists 360p/720p as direct output. |
duration_seconds | No | Whole seconds from 3 to 15, default 8. When |
Pricing
Image animation is charged for the requested seconds at the chosen resolution rate. Opening and closing images and aspect ratio add no charge. Failed or refused submissions incur no charge, including closing-frame requests longer than 10 seconds.
| Specification | Price |
|---|---|
| $0.0276 / second |
| $0.084 / second |
| $0.126 / second |
| $0.252 / second |
Use cases
- Set a wooden boat departing from a hotel pier in motion from a nighttime still.
- Connect two studio poses over a 5-second sequence with soft piano.
- Turn a product still into a short motion study with a planned final composition.
Prompt guide & pro tips
- Describe what changes after the opening, such as “the boat eases away from the pier,” rather than repeating every visible detail.
- With two images, explain the transition, such as “move smoothly into the closing pose,” and select no more than 10 seconds.
- Specify a restrained camera plan, such as “a locked camera,” when movement within the scene should carry the shot.
- Name the desired ambience, such as “low engine hum and lapping water,” because the still does not supply sound.
- Ask for continuity with a short phrase such as “no scene cuts,” following Google’s advice for a single take.
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.2-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.










