# Wan 2.6 Image-To-Video (wan2-6-i2v) Vendor: Alibaba Model ID: `wan2-6-i2v` Base URL: `https://api.mulerouter.ai` Type: Inference API (async task-based) ## Description Converts a single image into a coherent, high-quality video with smooth motion. ## Variant: Create Generation Task Endpoint: `POST /vendors/alibaba/v1/wan2.6-i2v/generation` ### Input Schema The API accepts the following input parameters: - **`seed`** (`integer`, _optional_): Random seed [0, 2147483647]. - Range: `0` to `2147483647` - **`audio`** (`boolean | null`, _optional_): Enable automatic audio generation. Set to false to force a silent output. - Default: `true` - **`image`** (`string`, _required_): First-frame image (URL or Base64). Supported formats: JPEG/JPG/PNG/BMP/WEBP, 360-2000px, ≤10MB. - **`prompt`** (`string`, _required_): Motion/story description for the video (max 2000 characters). - Max length: 2000 - **`duration`** (`integer`, _optional_): Video duration in seconds. Supported values 5, 10, or 15. - Options: `5`, `10`, `15` - **`audio_url`** (`string | null`, _optional_): Custom audio file URL (wav/mp3, 3-30s, ≤15MB). Overrides the audio flag. - **`resolution`** (`string`, _optional_): Output resolution tier: - 480P - 720P - 1080P - Options: `"480P"`, `"720P"`, `"1080P"` - Default: `"720P"` - **`multi_shots`** (`string | null`, _optional_): Specifies the shot type for video generation. Only takes effect when prompt_extend is enabled. - single: Default value, outputs single-shot video - multi: Outputs multi-shot video - Default: `"single"` - **`prompt_extend`** (`boolean`, _optional_): Enable intelligent prompt rewriting (slightly longer latency, better detail). - Default: `true` - **`safety_filter`** (`boolean | null`, _optional_): Enable content safety filter. Defaults to true. Set to false to disable content safety inspection. - Default: `true` - **`negative_prompt`** (`string | null`, _optional_): Negative prompt describing unwanted content (max 500 characters). - Max length: 500 **Required Parameters Example**: ```json { "prompt": "", "image": "" } ``` **Full Example**: ```json { "seed": 0, "audio": true, "image": "", "prompt": "", "duration": 5, "audio_url": null, "resolution": "720P", "multi_shots": "single", "prompt_extend": true, "safety_filter": true, "negative_prompt": null } ``` ## Variant: /vendors/alibaba/v1/wan2.6-i2v/generation/{task_id} Endpoint: `POST /vendors/alibaba/v1/wan2.6-i2v/generation/{task_id}` ## Usage (Async Task API) This model uses an async task-based workflow with two API calls: 1. **Submit a task** — `POST /v1/inference/wan2-6-i2v` to create a generation task 2. **Poll for result** — `GET /v1/inference/wan2-6-i2v/{task_id}` to check status and retrieve the result ### Step 1: Submit a Task #### cURL ```bash curl -X POST https://api.mulerouter.ai/vendors/alibaba/v1/wan2.6-i2v/generation \ -H "Content-Type: application/json" \ -H "Authorization: Bearer " \ -d '{ "prompt": "Your prompt here" }' ``` #### Python ```python import requests API_KEY = "" ENDPOINT = "https://api.mulerouter.ai/vendors/alibaba/v1/wan2.6-i2v/generation" response = requests.post( ENDPOINT, headers={ "Content-Type": "application/json", "Authorization": f"Bearer {API_KEY}" }, json={ "prompt": "Your prompt here" } ) result = response.json() task_id = result["task_info"]["id"] print(f"Task created: {task_id}") ``` #### Node.js / TypeScript ```typescript const API_KEY = ""; const ENDPOINT = "https://api.mulerouter.ai/vendors/alibaba/v1/wan2.6-i2v/generation"; const response = await fetch(ENDPOINT, { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${API_KEY}` }, body: JSON.stringify({ prompt: "Your prompt here" }) }); const result = await response.json(); const taskId = result.task_info.id; console.log("Task created:", taskId); ``` #### Submit Response (202) ```json { "task_info": { "id": "8e1e315e-b50d-4334-a231-be7d19a372f4", "status": "processing", "created_at": "2026-01-01T00:00:00.000Z" } } ``` ### Step 2: Poll for Result Use the task ID from Step 1 to poll the status endpoint until the task is completed. Endpoint: `GET /v1/inference/wan2-6-i2v/{task_id}` #### cURL ```bash curl -X GET https://api.mulerouter.ai/vendors/alibaba/v1/wan2.6-i2v/generation/ \ -H "Authorization: Bearer " ``` #### Python ```python import time status_url = f"https://api.mulerouter.ai/vendors/alibaba/v1/wan2.6-i2v/generation/{task_id}" while True: status = requests.get(status_url, headers={ "Authorization": f"Bearer {API_KEY}" }).json() task_status = status["task_info"]["status"] if task_status in ("completed", "succeeded"): print("Result:", status) break elif task_status == "failed": print("Task failed:", status) break time.sleep(5) ``` #### Node.js / TypeScript ```typescript const statusUrl = `https://api.mulerouter.ai/vendors/alibaba/v1/wan2.6-i2v/generation/${taskId}`; while (true) { const statusRes = await fetch(statusUrl, { headers: { "Authorization": `Bearer ${API_KEY}` } }); const status = await statusRes.json(); const taskStatus = status.task_info.status; if (taskStatus === "completed" || taskStatus === "succeeded") { console.log("Result:", status); break; } else if (taskStatus === "failed") { console.log("Task failed:", status); break; } await new Promise(r => setTimeout(r, 5000)); } ``` ## Additional Resources ### Documentation - [Model Playground](https://www.mulerouter.ai/models/wan2-6-i2v) - [API Documentation](https://mulerouter.ai/docs/api-reference/endpoint/alibaba/wan2.6-i2v/generation) ### MuleRouter Platform - [Platform Documentation](https://www.mulerouter.ai/docs) - [API Keys Management](https://www.mulerouter.ai/app/api-keys)