Muapi's video face swap API replaces a face throughout a video with a source photo, frame by frame — accurate expression transfer, lighting consistency, and no content filter on the output. One REST call, priced by video length, roughly $0.10/sec. Test it for free first with a sandbox key.
A video face swap API takes a source photo of a face and a target video, then replaces the face throughout every frame of that clip — preserving expression, lighting, and frame-by-frame consistency so the result reads as a natural clip rather than a shaky composite.
Muapi exposes this as a single endpoint, ai-video-face-swap: one API key, one request/poll flow, priced by video length (roughly $0.10/sec), no moderation filter applied to the output. Only need to swap a face in a single photo instead of a video? See the Image Face Swap API.
Takes an image_url (the source face) and a video_url (the target clip), and replaces the face across every frame.
Accepts a target_index — 0 swaps the largest detected face, 1 targets the next, for picking a specific face in a multi-person clip.
Accepts a target_gender filter (All/Female/Male) to control which faces in a multi-person clip get swapped.
Output isn't run through a moderation filter — uncensored by default, same as every other Muapi generation endpoint.
Combine a video face swap with Muapi's lipsync models to both replace the face and re-sync the mouth to new audio in one pipeline.
Create a key with is_test:true and every call returns a mock result instantly, at no cost, with no cap on call volume — swap to a real key when you're ready to go live.
ai-video-face-swap is the dedicated, cheapest option for a straight face-only swap. A couple of motion-transfer models can also replace who appears in a clip, at a higher cost, while additionally re-animating the character's full body to match the reference performance:
Kling copies motion from a reference performance onto a new character image; Wan 2.2 Animate replaces the subject in an existing real scene while preserving the original camera work and background — closer to a true swap-in-place. Want the whole performer recast instead of just motion-transferred? See Seedance Motion Control. Need the same face consistent across brand-new generated video, not swapped into an existing clip? See the AI Character Consistency API.
On Kling Motion Control or Wan 2.2 Animate, pass the new character image and the reference video, with a prompt like:
"Apply the motion, expression, and camera work from the reference video to this character image. Keep the original environment and background unchanged, and preserve the performance's timing exactly."
Video face swap generates a likeness-based clip of whoever appears in the source photo. Only submit photos of people who have agreed to be used this way — yourself, a hired model under a release, or a customer who explicitly opted in to a face-swap feature. Do not use someone else's likeness without their permission, and do not use this endpoint to impersonate a real person without consent. Muapi does not verify consent on your behalf — that responsibility sits with the API caller, consistent with the platform's general terms of use.
POST /api/v1/upload_file, or use any publicly reachable URL.POST /api/v1/ai-video-face-swap.GET /api/v1/predictions/{request_id}/result until status is completed, then download the output.curl -X POST https://api.muapi.ai/api/v1/ai-video-face-swap \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"image_url": "https://example.com/source-face.jpg",
"video_url": "https://example.com/target-clip.mp4"
}'import requests
response = requests.post(
"https://api.muapi.ai/api/v1/ai-video-face-swap",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"image_url": "https://example.com/source-face.jpg",
"video_url": "https://example.com/target-clip.mp4",
},
)
request_id = response.json()["request_id"]
result = requests.get(
f"https://api.muapi.ai/api/v1/predictions/{request_id}/result",
headers={"x-api-key": "YOUR_API_KEY"},
)
print(result.json())Muapi's video face swap API replaces a face throughout a video with a face from a source photo, frame by frame, via a single REST endpoint, ai-video-face-swap.
Priced by video length, roughly $0.10 per second in practice. Sandbox keys (is_test:true) are free and uncapped for testing — mock output only, no real charge.
No — the endpoint doesn't run output through a content filter, same as Muapi's other generation endpoints. Responsible, consented use is still on the API caller.
Yes — the endpoint accepts a target_index (0 = largest detected face, 1 = next largest) and a target_gender filter (All/Female/Male).
The target video must be under 10MB, resolution below 1280×720 (or 720×1280 portrait), and no more than 600 frames.
Yes — Seedance Motion Control recasts an entire performer (motion, camera work, and location preserved), a step beyond a face-only swap.
Only photos of people who consented to being used this way — yourself, a model under release, or an opted-in customer. Do not submit someone else's likeness without permission, and do not use this to impersonate a real person without consent.