Wan 3.0 API
videoVideo generation by alibaba
Alibaba Wan 3.0 video generation with native audio, first/last frame control, and reference images. First/last frame and reference images cannot be combined in one request.
Call Wan 3.0 from Node.js, Python, or any HTTP client. No GPU provisioning, no cold starts, no Docker images — just an API key and a prompt.
Pay per request. Powering 1M+ generations daily.
Start in 60 seconds
Install the official SDK for Node.js or Python, drop in your API key, and generate your first video.
npm install getimg-ai
import GetimgAI from "getimg-ai";
const client = new GetimgAI();
const submission = await client.videos.generations.create({
model: "wan-3-0",
prompt: "A realistic vertical commercial for a pair of black-and-white canvas skate shoes, filmed in a clean concrete skatepark at late afternoon. Open with a macro close-up of the rubber sole touching the ground, followed by detailed shots of the canvas texture, laces and side profile. A skater pushes forward, lands one clean trick and rides past the camera. Keep the product visible and recognizable in every shot. Use low tracking angles, short controlled handheld movement, natural sunlight, hard concrete shadows and restrained black, off-white and muted red accents. The campaign should feel youthful, raw and confident, but still polished and commercially usable. End with the shoes resting on the edge of the ramp in a simple hero shot.",
aspect_ratio: "16:9",
resolution: "480p",
duration: 4
});
const requestId = submission.id;
// Poll
let result;
while (true) {
result = await client.videos.generations.retrieve(requestId);
if (result.status === "completed") break;
if (result.status === "failed") {
throw new Error(result.error.message);
}
await new Promise((r) => setTimeout(r, 5000));
}
console.log(result.data[0].url);How Wan 3.0 API works
Submit a generation request, poll for completion, download the video.
Get your API key
Create a key in the Developer Dashboard. Add credit and start calling — you are billed per request.
Send a request
POST to /v2/videos/generations with your prompt, duration, and resolution.
Get your video
Poll the status endpoint. When it completes, download the video from the returned URL.
What you can build with Wan 3.0
Every example uses the same authentication and works with the official getimg-ai and getimg SDKs, or plain HTTP.
Text to video
Generate a video using just a text prompt.
import GetimgAI from "getimg-ai";
const client = new GetimgAI();
const submission = await client.videos.generations.create({
model: "wan-3-0",
prompt: "A realistic vertical commercial for a pair of black-and-white canvas skate shoes, filmed in a clean concrete skatepark at late afternoon. Open with a macro close-up of the rubber sole touching the ground, followed by detailed shots of the canvas texture, laces and side profile. A skater pushes forward, lands one clean trick and rides past the camera. Keep the product visible and recognizable in every shot. Use low tracking angles, short controlled handheld movement, natural sunlight, hard concrete shadows and restrained black, off-white and muted red accents. The campaign should feel youthful, raw and confident, but still polished and commercially usable. End with the shoes resting on the edge of the ramp in a simple hero shot.",
aspect_ratio: "16:9",
resolution: "480p",
duration: 4
});
const requestId = submission.id;
// Poll
let result;
while (true) {
result = await client.videos.generations.retrieve(requestId);
if (result.status === "completed") break;
if (result.status === "failed") {
throw new Error(result.error.message);
}
await new Promise((r) => setTimeout(r, 5000));
}
console.log(result.data[0].url);Image to video
Animate a still image as the starting frame.
import GetimgAI from "getimg-ai";
const client = new GetimgAI();
const submission = await client.videos.generations.create({
model: "wan-3-0",
prompt: "Animate the scene with subtle camera movement and natural motion.",
aspect_ratio: "16:9",
resolution: "480p",
duration: 4,
images: [
{
url: "https://your-bucket.s3.amazonaws.com/first.png",
role: "first_frame"
}
]
});
const requestId = submission.id;
// Poll
let result;
while (true) {
result = await client.videos.generations.retrieve(requestId);
if (result.status === "completed") break;
if (result.status === "failed") {
throw new Error(result.error.message);
}
await new Promise((r) => setTimeout(r, 5000));
}
console.log(result.data[0].url);First & last frame
Interpolate motion between a starting and ending frame.
import GetimgAI from "getimg-ai";
const client = new GetimgAI();
const submission = await client.videos.generations.create({
model: "wan-3-0",
prompt: "Smooth transition from the first to the last frame.",
aspect_ratio: "16:9",
resolution: "480p",
duration: 4,
images: [
{
url: "https://your-bucket.s3.amazonaws.com/first.png",
role: "first_frame"
},
{
url: "https://your-bucket.s3.amazonaws.com/last.png",
role: "last_frame"
}
]
});
const requestId = submission.id;
// Poll
let result;
while (true) {
result = await client.videos.generations.retrieve(requestId);
if (result.status === "completed") break;
if (result.status === "failed") {
throw new Error(result.error.message);
}
await new Promise((r) => setTimeout(r, 5000));
}
console.log(result.data[0].url);Reference image
Guide the generation with a character, style, or content reference.
import GetimgAI from "getimg-ai";
const client = new GetimgAI();
const submission = await client.videos.generations.create({
model: "wan-3-0",
prompt: "A cinematic shot inspired by the provided reference image.",
aspect_ratio: "16:9",
resolution: "480p",
duration: 4,
images: [
{
url: "https://your-bucket.s3.amazonaws.com/reference.png",
role: "reference_image"
}
]
});
const requestId = submission.id;
// Poll
let result;
while (true) {
result = await client.videos.generations.retrieve(requestId);
if (result.status === "completed") break;
if (result.status === "failed") {
throw new Error(result.error.message);
}
await new Promise((r) => setTimeout(r, 5000));
}
console.log(result.data[0].url);Wan 3.0 pricing
Pay per video. No subscriptions, no minimums, no idle GPU costs.
Wan 3.0
$0.05 – $0.20 /second
/v2/videos/generationsAlibaba Wan 3.0 video generation with native audio, first/last frame control, and reference images. First/last frame and reference images cannot be combined in one request.
| Resolution | Price | 5s videos for $10 |
|---|---|---|
| 480p | $0.05 /second | 40 |
| 720p | $0.10 /second | 20 |
| 1080p | $0.20 /second | 10 |
More from alibaba
Other alibaba models available through the same API.

