Skip to main content

Video Face Swap by SpicyAPI carries the facial features from one reference photo onto the person in a video clip through every frame, keeping their hair, movement, framing and background. Send a video URL and a face image; a style sets the finish.

From $0.026/s

Workbench

Input

Video editing
1/1

Drop a video here, or browse · 1 file · Max 90 MB · MP4

  • 1
1 / 1 files
The clip being changed. This person's hair, head shape, movement, wardrobe and the whole scene are preserved — only their facial features are replaced. It has to be a direct link to the video file itself — a page that plays the video hands us HTML instead, the input check reads no duration from it, and the call fails with the charge refunded. Uploading the file is the most reliable route. at least 1 characters
1/1

Drop files or media links, paste, or browse · 1 file · Max 10 MB · JPG · PNG · WEBP

  • 1
1 / 1 files
A still image supplying the facial features. Only the face is taken, not the hair or head shape. Pick one lit from roughly the same direction as the clip. at least 1 characters
Face mapping0/10
For clips with several people: list which face in the reference goes onto which face in the video, one pair per entry, with faces numbered from 0 in detection order. Leave it out to swap a single face. It does not change the price. at most 10 items
Enhance face
Runs a face-enhancement pass on the swapped face for a higher-resolution face. Off by default. It does not change the price.
Style
RealisticBeautifyLossless
realistic (default) keeps natural skin tone and texture; beautify smooths and brightens the skin; lossless keeps the most facial detail from the reference. Try realistic first.
Safety checkerOff

SpicyAPI does not run a safety checker on this model. Your prompt and media go to the model as written, and the model itself decides what comes back.

Checking your account before enabling submission and pricing.

Output

Ready for a new run
Example result

Related models and next tasks

Missing the model you need?

Tell us what to add and where you would use it. Requests go to the people who decide what gets onboarded next.

Two file URLs and a closed schema, billed once per call

The Video Face Swap API takes an MP4 (video_url) and one reference photo (reference_image_url), then returns the same footage with the reference face carried through every frame. Only three keys are defined, the optional style being the third, and the request body rejects anything else. There is no resolution or aspect_ratio to choose: the returned clip keeps the framing and running length of the file you sent, and every call is billed as one request.

Open the playground
Two file URLs and a closed schema, billed once per call
Required fields
video_url and reference_image_url, both URL strings
Optional field
style, set to realistic (default), beautify or lossless
Accepted formats
MP4 for the clip, JPEG, PNG or WebP for the reference
Output shape
Inherited from the source clip; no resolution or aspect_ratio field
Task window
1,800 seconds of processing per submitted task
Billing
One request per call, with no per-second component
Task window
The ceiling is on processing time, not on clip lengthNothing in the schema caps how long the footage behind video_url can run, and there is no duration field to set. What bounds a long clip is the 1,800 seconds a task has to reach a terminal state, together with processing time that grows as the footage gets longer and larger.
Economics
One clip, one charge, whatever its running timeBilling is per request on a single price tier, so a short test cut and a long interview move the same line on the invoice. There is no per-second component to model in advance, so sizing a batch comes down to how many requests it contains.
Schema
Two file fields and one optional finish, nothing elseThe contract is video_url, reference_image_url and style, with no prompt field, no mask and no seed anywhere in the schema. A result that misses is therefore diagnosed by looking at the two files that went in, never by rewording the request.

What the Video Face Swap API does well

A closed body catches copied fields

A closed body catches copied fields

additionalProperties is false here, so the endpoint answers with a validation error when a request carries a key it does not define. Teams arriving from a video-generation endpoint tend to bring resolution, duration_seconds or prompt along out of habit, and those come back as errors before a task exists; nothing is dropped quietly on the way through.

Any MP4 works, whatever produced it

Any MP4 works, whatever produced it

