Appearance
digital human-wan2.2-s2v API reference
wan2.2-s2v generates videos of a person speaking, singing, or performing, with natural lip movements, expressions, and actions, from a single image and an audio file.
Audio-driven: An input audio file drives the character in a static image, synchronizing its lip movements, facial expressions, and body actions with the audio.
Rich scenarios: Supports three lip-sync scenarios: speaking, singing, and performing.
Diverse characters: Supports real people, including portraits, half-body, and full-body images, along with cartoon characters.
Output video resolution: Provides 480P and 720P resolution options.
Important
This document applies only to the China (Beijing) region. To use the model, you must use an API key from the China (Beijing) region.
Model and pricing
| Model | Unit price | Rate limiting (shared by Alibaba Cloud accounts and RAM users) | |
|---|---|---|---|
| Task submission RPS limit | Concurrent tasks | ||
| wan2.2-s2v | 480P: $0.071677/second 720P: $0.129018/second | 5 | 1 |
HTTP API
Prerequisites
Activate the service and get an API key.
Set the API key as environment variable.
Step 1: Create a task and get the task ID
HELPCODEESCAPE-http
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesisNote
Because this model call takes a long time, the task is created through an asynchronous invocation.
After the task is created, the system immediately returns a task_id. In the next step, use this task_id to query the task result within 24 hours.
Request parameters
| Field | Type | Passing method | Required | Description | Example |
|---|---|---|---|---|---|
| Content-Type | String | Header | Yes | The request type. Set the value to application/json. | application/json |
| Authorization | String | Header | Yes | The API key. The format is Bearer sk-xxx. | Bearer sk-1a**2b |
| X-DashScope-Async | String | Header | Yes | A static field set to `enable`, which indicates that an asynchronous invocation is used. | enable |
| model | String | Body | Yes | The model to call. | wan2.2-s2v |
| input.image_url | String | Body | Yes | The URL of the uploaded image. - Image format: JPG, JPEG, PNG, BMP, and WEBP are supported. - Image resolution: The width and height of the image must be between 400 and 7,000 pixels. - Only HTTP/HTTPS links accessible over the Internet are supported. | http://aaa/bbb.jpg |
| input.audio_url | String | Body | Yes | The URL of the uploaded audio file. - Audio format: WAV and MP3 are supported. - Audio limits: The file size must be less than 15 MB, and the duration must be less than 20 seconds. - Audio content: The audio must contain clear and loud human speech. Remove interference such as ambient noise and background music. - Only HTTP/HTTPS links accessible over the Internet are supported. | http://aaa/bbb.mp3 |
| parameters.resolution | String | Body | No | The video resolution level. Valid values are 480P and 720P. The default value is 480P. The model tries to keep the aspect ratio of the output video the same as the input image. It adjusts the total pixels of the video to be close to the selected level while keeping the aspect ratio unchanged. Example 480P: This resolution is typically 640 × 480 (about 310,000 pixels) with a 4:3 aspect ratio. 720P: This resolution is typically 1280 × 720 (about 920,000 pixels) with a 16:9 aspect ratio. Example: If the input image has a 4:5 aspect ratio and you select the 480P level, the output video will maintain the 4:5 aspect ratio. The resolution will be adjusted to be close to 310,000 pixels. For example, the output video resolution might be 480 × 600, for a total of 288,000 pixels. This data is for reference only. The actual output may vary. | 480P |
Response parameters
| Field | Type | Description | Example |
|---|---|---|---|
| output.task_id | String | The unique ID of the asynchronous task. | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
| output.task_status | String | The status of the job after the asynchronous task is submitted. | PENDING |
| request_id | String | The unique ID of the request. | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
Sample request
HELPCODEESCAPE-curl
curl 'https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis/' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.2-s2v",
"input": {
"image_url": "https://img.alicdn.com/imgextra/i3/O1CN011FObkp1T7Ttowoq4F_!!6000000002335-0-tps-1440-1797.jpg",
"audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250825/iaqpio/input_audio.MP3"
},
"parameters": {
"resolution": "480P"
}
}'Sample response
HELPCODEESCAPE-json
{
"output": {
"task_id": "a8532587-fa8c-4ef8-82be-xxxxxx",
"task_status": "PENDING"
},
"request_id": "7574ee8f-38a3-4b1e-9280-xxxxxx"
}Step 2: Query the result by task ID
Send a GET request using the task_id from the previous step to query the task status and result. Replace {task_id} in the URL with the actual task ID.
HELPCODEESCAPE-http
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}Note
Video generation tasks can take 5 to 10 minutes to complete. You can use a polling mechanism and set a reasonable query interval, such as 15 seconds, to retrieve the result.
The video_url returned for a successful task is valid for 24 hours. You should download and save the video promptly.
Request parameters
| Field | Type | Passing method | Required | Description | Example |
|---|---|---|---|---|---|
| Authorization | String | Header | Yes | API key in the format Bearer sk-xxx. | Bearer sk-xxx |
| task_id | String | Url Path | Yes | Task ID to query. | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
Response parameters
| Field | Type | Description | Example |
|---|---|---|---|
| output.task_id | String | Task ID. | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
| output.task_status | String | Task status. Possible values: - PENDING - RUNNING - SUCCEEDED - FAILED - UNKNOWN - CANCELED | SUCCEEDED |
| output.submit_time | String | Task submission time. | 2025-09-01 09:37:27.468 |
| output.scheduled_time | String | Task start time. | 2025-09-01 09:37:34.885 |
| output.end_time | String | Task completion time. | 2025-09-01 09:40:20.734 |
| output.results.video_url | String | Generated video URL (valid for 24 hours --- please download promptly). | https://xxx/1.mp4?Expires=xxx |
| usage.duration | Float | Video duration in seconds (used for per-second billing). | 10.23 |
| usage.video_count | Integer | Number of videos generated. | 1 |
| usage.SR | Integer | Video resolution tier. | 480 |
| usage.size | String | Video resolution. | "size": "640*480" |
| usage.fps | Integer | Video frame rate. | "fps": 16 |
| output.code | String | Error code (returned only on failure). | InvalidParameter |
| output.message | String | Error details (returned only on failure). | The request is missing required parameters or in a wrong format |
| request_id | String | Unique request ID. | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
Sample request
Replace 86ecf553-d340-4e21-xxxxxxxxx with your task ID.
HELPCODEESCAPE-curl
curl -X GET https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"Note
Task results are retained for 24 hours and then automatically purged.
Sample responses
Successful response
Save task results within 24 hours before automatic purging.
HELPCODEESCAPE-json
{
"output": {
"task_id": "bcae8761-f242-4775-a11e-xxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2025-09-01 09:37:27.468",
"scheduled_time": "2025-09-01 09:37:34.885",
"end_time": "2025-09-01 09:40:20.734",
"results": {
"video_url": "http://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/1d/xxx.mp4?Expires=xxxxxx"
}
},
"usage": {
"duration": 18.13,
"size": "512*640",
"fps": 16,
"video_count": 1,
"SR": 480
},
"request_id": "28cfedb1-cd60-9e0c-b920-xxxxxx"
}Failed response
HELPCODEESCAPE-json
{
"request_id": "8d49f522-f6a4-9eed-b322-xxxxxx",
"output": {
"task_id": "101ad32f-7653-4ae9-8f22-xxxxxx",
"task_status": "FAILED",
"submit_time": "2025-09-01 11:43:41.174",
"scheduled_time": "2025-09-01 11:43:48.937",
"end_time": "2025-09-01 11:43:49.802",
"code": "InvalidURL",
"message": "Required URL is missing or invalid, please check the request URL."
}
}Billing and rate limiting
For free quota and unit price, see Model invocation pricing.
For rate limits, see Wan series.
Billing details:
Billing covers output only (per video second successfully generated).
Failures do not incur charges or consume the free quota.
Error codes
If a model call fails and an error message is returned, see Error messages.