# Wan | 2.5 | Preview | Image to Video Wan 2.5 Preview is a model that generates short, cinematic videos from a single input image. It preserves the details of the original image while adding camera movements and atmosphere to bring the scene to life. This allows a still photo to be transformed into a film-like moving sequence. The “Preview” version is optimized for quick tests and concept exploration, making it ideal for prototyping and creative experimentation. ## API Information - **Model Slug:** wan-2-5-preview-image-to-video - **Branded URL:** https://www.eachlabs.ai/alibaba/wan-2-5/wan-2-5-preview-image-to-video - **Provider:** Alibaba - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Version:** 0.0.1 - **Base Cost:** 720p pricing: $0.10/second - **Estimated Processing Time:** 60 seconds - **Last Updated:** 2026-06-01 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/wan-2-5-preview-image-to-video ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $0.5000 - **Pricing Details:** 720p pricing: $0.10/second ### Pricing Rules | Condition | Pricing | | --- | --- | | resolution eq_i "480p" | 480p pricing: $0.05/second | | resolution eq_i "720p" | 720p pricing: $0.10/second | | Rule 3 | 1080p pricing (fallback): $0.15/second | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | The text prompt describing the desired video motion. Max 800 characters. | | image_url | string | Yes | - | - | URL of the image to use as the first frame. Must be publicly accessible. | | duration | string | No | 5 | 5,10 | Duration of the generated video in seconds. Choose between 5 or 10 seconds. Default value: "5" | | audio_url | string | No | - | - | URL of the audio to use as the background music. Must be publicly accessible. Limit handling: If the audio duration exceeds the duration value (5 or 10 seconds), the audio is truncated to the first 5 or 10 seconds, and the rest is discarded. If the audio is shorter than the video, the remaining part of the video will be silent. For example, if the audio is 3 seconds long and the video duration is 5 seconds, the first 3 seconds of the output video will have sound, and the last 2 seconds will be silent. Format: WAV, MP3. Duration: 3 to 30 s. File size: Up to 15 MB. | | resolution | string | No | 720p | 480p,720p,1080p | Video resolution. Valid values: 480p, 720p, 1080p | | negative_prompt | string | No | - | - | Negative prompt to describe content to avoid. Max 500 characters. | | enable_prompt_expansion | boolean | No | true | - | Whether to enable prompt rewriting using LLM. | | seed | integer | No | - | - | Random seed for reproducibility. If None, a random seed is chosen. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "wan-2-5-preview-image-to-video", "input": { "prompt": "Slow cinematic dolly-in on the man standing in a misty forest at sunrise, golden light breaking through the trees, soft fog drifting across the scene, dramatic depth of field, natural motion, film-like atmosphere, ultra realistic.", "image_url": "https://storage.googleapis.com/magicpoint/inputs/wan-2-5-preview-image-to-video-input.jpeg" } }' ``` ## 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 "X-API-Key: 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 `X-API-Key` | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **wan-2-5-preview-image-to-video — Image-to-Video AI Model** Developed by Alibaba as part of the **wan-2.5** family, **wan-2-5-preview-image-to-video** transforms a single input image and text prompt into cinematic short videos with native audio synchronization, ideal for creators seeking quick prototyping of dynamic scenes from static photos. This preview version excels in preserving original image details while adding fluid camera movements and atmospheric sound, supporting resolutions up to 1080P and durations of 5s or 10s at 30 fps in MP4 format. Perfect for **Alibaba image-to-video** applications, it enables rapid concept exploration without complex setups, making it a go-to for **image-to-video AI model** users building engaging content efficiently. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `X-API-Key: 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.