Introduction
Video-extend for Veo 3.1: send a clip, and its last frame becomes the first frame of a new 4-8 second image-to-video segment, returned joined to your original.
| Field | Value |
|---|---|
| Input | Video |
| Output | Video |
| Publisher | |
| Clip length | 4, 6 or 8 seconds |
| Resolution | 720p: 1280x720 (16:9) or 720x1280 (9:16) |
| Aspect ratios | 16:9, 9:16 |
| Frame rate | 24 fps |
| Sound | Generated with every clip |
| Inputs | Text; first frame with optional last frame |
Key features & highlights
A shot built in the order you wrote it
The prompt asked for the dome to open, the telescope to appear and the camera to drift along the railing. In 4 seconds at 9:16 the shutter slid from closed to fully open, the inside lit amber around a brass telescope, and the camera moved forward along the curved rail, in that order.
Land exactly on the last frame
A first frame of a woman at the telescope with her back to us, and a last frame of her leaning on the railing with her arms crossed. In 4 seconds she turned, stepped to the rail and settled into the closing pose, while more stars came out above the dome.
Four seconds fits one action
From a single first frame, the prompt was "He folds the map and looks up." In 4 seconds he folded the map with both hands, but he was still looking down on the last frame. Ask for one beat per 4 seconds, or choose 8 seconds for two.
Continue a clip from any model
We sent a 5-second clip made with another model and asked for 4 more seconds: "The road continues along the sea." The new part picked up the aerial over the coast road and followed the car through the bends. We got back one 9-second file at the source clip's size, and only the 4 new seconds were billed.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Required. Describe the next beat: what happens, how the camera moves, what we hear. at least 1 characters · at most 4000 characters |
video_url | Yes | Your source footage, 60 seconds at most. Its final frame seeds the new segment, so cut it on a crisp frame. at least 1 characters |
last_image_url | No | Optional closing frame for the new segment. at least 1 characters |
duration_seconds | No | Seconds to add: 4, 6 or 8 (default 8). A longer new segment costs more. |
Pricing
Billed per new segment at the image-to-video price for its 4, 6 or 8 seconds; your source clip is free. A request that fails or is refused is free.
| Specification | Price |
|---|---|
| $1.44 / request |
| $2.16 / request |
| $2.88 / request |
Use cases
The final render after a cheaper draft
Work out the prompt, framing and timing on Veo 3.1 Fast at $0.36 or Lite at $0.18 per 4-second clip, then send the same request to Veo 3.1 for the version you keep. All three take the same fields.
A product or place shot that must start and end on set pictures
Give the opening still and the closing still and describe the move between them. In our test the clip landed on the last frame in 4 seconds.
Scenes longer than 8 seconds
Generate the first 8 seconds, then continue with video extend: the last frame of your clip opens a new 4 to 8 second segment and you get one joined file back. The source clip, up to 60 seconds, is not billed.
Vertical clips with sound for social posts
Pick 9:16 for a 720x1280 clip. Sound is generated with the picture, so a short is ready without a separate audio pass.
Prompt guide & pro tips
Write it in the order it happens
Place and light, subject, action, camera move, then sound. Our observatory prompt followed that order and the clip played the beats in the same order.
Direct the sound like a shot
Say what should be heard: "Sound: wind over sand, the dome's motor". Spoken words go in quotes. Google notes that very short lines of speech are still the hardest part, so leave a speaking shot a few seconds to play out.
Match the action to the length
Plan one clear action per 4 seconds. In our 4-second test, "folds the map and looks up" only got as far as the fold.
Keep Veo 3.1 for the take you keep
Veo 3.1 costs four times Fast and eight times Lite at the same length. Settle wording and framing on a cheaper tier, then run the final render here once.
Introduction
Veo 3.1 Video extend is SpicyAPI's own way to carry your footage on with Veo 3.1: the last frame of your clip (up to 60 seconds) becomes the opening frame of a new 4, 6 or 8 second Veo 3.1 image-to-video segment, and you get one MP4 back with both joined. It is not Google's built-in scene extension. Google reviews prompts and images; refused requests fail and cost nothing.
Choose a Veo 3.1 mode
| If you have | Use |
|---|---|
| only a written scene | Veo 3.1 Text to video |
| a still to open on, or one to end on | Veo 3.1 Image to video |
| footage you want to carry on | Veo 3.1 Video extend (you are here) |
Prompt tips
- Prompt the next beat only; the frame already fixes who and where.
- Finish your source on a sharp frame, since a soft last frame carries into the new segment.
- Add a closing frame when the new part must end on a planned picture.
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/video-extend",
"input": {
"duration_seconds": 8,
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"video_url": "https://example.com/reference.mp4"
}
}'
# 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.