Wan 3.0 is Alibaba's video model from August 2026. It can render a full 30-second clip in a single pass, up to 4K, with a soundtrack included by default. What makes it stand out is how much you can feed it: pictures of your product or character, short reference videos for movement, and audio clips for a voice, all named and placed in the prompt.
What you can make
- Product videos assembled from several reference photos.
- Music videos where the character and the voice come from your own references.
- 30-second 4K ads rendered in one go, without stitching.
- Scenes with several characters, each tied to its own reference image or voice.
Settings that matter
- Length: 2 to 30 seconds.
duration: -1lets the model choose but bills 30 seconds, so give a number when budget counts. - Resolution: 480P, 720P, 1080P (default), 2K or 4K. Use 480P to test the idea.
- References: up to 10 images, 5 videos and 5 audio clips. Video and audio references run 1 to 15 seconds each, 15 seconds in total.
- Cost of references: reference videos are billed, so keep them short.
- Prompt: up to 20,000 characters. Address files by name, for example "Image 2 sits at the table from Video 1 while Audio 1 plays".
- Not exposed yet: Alibaba's document and web page inputs.
Starter prompt
Image 1 is the singer, Audio 1 is her voice. She walks through a neon-lit arcade at night singing along to Audio 1, slow tracking shot, colored reflections on wet floor, 20 seconds, 1080PPoint the names at your own uploads and change the location; match the length in the prompt to the duration field.
Questions
What does a Wan 3.0 clip cost?
from $0.0777 per second. Reference videos add to the total, which you see before you submit. A failed clip costs nothing.
Can I turn a PDF or a web page into a video?
The model can, but Kadraris does not offer that input yet. A workaround: screenshot the key pages and attach them as reference images.
How does Wan 3.0 compare with Kling or Seedance?
See Wan 3.0 vs Kling 3.0, Wan 3.0 vs Seedance 2.5 and Wan 3.0 vs MiniMax H3.
Wan 3.0 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-3.0",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "adaptive",
"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-3.0",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "adaptive",
"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-3.0",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "adaptive",
"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 | ≤ 20000 chars | |
aspect_ratio | string | adaptive 16:9 9:16 1:1 4:3 3:4 | adaptive |
resolution | string | 480P 720P 1080P 2K 4K | 1080P |
duration | integer | 2-30 | 5 |
generate_audio | boolean | true | |
image_url | string | ||
end_image_url | string | ||
image_urls | array | max 10 | |
video_urls | array | max 5 | |
audio_url | string | ||
audio_urls | array | max 5 | |
seed | integer |
Fetch this list as JSON with GET /v1/models/wan-3.0.























