# Alibaba | Wan 2.7 | Reference to Video Wan 2.7 Reference-to-Video generates videos with consistent character and object appearance from a reference image, supporting single or multi-shot scenes and optional motion guidance from video references. ## API Information - **Model Slug:** alibaba-wan-2-7-reference-to-video - **Branded URL:** https://www.eachlabs.ai/alibaba/wan-2-7/alibaba-wan-2-7-reference-to-video - **Provider:** Alibaba - **Category:** Reference to Video - **Output Type:** video - **Status:** active - **Version:** 0.0.1 - **Base Cost:** 1080P pricing: $0.15/sec (default) - **Estimated Processing Time:** 500 seconds - **Last Updated:** 2026-04-16 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/alibaba-wan-2-7-reference-to-video ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $0.7500 - **Pricing Details:** 1080P pricing: $0.15/sec (default) ### Pricing Rules | Condition | Pricing | | --- | --- | | resolution == "720P" | 720P pricing: $0.10/sec | | Rule 2 | 1080P pricing: $0.15/sec (default) | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text description of the video with reference character/object. Max 5,000 characters. | | reference_image | string | Yes | - | - | Reference image for character/object appearance consistency. JPEG/PNG/WEBP, max 20MB. | | reference_video | string | No | - | - | Reference video for appearance + motion (optional). MP4/MOV, max 100MB. | | first_frame | string | No | - | - | URL of image for first frame composition control (optional). When provided, ratio is ignored. | | negative_prompt | string | No | - | - | Describe what to avoid. Max 500 characters. | | reference_voice | string | No | - | - | URL of audio to set voice timbre for the reference character (optional). WAV/MP3, 1-10s, max 15 MB. | | resolution | string | No | 1080P | ["720P","1080P"] | Output resolution. 720P: lower cost. 1080P: higher quality (default). | | ratio | string | No | 16:9 | ["16:9","9:16","1:1","4:3","3:4"] | Output aspect ratio. 16:9: landscape (default). 9:16: portrait. 1:1: square. | | duration | integer | No | 5 | - | Video duration in seconds. Range: 2-10. Default: 5. | | shot_type | string | No | single | ["single","multi"] | single: one continuous shot (default). multi: multiple shots with transitions. | | prompt_extend | boolean | No | true | - | Intelligent prompt rewriting for better quality. Default: true. | | seed | integer | No | - | - | Seed for reproducibility. Random if omitted. | ## 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": "alibaba-wan-2-7-reference-to-video", "input": { "prompt": "A brave young child rides on the back of a giant bird flying high above the ocean at sunset. The bird’s massive wings flap powerfully through the glowing sky as waves crash against cliffs below. The camera follows in a cinematic aerial shot, sweeping around them as they glide through clouds and golden light. The child holds tightly to the bird’s feathers, hair and clothes moving in the wind. Epic fantasy adventure mood, realistic motion, dramatic scale, highly detailed, cinematic atmosphere.", "reference_image": "https://storage.googleapis.com/magicpoint/inputs/alibaba-wan-2-7-reference-to-video-input.png" } }' ``` ## 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 Alibaba | Wan 2.7 | Reference to Video revolutionizes video generation by producing high-quality videos with consistent character and object appearances from a single reference image, ideal for maintaining subject fidelity across multi-shot scenes. Developed by Alibaba Tongyi Lab as part of the advanced Wan 2.7 family, this video-to-video model stands out with its support for multi-reference inputs like 9-grid scenes and first/last frame control, enabling precise cinematic outputs up to 15-30 seconds. Unlike basic generators, it incorporates instruction-based editing and optional motion guidance from video references, solving key challenges in consistent character animation for creators and filmmakers. Available via the **Alibaba | Wan 2.7 | Reference to Video API** on platforms like each::labs, it empowers users to craft professional videos 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.