WAN 2.6 Image-to-Video Pro converts images into premium-quality videos with superior motion dynamics, enhanced visual fidelity, and professional cinematic output. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Ожидание
$0.6за запуск·~16 / $10
The silver Formula 1 car accelerates out of the corner with roaring engine sounds, rear tires spinning and kicking up rubber debris. The camera follows the car in a dynamic tracking shot as it powers down the straight, heat haze shimmering off the asphalt. The rear wing vibrates slightly under aerodynamic load, brake discs glow faintly red. Background spectators and track marshals remain slightly blurred with natural motion blur. Cinematic, 60fps, motorsport broadcast style. Add suitable background sound.
A young couple sits at a warmly lit bar, gazing into each other's eyes with soft smiles. The woman tucks her hair behind her ear, rests her chin on her hand, and says with a playful smile: 'So... you're saying you've never been here before?' The man leans closer, gently swirling his Aperol Spritz, and replies with a charming grin: 'Never. But I think I just found my favorite spot.' She laughs softly, looking down shyly before meeting his eyes again. The bokeh lights in the background shimmer warmly, glasses clink in the distance, soft jazz plays faintly. The camera slowly dollies in with shallow depth of field. Warm golden tones, cinematic romantic film style, 24fps, anamorphic lens flare.
Wan 2.6 Image-to-Video Pro is premium image-to-video model, transforming still images into cinematic video with superior motion quality and detail. Upload a reference image, describe the scene and motion — the model generates smooth, high-resolution video with optional audio input and flexible duration options.
Pro-tier quality Superior visual fidelity and motion realism from latest Wan 2.6 architecture.
Multiple resolutions Output in 1080p, 2K, or 4K to match your production needs.
Audio support Optional audio input for synchronized video generation.
Shot type control Choose between single or multi-shot compositions.
Prompt Enhancer Built-in prompt optimizer for improved generation results.
Negative prompt support Specify elements to exclude for more precise control.
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text description of the desired scene and motion |
| image | Yes | Reference image to animate (URL or upload) |
| audio | No | Audio file for synchronized video (URL or upload) |
| negative_prompt | No | Elements to exclude from the video |
| resolution | No | Output resolution: 1080p (default), 2k, 4k |
| duration | No | Video length in seconds (default: 5) |
| shot_type | No | Shot composition: single (default) or multi |
| enable_prompt_expansion | No | Enable prompt optimizer (default: disabled) |
| seed | No | Random seed for reproducibility (-1 for random) |
| Duration | 1080p | 2k | 4k |
|---|---|---|---|
| 5 s | $0.70 | $0.75 | $0.80 |
| 10 s | $1.20 | $1.40 | $1.60 |
| 15 s | $1.80 | $2.10 | $2.40 |
Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/alibaba/wan-2.6/image-to-video-pro with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Wan 2.6 Image To Video Pro below.
set -euo pipefail
: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"resolution": "1080p",
"duration": 5,
"shot_type": "single",
"enable_prompt_expansion": false,
"seed": -1
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/alibaba/wan-2.6/image-to-video-pro" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $WAVESPEED_API_KEY" \
-d "$REQUEST_BODY")
TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
-H "Authorization: Bearer $WAVESPEED_API_KEY")
RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
case "$STATUS" in
completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
created|processing) sleep 2 ;;
*) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
esac
doneconst submitUrl = "https://api.wavespeed.ai/api/v3/alibaba/wan-2.6/image-to-video-pro";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');
async function requestJson(url, options = {}) {
const response = await fetch(url, options);
if (!response.ok) throw new Error(await response.text());
return response.json();
}
// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"resolution": "1080p",
"duration": 5,
"shot_type": "single",
"enable_prompt_expansion": false,
"seed": -1
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
`https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;
// 2. Poll until the prediction finishes.
while (true) {
const resultBody = await requestJson(resultUrl, {
headers: { "Authorization": `Bearer ${apiKey}` },
});
const result = resultBody.data ?? resultBody;
if (result.status === "completed") {
console.log(result.outputs);
break;
}
if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
await new Promise(resolve => setTimeout(resolve, 2000));
}import json
import os
import time
from urllib.request import Request, urlopen
api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
"resolution": "1080p",
"duration": 5,
"shot_type": "single",
"enable_prompt_expansion": False,
"seed": -1
}
def request_json(url, data=None):
request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
with urlopen(request) as response:
return json.load(response)
# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/alibaba/wan-2.6/image-to-video-pro", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"
# 2. Poll until the prediction finishes.
while True:
result_body = request_json(result_url)
result = result_body.get("data", result_body)
status = result.get("status")
if status == "completed":
print(result.get("outputs", []))
break
if status in {"failed", "cancelled", "timeout"}:
raise RuntimeError(result)
if status not in {"created", "processing"}:
raise RuntimeError(f"Unexpected status: {status}")
time.sleep(2)Wan 2.6 Image To Video Pro is a Alibaba model for video generation from images, exposed as a REST API on WaveSpeedAI. WAN 2.6 Image-to-Video Pro converts images into premium-quality videos with superior motion dynamics, enhanced visual fidelity, and professional cinematic output. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.
POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/alibaba/alibaba-wan-2.6-image-to-video-pro.
Wan 2.6 Image To Video Pro starts at $0.60 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.
Key inputs: `prompt`, `image`, `audio`, `resolution`, `duration`, `seed`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/alibaba/alibaba-wan-2.6-image-to-video-pro.
Median end-to-end generation time on WaveSpeedAI is around 215 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.
Commercial usage rights depend on the model's license, set by its provider (Alibaba). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.