ApiframeApiframe Docs
Video GenerationVeo

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/generatemodel: "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

ParameterTypeDefaultDescription
veoParams.durationinteger8Video duration in seconds: 4, 6, or 8
veoParams.resolutionstring"720p"Output resolution: "720p" or "1080p". 1080p requires duration: 8
veoParams.aspect_ratiostringAspect ratio in "W:H" format — "16:9" or "9:16"
veoParams.imagestringURL of an input image for image-to-video
veoParams.last_framestringURL of an image to use as the last frame (frame interpolation)
veoParams.negative_promptstringThings to avoid in the video (max 2,000 chars)
veoParams.seedintegerRandom 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.

VariantCredits / second
720p9
1080p14

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

POST/v2/videos/generateTry it

On this page