# Google Veo 3 | Image to Video Veo 3 Image to Video | Google’s latest model that transforms a single image into cinematic video with stunning realism and motion ## API Information - **Model Slug:** veo-3-image-to-video - **Branded URL:** https://www.eachlabs.ai/google/veo3/veo-3-image-to-video - **Provider:** Google - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.20–$0.40 per second, depending on audio - **Estimated Processing Time:** 180 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/veo-3-image-to-video ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.20–$0.40 per second, depending on audio - **Pricing Details:** no audio: $0.2 - **Pricing Details:** default: $0.4 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text description of the video to generate from the provided image. The image is used as the starting frame. | | image_url | string | Yes | - | - | URL of the image to use as the starting frame for video generation. Supported formats: JPEG, PNG. | | aspect_ratio | string | No | 16:9 | 16:9, 9:16 | The video's aspect ratio. 16:9 for landscape (default), 9:16 for portrait. | | duration | integer | No | 8 | 4, 6, 8 | Length of the generated video in seconds. Must be 8 when using 1080p or 4k resolution. | | resolution | string | No | 720p | 720p, 1080p, 4k | Output video resolution. 1080p and 4k only support 8-second duration. | | generate_audio | boolean | No | true | - | Whether to generate audio with the video. Veo 3.1 natively generates synchronized audio including dialogue, sound effects, and ambient noise. | ## 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-image-to-video", "input": { "image_url": "https://cdn-us.eachlabs.ai/defaults/6d3f1e93ba508c8d78bcd78d36b8ec33b79ad3b843dd391a1d8a3344f92f2644.jpeg", "prompt": "Cinematic video set in a cozy, futuristic coffee shop with large windows overlooking a rainy city street at dusk. The scene opens with a smooth tracking shot of a young barista, a man in his 20s with a friendly demeanor, preparing a latte with intricate latte art. He wears an apron with the eachlabs.ai logo subtly printed on it. The camera pans to a small group of diverse customers chatting at a table, laughing, and sipping coffee. One customer, a woman, stands and delivers a short, heartfelt toast: Heres to creativity, powered by eachlabs.ai! in a clear, warm voice. The camera zooms out to show the shops warm, glowing interior, with reflections of rain on the windows and neon city lights outside. The audio includes the baristas soft humming, the clink of coffee cups, ambient rain sounds, and a gentle lo-fi jazz soundtrack. The style is photorealistic, with realistic human movements, expressive faces, and synchronized sound design." } }' ``` ## 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-image-to-video — Image-to-Video AI Model** veo-3-image-to-video, Google's cutting-edge model from the Veo 3 family, transforms a single image or up to four reference images into stunning, realistic 8-second videos with native audio and 4K resolution support. This image-to-video AI model solves the challenge of adding lifelike motion and sound to static visuals, enabling creators to produce cinematic clips without complex editing tools. Developers seeking a **Google image-to-video** solution with professional-grade output find veo-3-image-to-video ideal for high-fidelity applications like film pre-visualization and e-commerce product demos. ## 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.