Introduction
Image-to-video for Veo 3.1 Lite: send a first frame, and a last frame if you want one, and get a 4 to 8 second 720p clip with sound.
| Field | Value |
|---|---|
| Input | Image |
| Output | Video |
| Publisher | |
| Status at Google | Preview model (listed on Google Cloud since April 2, 2026) |
| Clip length | 4, 6 or 8 seconds (reference mode: 8 seconds) |
| Resolution | 720p here: 1280x720 (16:9) or 720x1280 (9:16); Google lists 1080p as the ceiling for Lite |
| Frame rate | 24 fps |
| Sound | Generated in every clip; no silent option here |
| Inputs | Text; first frame with optional last frame; up to 3 reference images (a SpicyAPI mode) |
Key features & highlights
A whole beat from one photo
One reference photo of a man with a road map beside a pale blue convertible. The prompt asked him to fold the map, look up at the sky and grin. In 8 seconds he read the map, folded it, tucked it away, then tipped his head back and grinned, with the car, the jacket and the gas station kept from the photo.
First and last frame at draft prices
The same first and last frames we sent to Veo 3.1 and Gemini Omni 1.1 Flash, at 6 seconds for $0.27. She turned from the telescope, crossed her arms and ended leaning on the railing, matching the closing frame.
A quick read on a prompt
Our observatory prompt at 4 seconds: the dome's shutter opened wider on a desert ridge with saguaro cacti, the camera pushed forward along the railing, and a brass telescope came into view. Enough to judge framing, light and motion before spending more on a higher tier.
Portrait photo in, vertical clip out
With a portrait photo as the first frame and the aspect ratio left on auto, the clip came back 720x1280. She looked up, smiled and looked back to the camera within 4 seconds.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Required. Say how things move, where the camera goes and what is heard between the first frame and the end of the clip. at least 1 characters · at most 4000 characters |
image_url | Yes | Required. The opening frame (JPEG, PNG or WebP). at least 1 characters |
last_image_url | No | Optional. The picture the clip should finish on; the motion runs from the first frame to this one. at least 1 characters |
aspect_ratio | No | auto (default) follows the first frame's shape; choosing 16:9 or 9:16 crops it to that ratio. The price is the same either way. |
duration_seconds | No | 4, 6 or 8 seconds, default 8. The price rises with length: $0.18, $0.27, $0.36. |
Pricing
Billed per clip by length: $0.18 for 4 seconds, $0.27 for 6 and $0.36 for 8. Aspect ratio and sound do not change the price. If a request fails or is declined, you pay nothing.
| Specification | Price |
|---|---|
| $0.18 / request |
| $0.27 / request |
| $0.36 / request |
Use cases
Checking a prompt before a bigger render
A prompt you settle on Lite at $0.18 can go to Veo 3.1 Fast or Veo 3.1 with only the model name changed. Text-to-video and image-to-video take the same fields on all three tiers.
Many variations of one idea
Try other camera moves, lighting or wording at 4 seconds each. Ten 4-second drafts cost $1.80, less than one 6-second clip on Veo 3.1 ($2.16), and a hundred cost $18.
Animating photos in bulk
With the aspect ratio on auto, image to video follows the shape of each picture: portrait photos come back vertical, landscape photos wide.
Trying a reference-led shot
SpicyAPI also offers reference to video on Lite: 1 to 3 images in, an 8-second clip out, $0.36. Google's documentation does not list reference images for Lite, so compare the result with your pictures before building a workflow on it.
Prompt guide & pro tips
Write the whole beat
In an 8-second reference clip Lite followed a three-part action: fold the map, look up, grin. List the steps in order and allow roughly 2 to 3 seconds for each.
Leave aspect ratio on auto for photos
On image to video, auto keeps the shape of your first frame, while 16:9 or 9:16 crops to that shape.
Add a sound line
Finish the prompt with "Sound:" and the ambience you want, and put spoken words in quotes. Every clip has sound at no extra cost.
Move up only when a draft earns it
Once a draft works, send the same request to Veo 3.1 Fast ($0.36 for 4 seconds) for standard production work, or to Veo 3.1 ($1.44) when fidelity matters most. Only the model name changes.
Introduction
Veo 3.1 Lite Image to video begins a 720p clip on your own picture and animates it for 4, 6 or 8 seconds, with sound. Supply a last frame too and the clip moves from the first picture to that one. It is an inexpensive way to test whether a photo moves the way you imagine before paying for Fast or Veo 3.1. Google screens prompts and images first; a declined request fails and is not charged.
Other ways to start a Veo 3.1 Lite clip
- A written scene: Veo 3.1 Lite Text to video
- Your own first frame, with an optional last frame: Veo 3.1 Lite Image to video (you are here)
- Photos to keep (a SpicyAPI mode on top of Lite): Veo 3.1 Lite Reference to video
- A clip to continue (a SpicyAPI mode that chains segments): Veo 3.1 Lite Video extend
Prompt tips
- Describe the motion and the camera; the picture already shows what is there.
- With a last frame, explain how the scene gets from the first picture to the second.
- Keep the aspect ratio on auto and the clip keeps the shape of 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/veo-3.1-lite/image-to-video",
"input": {
"aspect_ratio": "auto",
"duration_seconds": 8,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise"
}
}'
# 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.