# Ltx v2.5 | Image to Video | Fast LTX 2.5 Image-to-Video Fast turns a starting image into quick motion-rich video with prompt, duration, resolution, audio, and camera controls. ## API Information - **Model Slug:** ltx-2-5-image-to-video-fast - **Branded URL:** https://www.eachlabs.ai/ltx/ltx-v2-5/ltx-2-5-image-to-video-fast - **Provider:** Lightricks - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.09–$0.30 per second, depending on resolution - **Estimated Processing Time:** 60 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/ltx-2-5-image-to-video-fast ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.09–$0.30 per second, depending on resolution - **Pricing Details:** 720p: $0.09 - **Pricing Details:** 1080p: $0.13 - **Pricing Details:** 1440p: $0.19 - **Pricing Details:** 2160p: $0.3 - **Pricing Details:** default: $0.13 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | image_url | string | Yes | - | - | URL of the start image to animate into the generated video. | | end_image_url | string | No | - | - | Optional URL of the end image. When provided, the model generates a transition video between start and end frames. | | prompt | string | Yes | - | - | Text prompt describing the generated video. | | duration | integer | No | 6 | 6, 8, 10, 12, 14, 16, 18, 20 | Duration of the generated video in seconds. | | resolution | string | No | 1080p | 720p, 1080p, 1440p, 2160p | Resolution of the generated video. | | aspect_ratio | string | No | auto | auto, 16:9, 9:16 | Aspect ratio of the generated video. If auto, the ratio is determined from the input image. | | fps | integer | No | 25 | 24, 25, 48, 50 | Frames per second of the generated video. | | generate_audio | boolean | No | true | - | Whether to generate audio for the video. | | camera_motion | string | No | - | dolly_in, dolly_out, dolly_left, dolly_right, jib_up, jib_down, static, focus_shift | Optional camera motion applied to the generated 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": "ltx-2-5-image-to-video-fast", "input": { "image_url": "https://cdn-us.eachlabs.ai/defaults/57c8024682984895a0444db698490844.png", "prompt": "The four friends laugh naturally and chat during their lakeside picnic — one takes a bite of her sandwich, another gestures while talking, the golden retriever pants happily and looks around. Gentle breeze moves their hair and the tree leaves above, soft ripples drift across the lake behind them. Warm golden sunlight, relaxed cheerful atmosphere, subtle natural motion, camera stays still." } }' ``` ## 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 | ## 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.