# Veo 3.1 | Lite | First Last Frame to Video Veo 3.1 Lite balances practical usability with professional capabilities, supporting both text-to-video and image-to-video generation. ## API Information - **Model Slug:** veo-3-1-lite-first-last-frame-to-video - **Branded URL:** https://www.eachlabs.ai/google/veo3-1/veo-3-1-lite-first-last-frame-to-video - **Provider:** Google - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.24–$0.64 per execution, depending on audio and resolution - **Estimated Processing Time:** 60 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/veo-3-1-lite-first-last-frame-to-video ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.24–$0.64 per execution, depending on audio and resolution - **Pricing Details:** 720p, no audio: $0.24 - **Pricing Details:** 1080p, no audio: $0.4 - **Pricing Details:** 720p: $0.4 - **Pricing Details:** 1080p: $0.64 - **Pricing Details:** default: $0.4 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text description of the motion and content for the video. | | first_image_url | string | Yes | - | - | URL of the image to use as the first frame of the video. | | last_image_url | string | Yes | - | - | URL of the image to use as the last frame of the video. | | aspect_ratio | string | No | 16:9 | 16:9, 9:16 | Aspect ratio of the output video. | | resolution | string | No | 720p | 720p, 1080p | Output resolution. | | generate_audio | boolean | No | true | - | Whether to generate audio for the video. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "veo-3-1-lite-first-last-frame-to-video", "input": { "first_image_url": "https://cdn-us.eachlabs.ai/defaults/ed4ca60b980c6e9bc7693fa607706e1675d9cd71cbe35cefeae38164ad77f601.png", "last_image_url": "https://cdn-us.eachlabs.ai/defaults/bac5da23d7404e83855118056d2f66b5274a55d3c7682c58103e306543e30445.png", "prompt": "The scene begins at sunset with warm golden light. The camera slowly pushes forward as time passes. The sky gradually shifts from orange to deep blue. City lights begin turning on one by one. The woman remains still, looking at the skyline as the environment transitions smoothly into night. Subtle wind movement continues. Cinematic time-lapse transition, smooth lighting changes, ultra realistic, emotional atmosphere." } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated video)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview Veo 3.1 | Lite | First Last Frame to Video from Google enables developers to generate high-fidelity videos from input images, animating static visuals into dynamic clips with synchronized audio. This **Google image-to-video** model, part of the Veo 3.1 family, solves the challenge of creating professional-grade video content efficiently without heavy post-production. Its primary differentiator is the lightweight Diffusion Transformer (DiT) architecture, delivering the same speed as Veo 3.1 Fast at half the cost, ideal for iterative prototyping and high-volume applications. Hosted on platforms like each::labs (eachlabs.ai), Veo 3.1 | Lite | First Last Frame to Video supports image-to-video workflows, producing cinematic outputs in 720p or 1080p with native audio. Developers access it via APIs such as Gemini API or fal.ai, making it a go-to for cost-effective **Veo 3.1 | Lite | First Last Frame to Video API** integration. Whether for brand films or app prototypes, it balances usability and quality. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.