# Ltx v2.5 | Image to Video | Pro LTX 2.5 Image-to-Video Pro animates a starting image into a high-quality video with prompt, resolution, duration, audio, and camera-motion controls. ## API Information - **Model Slug:** ltx-2-5-image-to-video-pro - **Branded URL:** https://www.eachlabs.ai/ltx/ltx-v2-5/ltx-2-5-image-to-video-pro - **Provider:** Lightricks - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.12–$0.17 per second, depending on resolution - **Estimated Processing Time:** 60 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/ltx-2-5-image-to-video-pro ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.12–$0.17 per second, depending on resolution - **Pricing Details:** 720p: $0.12 - **Pricing Details:** 1080p: $0.17 - **Pricing Details:** default: $0.17 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | image_url | string | Yes | - | - | URL of the start image to use for the generated video. Accepts a public URL or a base64 data URI. | | end_image_url | string | No | - | - | Optional URL of the end image. When provided, generates a transition video between the start and end frames. | | prompt | string | Yes | - | - | Text description of the desired video. | | duration | string | No | - | 6, 8, 10, auto | Duration of the generated video in seconds. Use auto to let the model choose. Default: auto. | | resolution | string | No | 1080p | 720p, 1080p | Resolution of the generated video. Default: 1080p. | | 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. Default: auto. | | fps | integer | No | 25 | 24, 25, 50 | Frames per second of the generated video. Default: 25. | | generate_audio | boolean | No | true | - | Whether to generate audio for the generated video. Default: true. | | 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-pro", "input": { "image_url": "https://cdn-us.eachlabs.ai/defaults/f33c6431173941bb982b2dc8b5d4b483.png", "prompt": "The young farmer gently brushes the grey horse's mane with the wooden brush in slow, caring strokes, smiling warmly. Then he lowers the brush and STOPS brushing completely — the brush stays down and does not come back up. With his free hand he affectionately strokes the horse's head and cheek, and keeps petting until the end of the video. He never brushes again after this point. The horse stays calm, ears twitching slightly, gently leaning into his touch. Soft natural farm lighting, warm peaceful atmosphere, 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 | ## Overview **Ltx v2.5 | Image to Video | Pro Overview** **Ltx v2.5 | Image to Video | Pro** turns a single starting image into a guided video clip with prompt control, camera motion, duration settings, and high-fidelity output. It belongs to the LTX family from Lightricks, and the current API naming appears to use the official model id **ltx-2-5-pro** for the Pro variant. The main differentiator of **Ltx v2.5 | Image to Video | Pro** is that it is optimized for fidelity, while still supporting image-to-video generation with camera-motion control and automatic duration behavior in the LTX-2.5 line. For each::labs users, that makes it a strong fit when the source image must preserve visual intent while still feeling animated and cinematic. LTX-2.5 also adds newer generation features such as native multi-shot support, HDR-oriented workflows, and synchronized audiovisual generation across the family, although the Pro API variant is positioned as the quality-focused option rather than the highest-resolution option. ## 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.