Google's cost-efficient Veo 3.1 variant for high-volume video generation โ text-to-video, image-to-video and first/last-frame interpolation at 720p or 1080p, 4/6/8 seconds, with natively synchronized audio on every clip.
Test this model instantly in the Console Playground โ no code required
Copy usage instructions for Claude, ChatGPT, or other AI
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "google/veo-3.1-lite",
"input": {
"prompt": "A close-up of two old friends reuniting at a train station. The woman gasps, 'I can't believe it's really you!' and they embrace tightly. The sound of a train whistle echoes in the background, ambient station noise, emotional orchestral music swells gently.",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}
}'| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
prompt | string | Yes | - | Text prompt for video generation. Put dialogue in quotes and describe sound effects and ambience for richer audio |
image | string | No | - | Input image to animate into a video. Ideal images are 16:9 or 9:16 and 1280x720 or 720x1280 |
last_frame | string | No | - | Ending image for interpolation. When provided with an input image, creates a smooth transition between the two images |
aspect_ratio | string | No | 16:9 | Video aspect ratio 16:99:16 |
duration | integer | No | 8 | Video duration in seconds. Must be 8 when using 1080p resolution 468 |
resolution | string | No | 720p | Resolution of the generated video. 4k is not supported for Veo 3.1 Lite 720p1080p |
seed | integer | No | - | Random seed. Doesn't guarantee determinism but slightly improves it |
There are 3 ways to provide files for the imagelast_frame parameters:
Pass a publicly accessible URL directly. With the Storage API (POST /v1/files/upload-url) the file uploads straight to S3 (50MB per file) and you pass the returned file_url.
{
"model": "google/veo-3.1-lite",
"input": {
"prompt": "your prompt here",
"image": "https://example.com/image.jpg"
}
}Attach files directly to POST /v1/predictions/upload. No separate upload step, but the bytes pass through the API server so the whole request is capped at 10MB.
curl -X POST "https://api.core.today/v1/predictions/upload" \
-H "X-API-Key: cdt_your_api_key" \
-F "model=google/veo-3.1-lite" \
-F 'input={"prompt":"your prompt here"}' \
-F "file:image=@your_file.png"Common parameters used when calling POST /v1/predictions.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
model | string | Yes | - | Model identifier |
input | object | Yes | - | Object containing the model-specific parameters from the table above |
output_folder | string | No | - | Folder path for output files (max 256 chars, '..' not allowed) |
webhook_url | string | No | - | Webhook URL to call on completion |
is_public | boolean | No | false | If true, output files are also available via permanent public URLs |
An 8-second 720p clip with spoken dialogue and ambient sound โ 930 credits
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "google/veo-3.1-lite",
"input": {
"prompt": "A close-up of two old friends reuniting at a train station. The woman gasps, 'I can't believe it's really you!' and they embrace tightly. The sound of a train whistle echoes in the background, ambient station noise, emotional orchestral music swells gently.",
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}
}'A 4-second 720p animation of a still image โ 4s at 116/s
curl -X POST "https://api.core.today/v1/predictions" \
-H "Content-Type: application/json" \
-H "X-API-Key: cdt_your_api_key" \
-d '{
"model": "google/veo-3.1-lite",
"input": {
"prompt": "Animate this scene with gentle camera movement and ambient sounds",
"image": "https://example.com/your-image.jpg",
"duration": 4,
"resolution": "720p"
}
}'POST /v1/predictions