Veo 3.1 Lite
Google Veo 3.1 Lite — cost-efficient video generation with always-on audio, per-second pricing, and image-to-video support.
POST /v2/videos/generate — model: "veo-3.1-lite"
Google Veo 3.1 Lite is the most cost-efficient model in the Veo 3.1 family, built for high-volume video generation. Every clip ships with natively synchronized audio, and it supports text-to-video, image-to-video, and first/last-frame interpolation. Reference images and 4K output are not supported — use Veo 3.1 for those.
See Video Generation overview for common request fields, response format, and error codes.
Model-specific parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
veoParams.duration | integer | 8 | Video duration in seconds: 4, 6, or 8 |
veoParams.resolution | string | "720p" | Output resolution: "720p" or "1080p". 1080p requires duration: 8 |
veoParams.aspect_ratio | string | — | Aspect ratio in "W:H" format — "16:9" or "9:16" |
veoParams.image | string | — | URL of an input image for image-to-video |
veoParams.last_frame | string | — | URL of an image to use as the last frame (frame interpolation) |
veoParams.negative_prompt | string | — | Things to avoid in the video (max 2,000 chars) |
veoParams.seed | integer | — | Random seed for reproducibility |
Audio is always generated and cannot be disabled.
Credit cost
Pricing is per second of generated video (credits = rate × duration), by resolution. Audio is included in the rate.
| Variant | Credits / second |
|---|---|
720p | 9 |
1080p | 14 |
An 8-second clip at 1080p therefore costs 14 × 8 = 112 credits.
Example result
Once the job is COMPLETED, the result object on GET /v2/jobs/:id looks like:
{
"videoUrl": "https://cdn2.apiframe.ai/videos/b2c3d4e5-f6a7-8901-bcde-f23456789012.mp4"
}See Result format for field details.
Code examples
curl -X POST https://api.apiframe.ai/v2/videos/generate \
-H "X-API-Key: afk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a cinematic drone shot of a lighthouse on a rocky cliff at sunset, waves crashing below",
"model": "veo-3.1-lite",
"veoParams": {
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9"
}
}'import requests
response = requests.post(
"https://api.apiframe.ai/v2/videos/generate",
headers={
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
json={
"prompt": "a cinematic drone shot of a lighthouse on a rocky cliff at sunset, waves crashing below",
"model": "veo-3.1-lite",
"veoParams": {
"duration": 8,
"resolution": "720p",
"aspect_ratio": "16:9",
},
},
)
print(response.json())const response = await fetch("https://api.apiframe.ai/v2/videos/generate", {
method: "POST",
headers: {
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt: "a cinematic drone shot of a lighthouse on a rocky cliff at sunset, waves crashing below",
model: "veo-3.1-lite",
veoParams: {
duration: 8,
resolution: "720p",
aspect_ratio: "16:9",
},
}),
});
console.log(await response.json());Image-to-video
Provide an image to animate a still. Add last_frame for smooth first-to-last-frame interpolation.
curl -X POST https://api.apiframe.ai/v2/videos/generate \
-H "X-API-Key: afk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "gentle camera push-in with ambient sound",
"model": "veo-3.1-lite",
"veoParams": {
"image": "https://example.com/scene.jpg",
"duration": 6,
"resolution": "720p"
}
}'Try it
/v2/videos/generateTry it