# Veo 3.1 | First Last Frame to Video | Fast Define the start and end of your story and fill the gap with veo3-1-first-last-frame-to-video-fast; create a smooth video interpolation between two static frames. ## API Information - **Model Slug:** veo3-1-first-last-frame-to-video-fast - **Branded URL:** https://www.eachlabs.ai/google/veo3-1/veo3-1-first-last-frame-to-video-fast - **Provider:** Google - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Version:** 0.0.1 - **Base Cost:** 720p/1080p (default), 8s, Audio On/default - **Estimated Processing Time:** 65 seconds - **Last Updated:** 2026-08-16 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/veo3-1-first-last-frame-to-video-fast ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $1.20 - **Pricing Details:** 720p/1080p (default), 8s, Audio On/default ### Pricing Rules | Condition | Pricing | | --- | --- | | resolution eq_i "4k" AND duration in_i "4,4s" AND generate_audio eq_i "false" | 4k, 4s, Audio Off | | resolution eq_i "4k" AND duration in_i "6,6s" AND generate_audio eq_i "false" | 4k, 6s, Audio Off | | resolution eq_i "4k" AND duration in_i "8,8s" AND generate_audio eq_i "false" | 4k, 8s, Audio Off | | resolution eq_i "4k" AND generate_audio eq_i "false" | 4k, Audio Off, duration default 8s | | resolution eq_i "4k" AND duration in_i "4,4s" | 4k, 4s, Audio On/default | | resolution eq_i "4k" AND duration in_i "6,6s" | 4k, 6s, Audio On/default | | resolution eq_i "4k" AND duration in_i "8,8s" | 4k, 8s, Audio On/default | | resolution eq_i "4k" | 4k, Audio On/default, duration default 8s | | duration in_i "4,4s" AND generate_audio eq_i "false" | 720p/1080p (default), 4s, Audio Off | | duration in_i "6,6s" AND generate_audio eq_i "false" | 720p/1080p (default), 6s, Audio Off | | duration in_i "8,8s" AND generate_audio eq_i "false" | 720p/1080p (default), 8s, Audio Off | | generate_audio eq_i "false" | 720p/1080p (default), Audio Off, duration default 8s | | duration in_i "4,4s" | 720p/1080p (default), 4s, Audio On/default | | duration in_i "6,6s" | 720p/1080p (default), 6s, Audio On/default | | duration in_i "8,8s" | 720p/1080p (default), 8s, Audio On/default | | Rule 16 | Default: 720p, 8s, Audio On = $1.20 | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | first_frame_url | string | Yes | - | - | URL of the first frame of the video | | last_frame_url | string | Yes | - | - | URL of the last frame of the video | | prompt | string | Yes | - | - | The text prompt describing the video you want to generate | | duration | string | No | 8 | 4,6,8 | The duration of the generated video in seconds | | aspect_ratio | string | No | 16:9 | 9:16,16:9 | Aspect ratio of the generated video | | resolution | string | No | 720p | 720p,1080p | Resolution of the generated video | | generate_audio | boolean | No | true | - | Whether to generate audio for the video. If false, %33 less credits will be used. | | auto_fix | boolean | No | false | - | Whether to automatically attempt to fix prompts that fail content policy or other validation checks by rewriting them. | ## 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": "veo3-1-first-last-frame-to-video-fast", "input": { "prompt": "A woman looks into the camera, breathes in, then exclaims energetically, \\\"have you guys checked out Veo3.1 First-Last-Frame-to-Video on Eachlabs? It's crazy!\\\" SHe is holidng a coffee cup", "first_frame_url": "https://storage.googleapis.com/magicpoint/inputs/veo3-1-first-last-frame-to-video-fast-input-first.png", "last_frame_url": "https://storage.googleapis.com/magicpoint/inputs/veo3-1-first-last-frame-to-video-fast-input-last.png" } }' ``` ## 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 **veo3.1-first-last-frame-to-video-fast — Image-to-Video AI Model** veo3.1-first-last-frame-to-video-fast, a specialized variant of Google's Veo 3.1 family, enables creators to generate smooth video interpolations by specifying the first and last frames, filling the gap with realistic motion and transitions. This **image-to-video AI model** from Google solves the challenge of crafting dynamic video sequences from static images, ideal for storytelling where you define the start and end of your narrative. Developed as part of Veo 3.1's advanced frame-specific generation capabilities, it delivers high-fidelity outputs up to 4K resolution, making it a go-to for **Google image-to-video** workflows targeting social media and professional production. ## 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.