All Products
Search
Document Center

Alibaba Cloud Model Studio:Wan - image to animation API reference

Last Updated:Dec 12, 2025

The Wan image-to-animation model generates a video of a moving person based on a character image and a reference video.

  • Feature summary: This feature transfers the actions and expressions from a character in a video to a character in an image to animate the character.

  • Scenarios: Replicate dances, complex body movements, and facial expressions from film and television performances. This model provides a low-cost alternative to motion capture.

Examples

wan2.2-animate-move offers two service modes: standard mode (wan-std) and professional mode (wan-pro). The modes differ in their effects and billing. For more information, see Billing and rate limiting.

Character image

Reference video

Output video (standard mode wan-std)

Output video (professional mode wan-pro)

move_input_image

HTTP

You must obtain an API key and set the API key as an environment variable.

Important

The Beijing and Singapore regions have separate API keys and request endpoints. Do not use them interchangeably. Cross-region calls cause authentication failures or service errors.

Singapore: POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis

Beijing: POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis

Because video generation is time-consuming, the HTTP API uses an asynchronous mode. The call process consists of two steps:

  1. Create a task and obtain the task ID: Send a request to create a task. The response contains a task_id.

  2. Query the result using the task ID: Use the task_id to poll the task status until the task is complete and you retrieve the video URL.

Step 1: Create a task and get the task ID

Note
  • After the task is created, use the returned task_id to query the result. The task_id is valid for 24 hours. Do not create duplicate tasks. Use polling to retrieve the result.

Request parameters

Image to animation

The base_url is for the Singapore region. To use a model in the Beijing region, replace the base_url with the following: https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis

curl --location 'https://dashscope-intl.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-animate-move",
    "input": {
        "image_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250919/adsyrp/move_input_image.jpeg",
        "video_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250919/kaakcn/move_input_video.mp4"
    },
    "parameters": {
        "mode": "wan-std"
    }
  }'

Headers

Content-Type string (Required)

The content type of the request. Set this parameter to application/json.

Authorization string (Required)

The identity authentication credentials for the request. This API uses an Model Studio API key for identity authentication. Example: Bearer sk-xxxx.

X-DashScope-Async string (Required)

The asynchronous processing configuration parameter. HTTP requests support only asynchronous processing. You must set this parameter to enable.

Important

If this request header is missing, the error message "current user api does not support synchronous calls" is returned.

Request body

model string (Required)

The model name. This parameter must be set to wan2.2-animate-move.

input object (Required)

The input parameter object. It contains the following fields:

Properties

image_url string (Required)

An HTTP or HTTPS URL of the input image that is accessible over the Internet. The URL cannot contain non-ASCII characters, such as Chinese characters. If the URL contains non-ASCII characters, you must encode the URL before you use it.

  • Format: JPG, JPEG, PNG, BMP, or WEBP.

  • Dimensions: The width and height must both be in the range of [200, 4096] pixels. The aspect ratio must be between 1:3 and 3:1.

  • File size: No more than 5 MB.

  • Content: The image must contain only one person who is facing the camera. The face must be complete and not obstructed. The person must occupy a moderate portion of the frame, not too large or too small.

  • Example: https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250919/adsyrp/move_input_image.jpeg

video_url string (Required)

An HTTP or HTTPS URL of the input video that is accessible over the Internet. The URL cannot contain non-ASCII characters, such as Chinese characters. If the URL contains non-ASCII characters, you must encode the URL before you use it.

Recommendation: To improve the quality of the generated video, use a reference video that has a higher resolution and frame rate.

  • Format: MP4, AVI, or MOV.

  • Duration: 2 s to 30 s.

  • Dimensions: The width and height must both be in the range of [200, 2048] pixels. The aspect ratio must be between 1:3 and 3:1.

  • File size: No more than 200 MB.

  • Content: The video must contain only one person who is facing the camera. The face must be complete and not obstructed. The person must occupy a moderate portion of the frame, not too large or too small.

  • Example: https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250919/kaakcn/move_input_video.mp4

parameters object (Required)

Properties

check_image bool (Optional)

Specifies whether to perform a check on the input image.

  • true: (Default) The API checks the input image.

  • false: Skips the check and processes the image directly.

mode string (Required)

The model service mode. The following two modes are supported:

  • wan-std: Standard mode. This mode offers fast generation and is cost-effective. It is suitable for quick previews and basic animation scenarios.

  • wan-pro: Professional mode. This mode provides smoother animation and better results, but with increased processing time and cost.

For more information, see Examples and Billing and rate limiting.

Response parameters

Successful response

Save the task_id to query the task status and result.

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

Error response

The task creation failed. For more information, see Error messages to resolve the issue.

{
    "code":"InvalidApiKey",
    "message":"Invalid API-key provided.",
    "request_id":"fb53c4ec-1c12-4fc4-a580-xxxxxx"
}

