Introduction
It moves the facial features from one image onto the person in another. Only the features travel: the target's hairstyle, hairline, head silhouette, pose, wardrobe, lighting and background all stay as they were, which is what makes the result sit inside the original photograph rather than on top of it.
Face Swap Pro is the precision tier of the Face Swap line. The engine locates the facial keypoints in both photos by itself and maps one set onto the other, and nothing runs over the result afterwards. The whole request is two image URLs — image_url for the photograph being changed, reference_image_url for the face — posted to popnow/face-swap-pro-v1/edit.
Key features
The engine maps the face by its keypoints
Pro is built for high-precision work. Rather than pasting a region across, it locates the facial keypoints in both photos and maps one set onto the other, which is what keeps eyes, nose and mouth landing where the target's own geometry puts them. On this endpoint the detection is automatic: you send two images and nothing else. No enhancement pass runs afterwards either, so pores, fine lines and grain survive and the face matches the sharpness of everything around it. That is also why a result can look less flattering than a filtered swap — accuracy and flattery are not the same goal.
Two image URLs and nothing else to get wrong
It is the only face swap endpoint in this catalogue that takes nothing but the two images: no prompt to phrase, no region to paint, no strength to tune and no seed to pin. That removes the whole class of failures which come from an ambiguous instruction, and it makes the endpoint trivially batchable, because a list of pairs goes through without a per-item decision. Unknown keys are rejected rather than ignored, so a misspelled field name fails at submit time instead of quietly falling back to a default. The one thing that does matter is which URL goes where: the two fields are not symmetrical, and swapping them is still a perfectly valid request with a completely different outcome.
The target photograph survives the swap
| Comes from the reference | Stays with the target |
|---|---|
| Eyes, nose, mouth, brows | Hairstyle, hairline, head silhouette |
| The proportions of the face itself | Pose, gaze, body, wardrobe |
| Skin detail inside the face region | Background, framing, lighting, grain |
There is no aspect ratio and no resolution setting here, because the frame is not being regenerated — one region of an existing photograph is replaced. That is what makes the endpoint usable on a plate you have already signed off: nothing outside the face is put back in play.
Request parameters
| Parameter | Required | Description |
|---|---|---|
face_enhance | No | Run a face-enhancement pass on the swapped face for a sharper, more detailed result. Default: false |
image_url | Yes | The picture to start from. |
reference_image_url | Yes | Reference face image. The facial features from this image are transferred onto the target. |
Pricing
Prices are in credits, the same credits you use on the website (1 credit = $0.01). The hold is taken when the task is accepted and settled to the actual charge when it finishes; failed tasks are refunded.
| Option | Credits per image | ≈ USD |
|---|---|---|
| Standard | 24 | $0.24 |
For an exact number before you run, send the same body to POST /jobs/quote.
Use cases
Editorial and campaign frames that will be printed
A smoothed face falls apart at print size: the skin reads as plastic next to a sharp garment and a sharp background. Keeping the original texture means the frame holds together when someone looks at it closely instead of at thumbnail size.
Recasting a plate you have already approved
The lighting, pose and set already work, and regenerating the whole frame would put all of that back in play. Move one face into the plate instead and everything you signed off on stays exactly where it was.
Consistent characters across a series
Generate the scenes with any model, then bring one face across all of them so the set reads as the same person. Hair and wardrobe stay with each target frame, so the variation you generated survives the pass.
Prompt guide & pro tips
There is no prompt, so the tuning happens before the call
Most image endpoints give you a sentence to rewrite when a result disappoints. This one does not: the request is two URLs, so the only variables are which photographs you send. That makes iteration easy to reason about — change one image, hold the other, and you know exactly what moved — but it also means a bad pair cannot be rescued by a better instruction.
Choosing the target and the reference
image_url is the photograph being changed; reference_image_url supplies the face. Both should show one clearly visible face, reasonably frontal, in focus and large enough in frame that the features are legible, as JPEG, PNG or WebP. Crop a group shot down to a single subject first. The single most useful thing you control is lighting direction: pick a reference lit from roughly the same side as the target, because the target's light is not changed by the swap and a mismatch reads as a seam along the jaw.
When the result is not what you wanted
| What you see | What to change first |
|---|---|
| A seam along the jaw or neck | Use a reference lit from the same direction |
| Features look soft or approximate | Use a reference where the face is larger and sharper |
| The wrong person changed | Crop the target down to one subject |
| The request failed outright | Check both URLs still return an image file |
| Less glossy than another swap tool | Expected — no retouch pass runs; apply your own afterwards |
Picking the right endpoint for the job
| What you need | Endpoint |
|---|---|
| Landmark accuracy and the original texture, no knobs | This endpoint |
| Tone matching and a choice of file format | Face Swap Plus |
| The plain swap with a seed, hair always left alone | Face Swap |
| The whole head, hair included | Head Swap |
| One face across a moving clip | Video Face Swap |
Running it as a batch
Because nothing is decided per item, a batch is a loop over pairs.
API quick start
Call the Face Swap Pro API in three steps
- Create an API key. Sign in to PopNow and create a key in the API console. Keys start with sk-popnow- and use the same credits as the website.
- Send the request. POST /jobs/createTask with model popnow/face-swap-pro-v1/edit and an input object that follows the parameter table. The response returns a task ID straight away.
- Get the result. Poll GET /jobs/recordInfo with the task ID, or pass a callBackUrl and we post the result to it. Download the output links when the task succeeds.
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-d '{
"model": "popnow/face-swap-pro-v1/edit",
"input": {
"image_url": "https://media.popnow.ai/influencer/examples/marco.webp",
"reference_image_url": "https://media.popnow.ai/influencer/examples/ava.webp"
}
}'
# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $POPNOW_API_KEY"Replace the prompt and any links with your own. The API tab has the response, polling and callback reference.
Face Swap Pro API questions
How much does the Face Swap Pro API cost?
Face Swap Pro costs 24 credits ($0.24) per image. Credits are the same as on the website (1 credit = $0.01), new accounts get 30 free credits, and failed tasks are refunded.
What is the model name for Face Swap Pro in the API?
Put popnow/face-swap-pro-v1/edit for Face Swap in the model field of POST /jobs/createTask.
Which image should go in image_url?
The one being changed. reference_image_url supplies the face. The two are not interchangeable, and swapping them is still a valid request with a completely different outcome, so no error will catch the mistake.
Is there a prompt or a mask?
No. The request is two image URLs. There is nothing to phrase and no region to paint, which removes an entire class of failures caused by an ambiguous instruction.
Why can I not pin a seed here?
The engine behind this endpoint does not take one, so exposing the field would mean printing a control that nothing can honour. When you need two runs over one pair to stay comparable, Face Swap and Face Swap Plus both accept a seed.
What do the two images need to look like?
One clearly visible face each, reasonably frontal, in focus and large enough in frame that the features are legible, as JPEG, PNG or WebP. Crop a group shot down to a single subject before sending. The most useful thing you control is lighting direction: a reference lit from roughly the same side as the target avoids a seam along the jaw, because the swap does not change the target's light.
Can I try Face Swap Pro without writing code?
Yes. The Playground runs Face Swap Pro on your PopNow credits, needs no API key, and shows the matching code for every run.
All Face Swap Pro models
Face Swap keeps the target's hair and accepts a seed; Face Swap Plus matches skin tone for you.
- Face Swap Pro APIPrecise face swap that keeps natural skin textureFrom 24 credits per image
- Face Swap Plus APIFace swap with automatic skin-tone matchingFrom 24 credits per image
- Face Swap APISwap just the face, keep hair, pose and backgroundFrom 2 credits per image
- Video Face Swap APICarry one face through every frame of a clipFrom 3.9 credits per second

