face_swap_video
Swap a face in a video with a face from a photo, preserving original motion and scene. Requires user confirmation before submission.
Instructions
Swap a face in a target VIDEO with a source face from a photo, keeping the original motion + scene (powered by fal-ai/pixverse). ASYNC — returns a job_id; the caller MUST poll check_job until status="completed". Cost is duration-based (per second of the target clip), roughly 500-2000 tokens. TWO-STEP FLOW (confirmation REQUIRED, like generate_video — this is an expensive job): STEP 1 (preview) call WITHOUT confirmed → returns the estimated cost, submits nothing, reserves nothing. STEP 2 (submit) call again with confirmed=true → submits the job and reserves tokens. IMPORTANT: the model has NO face-only mode and takes no text prompt — it transfers the whole person from the source photo, so for a clean result the FACE PHOTO must be a head-and-shoulders portrait. A full-body source photo will drag the clothing into the result. Tell the user this if their source looks full-body. Use for "put my face in this video", "face-swap this clip", "replace the actor's face", reaction/meme videos, etc.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed | No | Set to true ONLY after the user has approved the spend. Without it (or false), the tool returns a preview card with estimated cost and does NOT submit. | |
| face_image_url | Yes | Source face. A URL (external https:// or an avots-hosted /v1/files/<uuid>) of a close-up head-and-shoulders portrait. OR reuse a SAVED avatar: pass "avatar:<id>" or "avatar:<name>" (see list_avatars) to use that stored face. | |
| target_video_url | Yes | URL of the target video whose face will be replaced. Accepts an external https:// URL or an avots-hosted /v1/files/<uuid> URL. |