output object

The output information of the task.

Properties

task_id string

The task ID. The query is valid for 24 hours.

task_status string

The task status.

Enumeration

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: The task does not exist or its status cannot be determined.

request_id string

The unique request ID. You can use this ID to trace and troubleshoot issues.

message string

The detailed information about a failed request. This parameter is not returned if the request is successful. For more information, see Error messages.

code string

The error code for a failed request. This parameter is not returned if the request is successful. For more information, see Error messages.

Step 2: Query the result by task ID

Singapore region: GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}

Beijing region: GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

Note
  • Polling suggestion: Video generation takes several minutes. Use a polling mechanism and set a reasonable query interval, such as 15 seconds, to retrieve the result.

  • Task status transition: PENDING → RUNNING → SUCCEEDED or FAILED.

  • Result link: After the task is successful, a video link is returned. The link is valid for 24 hours. After you retrieve the link, immediately download and save the video to a permanent storage service, such as Object Storage Service.

  • task_id validity: 24 hours. After this period, you cannot query the result, and the API returns a task status of UNKNOWN.

Request parameters

Query task result

Replace 0385dc79-5ff8-4d82-bcb6-xxxxxx with your actual task_id.

The base_url is for the Singapore region. If you use a model in the Beijing region, replace base_url with: https://dashscope.aliyuncs.com/api/v1/tasks/0385dc79-5ff8-4d82-bcb6-xxxxxx
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/0385dc79-5ff8-4d82-bcb6-xxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Headers

Authorization string (Required)

The identity authentication credentials for the request. This API uses an Model Studio API key for identity authentication. Example: Bearer sk-xxxx.

URL path parameters

task_id string (Required)

The task ID.

Response parameters

Task successful

Video URLs are retained for only 24 hours and are automatically purged after this period. You must save the generated videos promptly.

{
    "request_id": "a67f8716-18ef-447c-a286-xxxxxx",
    "output": {
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-18 15:32:00.105",
        "scheduled_time": "2025-09-18 15:32:15.066",
        "end_time": "2025-09-18 15:34:41.898",
        "results": {
            "video_url": "http://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxxxx.mp4?Expires=xxxxxx"
        }
    },
    "usage": {
        "video_duration": 5.2,
        "video_ratio": "standard"
    }
}

Task failed

If a task fails, task_status is set to FAILED, and an error code and message are provided. For more information, see Error messages to resolve the issue.

{
    "request_id": "daad9007-6acd-9fb3-a6bc-xxxxxx",
    "output": {
        "task_id": "fe8aa114-d9f1-4f76-b598-xxxxxx",
        "task_status": "FAILED",
        "code": "InternalError",
        "message": "xxxxxx"
    }
}

output object

The output information of the task.

Properties

task_id string

The task ID. The query is valid for 24 hours.

task_status string

The task status.

Enumeration

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: The task does not exist or its status cannot be determined.

submit_time string

The time when the task was submitted. The time is in the UTC+8 time zone. The format is YYYY-MM-DD HH:mm:ss.SSS.

scheduled_time string

The time when the task started running. The time is in the UTC+8 time zone. The format is YYYY-MM-DD HH:mm:ss.SSS.

end_time string

The time when the task was completed. The time is in the UTC+8 time zone. The format is YYYY-MM-DD HH:mm:ss.SSS.

results object

Properties

video_url string

The video URL. This parameter is returned only if task_status is SUCCEEDED.

The link is valid for 24 hours. You can use this URL to download the video. The video is in MP4 format with H.264 encoding.

code string

The error code for a failed request. This parameter is not returned if the request is successful. For more information, see Error messages.

message string

The detailed information about a failed request. This parameter is not returned if the request is successful. For more information, see Error messages.

usage object

The statistics about the output. Only successful results are counted.

Properties

video_duration float

The duration of the video generated for this request, in seconds.

video_ratio string

The service mode selected for this video request. Enumeration values: standard and pro.

If you select the standard mode (wan-std), the value is standard. If you select the professional mode (wan-pro), the value is pro.

request_id string

The unique request ID. You can use this ID to trace and troubleshoot issues.

Limitations

Data validity: The task_id and video URL are valid for only 24 hours. After they expire, you can no longer query the task or download the video. We recommend that you download the video to your local device promptly.

Content Moderation: Both input and output content are subject to Content Moderation. Requests that contain non-compliant content return an "IPInfringementSuspect" or "DataInspectionFailed" error. For more information, see Error messages.

Network access configuration: The video links are stored in Alibaba Cloud OSS. If your business system cannot access external OSS links because of security policies, you must add the following OSS domain names to your network access whitelist.

