Animate a character image by transferring actions from a reference video.
- Feature summary: Transfer actions and expressions from a reference video to a character image to generate an animated video.
- Scenarios: Replicate dances, complex body movements, and facial expressions from film and television performances. A low-cost alternative to motion capture.
Model effects
The wan2.2-animate-move model supports two service modes: standard mode wan-std and professional mode wan-pro, which differ in output quality and pricing. For more information, see Wanx-Image-to-Motion.
| Character image | Reference video | Output video (standard modewan-std) | Output video (professional modewan-pro) |
|---|---|---|---|
![]() |
Prerequisites
Obtain an API key and export the API key as an environment variable.
HTTP
Video generation uses asynchronous calls. The process has two steps: create a task, then poll for results.
Step 1: Create a task and get the task ID
Singapore: POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
Replace {WorkspaceId} with your actual Workspace ID.
Beijing: POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
- After the task is created, use the returned
task_idto query the result. Thetask_idis valid for 24 hours. Do not create duplicate tasks. Instead, use polling to retrieve the result. - For guidance for beginners, see Call APIs with Postman or cURL.
Request parametersRequest headersContent-Typestring (Required)The content type of the request. Must be application/json.Authorization string (Required)Authenticates the request with a Model Studio API key. Example: Bearer sk-xxxx.X-DashScope-Async string (Required)Enables asynchronous processing. HTTP requests support only asynchronous calls. Must be enable.Request bodymodelstring (Required)The model name. Set this parameter to wan2.2-animate-move.input object (Required)The input parameters. Contains the following fields:
Properties image_url string (Required)A publicly accessible HTTP or HTTPS URL of the character image. URLs containing non-ASCII characters must be URL-encoded.
string (Required)A publicly accessible HTTP or HTTPS URL of the reference video. URLs containing non-ASCII characters must be URL-encoded.Recommendation: For better results, use a reference video with higher resolution and frame rate.
bool (Optional)Whether to add a "Generated by Qwen AI" watermark to the bottom-right corner of the output video.
object (Required)
Properties check_image bool (Optional)Whether to validate the input image before processing.
string (Required)The service mode. Valid values:
|
The following is the Singapore region URL. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region. |
Response parametersoutputobjectThe task output.
Properties task_id stringThe task ID. Valid for queries for 24 hours.task_status stringThe status of the task.
Enumeration values
stringUnique request identifier for tracing and troubleshooting.message stringDetailed error message. Returned only for failed requests. See Error codes.code stringError code. Returned only for failed requests. See Error codes. |
Save the task_id to query the task status and result. |
Step 2: Query the result by task ID
- Singapore
- China (Beijing)
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}When calling, replace {WorkspaceId} with your actual workspace ID.- Polling recommendation: Video generation takes several minutes. Use a polling mechanism with a reasonable interval, such as 15 seconds.
- Task state transition: PENDING → RUNNING → SUCCEEDED or FAILED.
- Result link: After a task succeeds, a video URL valid for 24 hours is returned. Download and save the video to permanent storage, such as OSS.
task_idvalidity: 24 hours. After this period, queries return the task status asUNKNOWN.
Request parametersRequest headersAuthorizationstring (Required)Authenticates the request with a Model Studio API key. Example: Bearer sk-xxxx.URL path parameterstask_idstring (Required)The ID of the task. |
Replace 0385dc79-5ff8-4d82-bcb6-xxxxxx with your actual task_id.The following is the Singapore region URL. Replace {WorkspaceId} with your Bailian workspace ID. URLs vary by region. |
Response parametersoutputobjectThe task output.
Properties task_id stringThe task ID. Valid for queries for 24 hours.task_status stringThe status of the task.
Enumeration values
stringThe time when the task was submitted. The time is in UTC+8 and the format is YYYY-MM-DD HH:mm:ss.SSS.scheduled_time stringThe time when the task was executed. The time is in UTC+8 and the format is YYYY-MM-DD HH:mm:ss.SSS.end_time stringThe time when the task was completed. The time is in UTC+8 and the format is YYYY-MM-DD HH:mm:ss.SSS.results object
Properties video_url stringURL of the generated video. Returned only when task_status is SUCCEEDED.Valid for 24 hours. The video is in MP4 format with H.264 encoding.stringError code. Returned only for failed requests. See Error codes.message stringDetailed error message. Returned only for failed requests. See Error codes.objectOutput statistics. Only successful results are counted.
Properties video_duration floatThe duration of the generated video, in seconds.video_ratio stringThe service mode used for this request. Enumeration values: standard and pro.wan-std returns standard. wan-pro returns pro.stringUnique request identifier for tracing and troubleshooting. |
Video URLs are valid for only 24 hours and then automatically purged. Save generated videos promptly. |
Limitations
Data validity: Task IDs and video URLs expire after 24 hours. Download videos promptly.
Content moderation: All inputs and outputs are automatically moderated. Non-compliant content returns an IPInfringementSuspect or DataInspectionFailed error. For more information, see Error codes.
Billing and rate limiting
- For free quota and pricing, see Wanx-Image-to-Motion.
- For rate limits, see Wan series.
-
Billing details:
- Only output is billed, based on video duration in seconds.
- Failed calls are free and do not consume the new user free quota.
Error codes
If a model call fails and returns an error message, see Error codes.
FAQ
How can I improve output video quality?
- Ensure the character occupies a similar portion of the frame in both the input image and the reference video.
- Keep body proportions consistent between the image and the video.
- Use high-definition source materials. Blurry images or low-frame-rate videos reduce output quality.
How can I convert a temporary video link to a permanent one?
The link cannot be converted directly. Download the video from your backend and upload it to permanent object storage (such as OSS) to get a permanent URL.
Example code: Download the video to a local device
Example code: Download the video to a local device