Qwen Image 3.0 Pro
Alibaba Qwen image generation and editing with up to three reference images.
HappyHorse 1.1
Physically realistic, motion-smooth video generation with text, first-frame, and reference-image guidance.
HappyHorse 1
Physically realistic, motion-smooth video generation with text, first-frame, and reference-image guidance.

Wan 2.7 Image
Fast Wan 2.7 image model supporting text-to-image and reference-based editing.
Wan 2.7
Multimodal Wan 2.7 video generation with text, frame control, and reference-image guidance.

Wan 2.7 Image Pro
Wan 2.7 image pro model with higher-fidelity generation and extended resolution support.
Wan 3.0 API — frequently asked questions
How do I use the Wan 3.0 API?
Install the official Node.js (npm install getimg-ai) or Python (pip install getimg) SDK, or call the endpoint directly over HTTP from any client.
Make a POST request to /v2/videos/generations with your API key and a JSON body containing the model ID (wan-3-0) and a prompt. The API returns a request ID. Poll the status endpoint until the video is ready.
See the API documentation for the full parameter reference.
Which SDK should I use?
Use getimg-ai for Node.js and TypeScript projects, and getimg for Python. Both wrap the same REST API with typed inputs, retries, and built-in polling for video generations.
For other languages — Go, Rust, Java, Ruby, PHP — call the HTTP endpoints directly. Every example on this page includes a cURL snippet you can port to any HTTP client.
What resolutions does Wan 3.0 support?
Wan 3.0 supports the following resolutions: 480p, 720p, 1080p across 5 aspect ratios (16:9, 4:3, 1:1, 3:4, 9:16). Videos can be 4 to 30 seconds long.
How much does Wan 3.0 cost?
Wan 3.0 uses pay-per-video pricing with no subscriptions or minimum commitments. Rates vary by resolution and sound options. See the pricing table above for exact rates per second.
Does Wan 3.0 support reference images?
Yes. Wan 3.0 accepts up to 1 last frame and up to 1 first frame and up to 10 reference images. Reference images guide the generation toward a specific style, composition, or subject. See the example above.
Start building with Wan 3.0
Grab an API key, install the SDK, ship video generation today.
Looking for other models? View all available models