# OSS domain name list
dashscope-result-bj.oss-cn-beijing.aliyuncs.com
dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com
dashscope-result-sh.oss-cn-shanghai.aliyuncs.com
dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com
dashscope-result-zjk.oss-cn-zhangjiakou.aliyuncs.com
dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com
dashscope-result-hy.oss-cn-heyuan.aliyuncs.com
dashscope-result-cd.oss-cn-chengdu.aliyuncs.com
dashscope-result-gz.oss-cn-guangzhou.aliyuncs.com
dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com

Billing and rate limiting

wan2.2-animate-move offers two service modes, standard mode (wan-std) and professional mode (wan-pro), to meet the needs for image-to-animation effects in different scenarios.

International (Singapore)

Model

Service

Description

Rate limiting (shared by Alibaba Cloud account and RAM users)

Unit price

Free quota (View)

RPS limit for task submission API

Number of concurrent tasks

wan2.2-animate-move

Standard mode wan-std

Fast generation speed. Meets basic needs such as simple animation demos. Cost-effective.

5

1

$0.12/second

50 seconds shared by both modes

Professional mode wan-pro

High animation smoothness. Natural transitions for actions and expressions. The effect is closer to a real video.

$0.18/second

Mainland China (Beijing)

Model

Service

Description

Rate limiting (shared by Alibaba Cloud account and RAM users)

Unit price

Free quota (View)

RPS limit for task submission API

Number of concurrent tasks

wan2.2-animate-move

Standard mode wan-std

Fast generation speed. Meets basic needs such as simple animation demos. Cost-effective.

5

1

$0.06/second

No free quota

Professional mode wan-pro

High animation smoothness. Natural transitions for actions and expressions. The effect is closer to a real video.

$0.09/second

Billing rules

  • Billing method: This service uses the pay-as-you-go billing method. You are charged based on the duration (in seconds) of the successfully generated video. The billable duration is the value of the usage.video_duration field in the response for a successful task.

    Click to view a billing example

    Fees are calculated after the free quota is exhausted. The formula is: Total cost = Actual video duration (in seconds) × Unit price of the selected service mode.

    Assume that you call a model in the Singapore region to generate a video, the usage.video_duration returned for the successful task is 5.2 seconds, and you selected the standard mode (wan-std).

    The cost is calculated as follows: 5.2 seconds × $0.12/second = $0.624.

    Note: The final billable duration is the value of the usage.video_duration field in the response for a successful task.

  • Offset order: The free quota is applied first. After the free quota is exhausted, the pay-as-you-go method is used by default. You can enable the Free quota only feature to prevent extra charges after your free quota is exhausted. For more information, see Free quota for new users.

  • No charge for failed calls: If a model call fails or a processing error occurs, no fees are charged, and your free quota is not consumed.

Rate limiting: The total request frequency limit for an Alibaba Cloud account and its RAM users is 5 requests per second. A maximum of 1 task can be processed at a time. New tasks that exceed this limit are added to a queue. For more information about model throttling rules and FAQs, see Rate limits.

Error codes

If a model call fails and an error message is returned, see Error messages to resolve the issue.

FAQ

Q: How can I view model usage?

A: Model calling information is subject to an hourly delay. About one hour after a model is called, you can go to the Model Observation (Singapore or Beijing) page to view metrics such as call volume, number of calls, and success rate. For more information, see How do I view model call records?

Q: How can I optimize the quality of the generated video?

A: Consider the following recommendations:

  1. Make sure the person occupies a similar portion of the frame in both the input image and the reference video.

  2. Try to keep the body proportions of the person consistent between the image and the video.

  3. Use high-definition source materials. Avoid blurry images or low-frame-rate videos to ensure accurate detail recognition.

Q: How can I convert a temporary video link to a permanent one?

A: You cannot convert the link directly. The correct procedure is to have your backend service download the video file using the URL and then upload it to a permanent object storage service, such as Alibaba Cloud OSS, to generate a new, permanent access link.

Example code: Download the video to a local device

import requests

def download_and_save_video(video_url, save_path):
    try:
        response = requests.get(video_url, stream=True, timeout=300) # Set timeout
        response.raise_for_status() # If the HTTP status code is not 200, raise an exception
        with open(save_path, 'wb') as f:
            for chunk in response.iter_content(chunk_size=8192):
                f.write(chunk)
        print(f"Video downloaded successfully to: {save_path}")
        # You can add the logic to upload to permanent storage here
    except requests.exceptions.RequestException as e:
        print(f"Failed to download video: {e}")

if __name__ == '__main__':
    video_url = "http://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxxx"
    save_path = "video.mp4"
    download_and_save_video(video_url, save_path)

Q: Can the returned video link be played directly in a browser?

A: This is not recommended because the link expires after 24 hours. The best practice is to have your backend download and save the video, and then use a permanent link for playback.