Wan 2.7 Video, released by Alibaba in April 2026, is several tools behind one name. What you send decides what it does: text only, a still, a start and end frame, a clip to carry on, an audio file that sets the rhythm of the movement, or an existing video to edit with words. It is the Wan model to use when you need to change footage rather than create it from nothing.
What you can make
- A character that moves and gestures in time with a voice track or a song.
- A continuation of a clip you already have.
- An edited video: different weather, different clothes, a new object, all by instruction.
- A transition between two set frames.
Settings that matter
- Length: 2 to 15 seconds; video editing allows up to 10.
- Resolution: 720P or 1080P (default). Drafts at 720P are enough to check motion.
- Audio-driven motion: combine
audio_urlwith one image to animate a still in time with the sound. - Editing: sending
video_urlswitches the job to edit mode; keepdurationwithin 2 to 10 seconds. - Aspect ratio: five shapes. Prompts go up to 5,000 characters, with an optional
negative_promptsuch as "warped hands, flicker". - Not exposed yet: Alibaba's reference-to-video mode with separate subject images, clips and voices.
Starter prompt
Turn the sunny street into a heavy snowstorm, snow piling on parked cars and rooftops, people's breath visible, keep the camera movement and the people's actions unchangedUse this with video_url for an edit; replace the weather change with whatever you want to alter and keep the "unchanged" part.
Questions
What does a Wan 2.7 Video clip cost?
from $0.161 per second. You get the estimate before the job starts, and failed clips cost nothing.
Why would I still use 2.7 now that Wan 3.0 exists?
Wan 3.0 goes to 30 seconds and 4K with sound and bigger reference sets, but it does not edit an existing video from a prompt. Version 2.7 does. The Wan 3.0 vs 2.7 page lists the rest.
Can a still photo move along with my soundtrack?
Yes, that is the audio-driven mode: send one image and an audio file, and the movement is timed to the sound.
Wan 2.7 Video in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan-2.7-video",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "1080P",
"duration": 5
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "wan-2.7-video",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "1080P",
"duration": 5
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "wan-2.7-video",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "1080P",
"duration": 5
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 5000 chars | |
negative_prompt | string | ||
aspect_ratio | string | 16:9 9:16 1:1 4:3 3:4 | 16:9 |
resolution | string | 720P 1080P | 1080P |
duration | integer | 2-15 | 5 |
image_url | string | ||
end_image_url | string | ||
image_urls | array | max 4 | |
video_url | string | ||
video_urls | array | max 1 | |
audio_url | string | ||
seed | integer |
Fetch this list as JSON with GET /v1/models/wan-2.7-video.























