alibaba/wan/ati
Wan Ati is Alibaba's image-to-video AI model. Bring static images to life with fluid animation, consistent character motion, and professional-grade video output.
PNG, JPEG, WebP, or GIF · 20 MiB maximum
Example output — click Run to generate your own
Send your first request
OpenAI-compatible endpoint with unified authentication and usage tracking.
https://api.sandbase.ai/v1/runalibaba/wan/atiInput Schema
5 parameters · 2 required · 3 optional
| Parameter | Type | Required | Description |
|---|---|---|---|
image | string | Required | URL of the input image. |
prompt | string | Required | The text prompt to guide video generation. |
seed | integer | Optional | Random seed for reproducibility. If None, a random seed is chosen. |
track | array[] | Optional | Motion tracks to guide video generation. Each track is a sequence of points defining a motion trajectory. Multiple tracks can control different elements or objects in the video. Expected format: array of tracks, where each track is an array of points with 'x' and 'y' coordinates (up to 121 points per track). Points will be automatically padded to 121 if fewer are provided. Coordinates should be within the image dimensions. |
resolution | string | Optional | Resolution of the generated video (480p, 580p, 720p). · Options: 480p, 720p · Default: "480p" 480p720p |
Output Schema
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the generation task |
status | string | Task status: pending, running, completed, failed, timeout |
model | string | Model used for the generation |
outputs | array | Array of output items |
outputs[].url | string | URL of the generated artifact |
outputs[].content_type | string | MIME type (e.g. image/png, video/mp4) |
error | object | null | Error details if failed, null on success |
error.type | string | Machine-readable error type code |
error.message | string | Human-readable error description |
Async Workflow
This model uses asynchronous execution. Submit a request and poll for the result.
- Submit — POST to /v1/run, receive an
id - Poll — GET /v1/run/{id} until status is
completed,failed, ortimeout - Retrieve — Read
outputsfrom the completed response
Code Examples
Ready-to-run snippets
# Step 1: Submit
curl -X POST https://api.sandbase.ai/v1/run \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "alibaba/wan/ati",
"image": "https://static.sandbase.ai/examples/alibaba/wan/ati/input_image_0.jpg",
"track": [
[
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
},
{
"x": 110,
"y": 708
}
],
[
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
},
{
"x": 527,
"y": 755
}
],
[
{
"x": 289,
"y": 416
},
{
"x": 288,
"y": 416
},
{
"x": 286,
"y": 416
},
{
"x": 275,
"y": 416
},
{
"x": 262,
"y": 416
},
{
"x": 248,
"y": 416
},
{
"x": 232,
"y": 416
},
{
"x": 218,
"y": 416
},
{
"x": 205,
"y": 415
},
{
"x": 194,
"y": 415
},
{
"x": 183,
"y": 414
},
{
"x": 175,
"y": 413
},
{
"x": 167,
"y": 413
},
{
"x": 161,
"y": 413
},
{
"x": 154,
"y": 412
},
{
"x": 148,
"y": 412
},
{
"x": 143,
"y": 412
},
{
"x": 139,
"y": 411
},
{
"x": 135,
"y": 411
},
{
"x": 133,
"y": 411
},
{
"x": 131,
"y": 411
},
{
"x": 130,
"y": 411
},
{
"x": 130,
"y": 411
},
{
"x": 129,
"y": 411
},
{
"x": 129,
"y": 411
},
{
"x": 129,
"y": 411
},
{
"x": 129,
"y": 411
},
{
"x": 129,
"y": 411
},
{
"x": 129,
"y": 411
},
{
"x": 130,
"y": 411
},
{
"x": 131,
"y": 411
},
{
"x": 132,
"y": 411
},
{
"x": 135,
"y": 411
},
{
"x": 141,
"y": 411
},
{
"x": 149,
"y": 411
},
{
"x": 157,
"y": 412
},
{
"x": 169,
"y": 414
},
{
"x": 183,
"y": 416
},
{
"x": 198,
"y": 419
},
{
"x": 215,
"y": 422
},
{
"x": 235,
"y": 424
},
{
"x": 254,
"y": 426
},
{
"x": 271,
"y": 426
},
{
"x": 287,
"y": 427
},
{
"x": 302,
"y": 427
},
{
"x": 312,
"y": 427
},
{
"x": 324,
"y": 427
},
{
"x": 338,
"y": 427
},
{
"x": 350,
"y": 427
},
{
"x": 361,
"y": 425
},
{
"x": 370,
"y": 424
},
{
"x": 377,
"y": 423
},
{
"x": 381,
"y": 423
},
{
"x": 383,
"y": 422
},
{
"x": 386,
"y": 422
},
{
"x": 388,
"y": 421
},
{
"x": 393,
"y": 420
},
{
"x": 398,
"y": 419
},
{
"x": 404,
"y": 419
},
{
"x": 410,
"y": 418
},
{
"x": 413,
"y": 418
},
{
"x": 415,
"y": 418
},
{
"x": 416,
"y": 418
},
{
"x": 416,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
},
{
"x": 417,
"y": 418
}
]
],
"prompt": "An human facing the camera in an cyberbank style dress.",
"resolution": "480p"
}'
# Step 2: Poll result (replace <id>)
curl https://api.sandbase.ai/v1/run/<id> \
-H "Authorization: Bearer YOUR_API_KEY"API README
Wan Ati
Wan Ati animates a still image with Wan’s image-to-video modeling, turning the source composition into a dynamic clip while maintaining recognizable characters and scene elements. The model adds fluid action and camera movement rather than merely applying a pan or zoom to the original frame.
Choose a source with a clear subject and describe how pose, expression, environment, and camera should evolve. It is useful for portrait animation, product reveals, illustration motion, and social creative where the first frame already carries approved art direction and the task is to introduce convincing movement.
Highlights
- Fluid still-image animation. Transforms a static composition into evolving subject and environmental motion.
- Character appearance continuity. Keeps recognizable visual traits tied to the supplied image during animation.
- Camera-movement synthesis. Introduces directed reveals, pushes, pans, or orbiting viewpoints as part of the generated shot.
- Scene-aware dynamics. Adds movement that responds to the visible setting instead of treating foreground and background independently.
Pricing
| Configuration | Billing unit | Price |
|---|---|---|
| Base generation | Per request | $0.15 |
When to Use
| ✅ Good fit | ❌ Consider alternatives |
|---|---|
| The project needs this exact audio-to-image workflow | The intended task belongs to a different media route |
| Available source media matches every required field | Required assets or usage rights are unavailable |
| The brief can define subject, action, camera, and style | Output must be deterministic at frame or pixel level |
| Supported duration, resolution, and framing fit delivery | Final placement requires unsupported specifications |
| An asynchronous generation job fits production | A live or frame-synchronous response is mandatory |
Prompt Guide
Describe the result as a shot or design brief: identify subjects and references, state the action or transformation, specify environment and composition, then add camera behavior, lighting, pacing, style, sound, and preservation constraints where relevant. Use exact reference identifiers exposed by the local schema.
{
"image": "https://example.com/start-frame.png",
"prompt": "A cinematic scene with clearly directed subject action, camera movement, lighting, pacing, and atmosphere",
"resolution": "480p",
"seed": 1,
"track": [
"Example"
]
}
Technical Specs
| Spec | Value |
|---|---|
| Model ID | alibaba/wan/ati |
| Input fields | seed (integer)<br>image (string)<br>track (array)<br>prompt (string)<br>resolution (string; 480p, 720p) |
| Required input | prompt, image |
| Output fields | url, content_type |
| Execution | Asynchronous job |
Related Models
alibaba/wan/2.1/flf-to-video— Compare this concrete local family route.alibaba/wan/2.1/image-to-video— Compare this concrete local family route.alibaba/wan/2.1/image-to-video/lora— Compare this concrete local family route.