video_url carries no requirement that the clip came from a generative model. A phone recording, a licensed stock shot, a screen capture or an archived master all pass through the same field, as long as the shot holds a single subject whose face stays readable for most of its length.

  • style is the only finish control

    Beyond the two file URLs, style is the sole optional input, and changing it changes nothing about how the request is assembled. realistic is the default; beautify and lossless put a different finish on the swapped face. Comparing all three on one pairing means sending the same body three times with a single value edited.

  • The source clip decides the output shape

    There is no resolution ladder and no aspect_ratio switch to get wrong. A vertical clip comes back vertical at its own pixel dimensions, and the running length is the one you sent, so the delivery format is settled by the file itself, and no parameter can drift out of step with it.

  • One video comes back per call

    A finished task carries exactly one video asset, served from platform storage, with no count or batch field to ask for more. The reference photo is read and nothing further: it is not cropped, re-encoded or handed back, so each call leaves a single new file to store on your side.

  • Asynchronous from the first call

    Every request creates a task instead of blocking on a response, so the integration is submit, keep the task ID, poll until the state settles, then fetch the result. The 1,800-second window applies per task, and processing time tracks the length and resolution of the clip, so short cuts settle sooner than long ones.

Who Video Face Swap is for

  • A post-process step that sits after any renderer

    Pipeline engineers

    A post-process step that sits after any renderer

    Because video_url accepts any MP4, this endpoint drops in behind a generative video model, a screen recorder or a camera export without branching on which one wrote the file. The call site stays identical across all of them: two URLs, an optional style, one task to poll.

  • Queue depth matters more than clip length

    Batch and scheduling teams

    Queue depth matters more than clip length

    Each call is one request on the invoice and one task with its own 1,800-second window, so queue planning turns on how many jobs are in flight, not on their combined runtime. Every task is polled by its own ID, which keeps the loop independent of how long any single clip takes to settle.

  • Material shot long before this pass still qualifies

    Teams with an existing footage library

    Material shot long before this pass still qualifies

    Archived masters, licensed stock and phone recordings all enter through the same video_url field, with no preparation beyond having the file as MP4. A take whose lighting and camera move were signed off keeps both, because the facial features are the only thing the endpoint replaces.

  • A generated face avoids booking a second likeness

    Studios working with synthetic talent

    A generated face avoids booking a second likeness

    reference_image_url does not care whether the face in it belongs to a real person, so a face generated elsewhere can carry a whole series without a second real likeness entering the project. The authorization question then narrows to the footage, which still has to be cleared.

How to call the Video Face Swap API

  1. Put both files where the endpoint can fetch them

    video_url and reference_image_url are URL strings the endpoint reads on its own, not file parts attached to the call. The clip has to be MP4; the reference photo can be JPEG, PNG or WebP.

  2. Build the body from the three defined keys

    Send video_url, reference_image_url and, when the default finish is wrong, style. Any other key fails validation because additionalProperties is false, so strip fields carried over from a text-to-video payload before submitting.

  3. Prove the pairing on a short cut first

    Trim a few seconds out of the target footage and run that before the whole file. Processing time grows with length and resolution, so a reference photo that does not hold up is faster to catch on a short cut.

  4. Submit, keep the task ID, then poll

    The call returns a task rather than a finished video. Store the returned ID and poll it until the state settles or the 1,800-second window closes, then fetch the video from platform storage.

  5. Re-send with the full clip once it reads correctly

    Resubmit the same body with the complete file, changing nothing but video_url, so the reference photo and style value that produced the approved test are the ones that produce the final render.

Video Face Swap worked examples

  • A product walkthrough recast for a second presenter

    A screen-recorded walkthrough with one presenter on camera becomes a second, consented presenter's version. The original recording goes in video_url, the new presenter's headshot in reference_image_url, and the default realistic finish keeps skin tone close to the rest of the shot.

  • A vertical phone clip that comes back vertical

    A 9:16 recording made on a phone runs through unchanged in shape, because there is no aspect_ratio field to override what the file already is. What returns is the same framing and the same running length, with the face as the only difference between the two files.

  • A ten-second trim before a long render

    A short cut from a long training video confirms that the reference photo holds up while the subject turns and moves, before the full file is submitted. If the pairing is wrong, the retry costs a few seconds of processing instead of the whole clip's worth.

Video Face Swap API questions

With no prompt to write, a run is decided entirely by the two files. Choose a reference photo where the face is unobstructed, close to front-on and evenly lit, and a cut where that person stays large in the frame. Matching the lighting direction between the photo and the footage does more for the result than any field in this schema. Check the pairing on a few seconds, then send the full clip and change style only if the default finish is wrong.

Models in this series4

Video models1

  • Video Face SwapCurrentVideo editing$0.026per output second