Browse ModelsHalf Moon AIHalf Moon AI Video Face Swap Multi

Half Moon Ai Video Face Swap Multi

Half Moon Ai Video Face Swap Multi

Playground

Try it on WavespeedAI!

Half-Moon AI Video Multi-Face Swap swaps multiple faces in a video based on gender matching. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Video Face Swap Multi

Video Face Swap Multi is an AI-powered face-swapping model that can transfer up to two faces onto a target video simultaneously. It uses gender-based matching to accurately assign each source face to the correct person, delivering smooth, temporally consistent multi-face swaps across every frame.


Why Choose This?

  • Multi-face video swap in one pass Swap up to two faces in a single video at once — no need to run separate jobs per face.

  • Gender-based face matching Specify the gender for each source face so the model accurately maps faces to the right people throughout the video.

  • Frame-by-frame consistency The swapped faces stay stable across all frames with minimal flicker or jitter, even during motion and camera changes.

  • Natural blending Skin tone, lighting, and shadows are dynamically matched per face and per frame for realistic results.

  • Built-in safety checker Optional safety filter to screen outputs for inappropriate content.


Parameters

ParameterRequiredDescription
source_face_1YesThe first face image to transfer (upload or public URL).
source_gender_1YesGender of the first source face (female / male). Used for matching.
source_face_2NoThe second face image to transfer (upload or public URL).
source_gender_2NoGender of the second source face (female / male). Used for matching.
target_videoYesThe video that will receive the swapped faces (upload or public URL).
Enable Safety CheckerNoToggle the built-in content safety filter (enabled by default).

How to Use

  1. Upload source_face_1 and select the matching source_gender_1.
  2. (Optional) Upload source_face_2 and select source_gender_2 to swap a second face.
  3. Upload the target video — a video containing one or two people.
  4. Run — the model matches each source face by gender and processes the video frame by frame.
  5. Download the output video.

Pricing

$0.03 per second of the target video.

Billing Rules

  • Billed by the duration of the target video in seconds

Examples

Video LengthCost
5s$0.15
10s$0.30
30s$0.90
60s$1.80

Best Use Cases

  • Group Video Edits — Swap multiple faces in couple or group videos in one step.
  • Content Creation — Create fun multi-face-swap video content for social media and entertainment.
  • Marketing & Advertising — Produce personalized video content featuring different face combinations.
  • Pre-visualization — Test different face pairings in video projects before full production.

Pro Tips

  • Use clear, well-lit source faces with minimal occlusion for the best results.
  • Make sure the gender selection matches each source face — incorrect gender assignment may cause faces to swap onto the wrong person.
  • For single-face video swaps, just provide source_face_1 and leave source_face_2 empty. Or use Video Face Swap for a simpler workflow.
  • Shorter clips process faster and cost less — trim to key segments when possible.

Notes

  • If you provide a URL instead of uploading locally, make sure the URL is publicly accessible. A successfully accessible image or video will display a preview in the interface.
  • The Safety Checker is enabled by default. Disable it only if you are confident your inputs and outputs comply with platform policies.
  • Please use this model responsibly and in compliance with applicable laws and platform policies.

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/half-moon-ai/video-face-swap-multi" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
    "source_gender_1": "female",
    "source_gender_2": "male"
}'

# 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
source_face_1stringYes--First source face image (mapped to faces matching source_gender_1).
source_gender_1stringYesfemalefemale, maleGender of source 1 face — target faces matching this gender will be swapped.
source_face_2stringNo--Second source face image (optional, mapped to faces matching source_gender_2).
source_gender_2stringNomalefemale, maleGender of source 2 face — required when source_face_2 is provided.
target_videostringYes--Target video to swap faces onto (max 25 min, 25 FPS cap; avi, m4v, mkv, mp4, mpeg, mov, mxf, webm, wmv).

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

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction, the ID of the prediction to get
data.modelstringModel ID used for the prediction
data.outputsstringArray of URLs to the generated video.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
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
© 2025 WaveSpeedAI. All rights reserved.