Wan 2.1 Mocha

Wan 2.1 Mocha

Playground

Try it on WavespeedAI!

MoCha is an end-to-end video character replacement system designed to swap a character in a source video with a new character (provided via reference images), without relying on explicit structural guidance (e.g., pose/depth maps) for every frame.

Features

MoCha

What is MoCha?

MoCha is an end-to-end video character replacement system designed to swap a character in a source video with a new character (provided via reference images), without relying on explicit structural guidance (e.g., pose/depth maps) for every frame.

Pricing

OutputPrice per 5sMax Length
480p$0.20120 s
720p$0.40120 s

Billing Rules

  • Standard Rate: $0.04 per second
  • HD (720p) Rate: $0.08 per second (Double the Standard Rate)
  • Minimum Charge: All videos are billed for a minimum of 5 seconds.
    • Standard: $0.20
    • HD (720p): $0.40
  • Billing Cap: To ensure predictable costs, billing is capped at a maximum of 120 seconds (2 minutes).

How to Use (MoCha)

  1. image – Upload a clear character photo. (Recommend using PNG and JPG formats, and avoid WEBP)
  2. video – Upload the motion clip (pose/expressions come from here).
  3. prompt (optional) – Brief rules, e.g., “preserve outfit; natural expression; no background changes.”
  4. resolution – Pick 480p or 720p.
  5. Generate – Wait a moment for results.
  6. Review & iterate – Fix a seed to reproduce; change seed for A/B variants.

Tips

  • Match composition & pose: Keep the reference image and target video aligned in composition, camera position, and human body pose to reduce failure rates.
  • Keep aspect ratios the same: Use the same aspect ratio for the input image and video for best results.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result


# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/wan-2.1/mocha" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
    "resolution": "480p",
    "seed": -1
}'

# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
imagestringYes-The image for generating the output.
videostringYes-The video for generating the output.
promptstringNo-The positive prompt for the generation.
resolutionstringNo480p480p, 720pThe resolution of the output video.
seedintegerNo-1-1 ~ 2147483647The random seed to use for the generation. -1 means a random seed will be used.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayArray of URLs to the generated content (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.has_nsfw_contentsarrayArray of boolean values indicating NSFW detection for each output
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

© 2025 WaveSpeedAI. All rights reserved.