APIMODELSAPIMODELS
Документация API

apimodels.app

Docs/Wan 2.2 Animate API

Wan 2.2 Animate API

Wan 2.2 Animate: give it a character image and a reference video, and either drive the character with the motion in the video (animate) or swap the person in the video for your character (replace). The output is as long as the reference video, at 480p or 720p, billed per second of that video.

Try it in the browser on the model page · Need the whole scene kept and only the person swapped? See the Wan 3.0 guide

Authentication

Authorization: Bearer YOUR_API_KEY

Model & pricing

ResolutionPer second5-second reference10-second30-secondFrame
480p$0.0742$0.371$0.742$2.226832x480
720p (default)$0.154$0.77$1.54$4.621280x720

Billed on the length of the reference video, rounded up to whole seconds (a 3.5-second clip is billed as 4). The charge is fixed when the task is created — nothing is added afterwards. The frame follows the reference video; the sizes above are for a 16:9 reference. Failed requests are not charged.

Two modes

animate (default)Motion transfer: the output shows the character and background from your image, moving and emoting like the person in the reference video. Use it to make an illustration, game character or avatar dance, talk or gesture.
replaceCharacter replacement: the output keeps the scene, camera and motion of the reference video and only swaps the person for your character. Use it to put a virtual character into live footage or recast an existing clip.

Limits (read this first)

Both the character image and the reference video are requiredThe image takes a public URL or base64, at most 50MB; one person, facing forward, with a clear face works best. The video must be a public https URL (no base64, no login, no signed-expiry link), MP4, at most 200MB.
The output is as long as the reference videoThere is no duration parameter. In our test a 3.54-second reference produced a 3.54-second clip. The reference video may be at most 120 seconds; longer returns a 400.
Unreadable video length means no taskThe price depends on the reference video length, so it is read when the task is created. If it cannot be read (private link, not a video, expired) you get a 400 with the reason right away instead of a failure minutes later.
Resolution is 480p or 720p, default 720pOmitting resolution renders and bills at 720p — pass 480p explicitly to pay less. There is no 1080p tier.
The output carries the reference video audioIn our test the output kept the reference video sound (stereo AAC) at 24fps. A silent reference gives a silent output.
Generation takes about two minutes and upA 480p job on a 3.54-second reference took 110 seconds in our test; longer clips and 720p take longer. Design your polling around an async task.

Code examples

# ─── Animate: your character follows the motion in the reference video ───
curl -X POST https://api.apimodels.app/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan-2.2-animate",
    "image": "https://example.com/character.png",
    "video": "https://example.com/dance-template.mp4",
    "mode": "animate",
    "resolution": "480p"
  }'
# Response (async — a task is created):
# { "code": 200, "data": { "taskId": "clxxx", "state": "pending" } }


# ─── Replace: swap the person in the video for your character ───
curl -X POST https://api.apimodels.app/v1/video/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan-2.2-animate",
    "image": "https://example.com/character.png",
    "video": "https://example.com/interview.mp4",
    "mode": "replace",
    "resolution": "720p",
    "prompt": "keep the lighting of the original scene",
    "seed": 42
  }'


# ─── Poll for the result ──────────────────────────────────
curl "https://api.apimodels.app/v1/video/generations?task_id=TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
# { "code": 200, "data": { "state": "completed", "resultUrls": ["https://r2.apimodels.app/..."] } }

Request parameters

FieldRequiredTypeDescription
modelYesstringwan-2.2-animate
imageYesstringCharacter image: a public image URL or base64, at most 50MB. image_url is accepted too.
videoYesstringReference video: a public https MP4 URL, at most 120 seconds and 200MB. video_url is accepted too.
modeNostringanimate (default) or replace — see "Two modes" above.
resolutionNostring480p or 720p, default 720p.
promptNostringOptional style guidance such as lighting or how smooth the motion should be. Not required; the clip renders without it.
seedNonumberRandom seed (0 to 2147483647); random when omitted
callback_urlNostringWebhook URL called when the task completes

What it is for

Dance and choreography recreationOne character image follows any dance video. A 30-second 720p cover costs $4.62; 480p $2.226.
VTuber and avatar reactionsKeep a library of reference moves (wave, bow, jump) and generate the matching reaction when a tip or a comment fires; a 5-second 480p reaction is $0.371.
Recasting existing footagereplace mode keeps the shot, scene and motion and swaps the live person for a virtual character — turn real footage into a virtual one, or ship one clip in several character versions.
Digital humans and animated photosA user uploads a photo or an illustration, you pair it with a standard motion clip, and they get a moving, emoting version; the output keeps the reference audio, so a reference with speech gives a talking digital human.

Notes

  • Async: create a task for a taskId, then poll GET ?task_id= for the result
  • The output is an H.264 MP4 at 24fps; frame and length both follow the reference video
  • Same endpoint and key as wan-2.2-i2v-spicy and wan-2.7-i2v-spicy — only the model field changes
  • Result files are deleted after 30 days; download or re-host them in time
  • Charged only on success

FAQ

How much does Wan 2.2 Animate cost?

Per second of the reference video, rounded up to whole seconds: $0.0742 at 480p and $0.154 at 720p. A 5-second reference costs $0.371 or $0.77, a 30-second one $2.226 or $4.62. The charge is fixed when the task is created, both modes cost the same, and failed requests are not charged.

What is the difference between animate and replace?

animate keeps your image — its character and background — and drives it with the motion and expressions from the reference video. replace keeps the reference video — its scene, camera and motion — and swaps the person in it for your character. animate is the default.

How long is the output and what does the reference video need?

The output is exactly as long as the reference video; there is no duration parameter. The video must be a public https MP4 URL of at most 120 seconds and 200MB. Its length is read when the task is created, so an unreadable or private link returns a 400 immediately instead of failing minutes later.

Does the output have sound, and what image works best?

The output keeps the audio track of the reference video (stereo AAC in our test) at 24fps; a silent reference gives a silent clip. For the character image use one person facing forward with a clear, unobstructed face, as a public URL or base64 of at most 50MB.