Face Swap · Image Editing
The thirteen-cent swap, and what it won't do
- image_url
- reference_image_url
- images
- task id
The one you'll actually run most
At $0.013 per image this is the default face swap of the three SpicyAPI ships - the same price as Head Swap, and twelve times cheaper than Plus or Pro. It transfers only the facial features from a reference photo onto a target image, and it deliberately keeps the target's head shape, hair, pose and background. That's the correct division of labour for the common job: you like the photo, you want a different face in it.
It's also the most controllable of the three. Where Pro hard-codes one good answer and Plus adds a skin-tone pass, v1 gives you a style selector, a multi-face mapping field and a seed - which makes it the right node when you're iterating rather than delivering.
How it works
Two image sockets go up, the pack uploads them, spicyapi/face-swap-v1/edit returns the swapped image, and you get a ComfyUI IMAGE plus a task id. Under the hood this is the ArcFace-embedding family of techniques - the same recognition backbone that sits under IP-Adapter FaceID, InstantID, PuLID and ReActor locally - delivered as a black box. Locally that stack means InsightFace plus a swapper and a pile of dependency archaeology; here it's two sockets and a cent and a bit.
Inputs
image_url (IMAGE) - the target. The face of the person in this image is the one replaced.
reference_image_url (IMAGE) - the reference face. Facial features are transferred from here onto the target.
style - realistic (default), beautify, lossless. Honest reading: realistic keeps natural skin tone and texture and is right almost always; beautify smooths and brightens, which is what you want for social output and what you'll curse if you wanted texture; lossless holds on to the most facial detail, and is the one to try when a swap looks slightly mushy.
face_mapping (JSON) - multi-person swaps. A list of objects with "reference_face_index" and "target_face_index", 0-based in detection order. Leave it empty to swap a single face. In practice you run a swap once, look at the result, and only reach for this when it picked the wrong person of four.
face_enhance (default off) - an extra sharpening/detail pass on the swapped face. Same trade as everywhere: useful on soft targets, texture-destroying on clean ones.
seed - fixed by default, with control after generate.
Outputs: images (IMAGE), task id (STRING).
Install
Manager → search SpicyAPI, or:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart; nothing else to do. No dependency install, no checkpoint download, no GPU - the pack's dependency list is empty and everything executes on SpicyAPI's servers. Needs Python 3.10+ and a ComfyUI with the V3 node API. Paste a key into Settings > SpicyAPI (or export SPICY_API_KEY), restart once so the node list mirrors your account, and set a Max cost per run ceiling.
What it won't do
- Change the head, hair or lighting. That's by design - and it's why Head Swap exists as a separate node at the same price. If the hair needs to match the new face, you want that one.
- Fix a skin-tone mismatch. A pale reference on a deeply tanned target can look pasted. That's exactly what Face Swap Plus is for, at $0.16.
- Read your mind about which face. With multiple people in frame, verify with the preview or use
face_mapping. - Guarantee a repeat. The seed helps; it isn't a promise of bit-identical pixels across provider updates.
- Make it legal. Likeness rights and the platform rules that follow them are a separate problem from the node, and there's no consent check built into any of these endpoints.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | Target image. The face of the person in this image is the one that gets replaced. | |
| reference_image_url | IMAGE | Reference face image. The facial features from this image are transferred onto the target. | |
| face_mapping | STRING | Multi-person swap: which face in the reference image goes onto which face in the target, one entry per face. Faces are numbered from 0 in detection order. Leave it out to swap a single face. JSON. A list of objects with "reference_face_index", "target_face_index". | |
| style | COMBO | realistic | Finish applied to the swapped face: realistic keeps natural skin tone and texture, beautify smooths and brightens the skin, lossless holds on to the most facial detail. |
| face_enhance | BOOLEAN | false | Run a face-enhancement pass on the swapped face for a sharper, more detailed result. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |