popnow/face-swap-pro-v1/editFrom 24 credits per image

Face Swap Pro is the precision tier of the Face Swap line: it locates the facial keypoints in both photos and maps the face by them, and no enhancement pass runs over the result, so the original texture survives. The whole request is two image URLs — nothing to phrase and nothing to tune — and one image comes back per call, billed per output image.

Call it with the model name popnow/face-swap-pro-v1/edit on POST /jobs/createTask, from 24 credits per image ($0.24). New accounts get 30 free credits to try it in the Playground first.

  • Face Swap

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 referenceStays with the target
Eyes, nose, mouth, browsHairstyle, hairline, head silhouette
The proportions of the face itselfPose, gaze, body, wardrobe
Skin detail inside the face regionBackground, 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

ParameterRequiredDescription
face_enhanceNoRun a face-enhancement pass on the swapped face for a sharper, more detailed result. Default: false
image_urlYesThe picture to start from.
reference_image_urlYesReference 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.

OptionCredits per image≈ USD
Standard24$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 seeWhat to change first
A seam along the jaw or neckUse a reference lit from the same direction
Features look soft or approximateUse a reference where the face is larger and sharper
The wrong person changedCrop the target down to one subject
The request failed outrightCheck both URLs still return an image file
Less glossy than another swap toolExpected — no retouch pass runs; apply your own afterwards

Picking the right endpoint for the job

What you needEndpoint
Landmark accuracy and the original texture, no knobsThis endpoint
Tone matching and a choice of file formatFace Swap Plus
The plain swap with a seed, hair always left aloneFace Swap
The whole head, hair includedHead Swap
One face across a moving clipVideo 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

  1. 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.
  2. 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.
  3. 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.

More about Face Swap Pro