# 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 - **Base Cost:** $0.05–$0.15 per second, depending on resolution - **Estimated Processing Time:** 60 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/wan-2-5-preview-image-to-video ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.05–$0.15 per second, depending on resolution - **Pricing Details:** 480p: $0.05 - **Pricing Details:** 720p: $0.1 - **Pricing Details:** default: $0.15 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | No | - | - | Text prompt describing the desired video motion and content. Supports Chinese and English. Max 1500 characters. | | image_url | string | Yes | - | - | URL of the image to use as the first frame. Supports JPEG, JPG, PNG, BMP, WEBP. Dimensions: 240-8000px on each side. Max 10MB. | | resolution | string | No | 720p | 480p, 720p, 1080p | Video output resolution. 480p: lowest resolution, fastest generation. 720p: medium resolution (default). 1080p: highest quality output. | | audio_url | string | No | - | - | URL of the audio file for audio-visual synchronization. Supports WAV and MP3. Duration: 3-30 seconds. Max 15MB. | | duration | string | No | 5 | 3, 4, 5, 6, 7, 8, 9, 10 | Video duration in seconds. 5: shorter, faster generation (default). 10: longer video. | | negative_prompt | string | No | - | - | Text describing content to avoid in the generated video. Max 500 characters. | | enable_prompt_expansion | boolean | No | true | - | Enable LLM-based prompt rewriting for better video quality. true: expand prompt automatically (default). false: use prompt as-is. | | seed | integer | No | - | 0–2147483647 | Random seed for reproducibility. Range: 0-2147483647. If not provided, a random seed is chosen. | ## 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": "wan-2-5-preview-image-to-video", "input": { "image_url": "https://cdn-us.eachlabs.ai/defaults/3db44c469d434d42930faeee611fb03c149f0f9a8de80ca2eb67c604a0924b85.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 "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 **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 `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.