Superside Image Retouch
One-click skin retouch without the prompt engineering — fal's retouch model, wired in
- image
- image
- info
This is the node you reach for when a beauty shot comes back with a blemish, a texture you don't like, or skin that's just a little too "generated" and you want it cleaned up with zero prompt writing. Superside Image Retouch calls fal.ai's image-editing retouch model (fal-ai/image-editing/retouch) and there's genuinely nothing to describe - connect an image, paste your key, run it. No prompt input exists, by design.
That's the appeal and it's also the honest boundary. This is a hosted model doing a specific job: clean up skin, blemishes, and minor imperfections. It is not a general image editor, and it's not your local pipeline - every call costs fal credits and your image is processed on fal's servers. For a batch of portrait frames that just need the same cleanup, that trade is usually worth it.
The inputs that matter
image and api_key are all you strictly need. The rest are three knobs plus two switches, and you'll mostly leave them alone:
lora_scale(default 1.0, 0–2) - strength of the retouch LoRA baked into the model. This is the "how much retouch" dial: down toward 0.5 for subtle, up past 1.5 for an aggressively cleaned face. The author's tooltip says it plainly: lower = subtler, higher = stronger.guidance_scale(default 3.5, CFG) - how hard the model follows its retouch objective. Higher = more pronounced effect. The default is already sane; you'll nudge this mostly when a result looks overworked.num_inference_steps(default 30) - more steps can be cleaner, just slower. There's a real diminishing-returns wall here, so don't chase 60.seed(default -1 = random) - set it if you need a reproducible retouch run.enable_safety_checker(on by default) andsync_mode- leave both alone until you have a reason not to.
Two outputs: the retouched image (IMAGE), and info (STRING) which carries the result URL - useful for auditing which fal call produced a given frame.
How it works
Standard Superside/fal plumbing: the node uploads your image, calls the retouch endpoint with your settings, and downloads the result back as a tensor. One call, one image. Nothing runs on your GPU, which is the point - this is the "no local VRAM / the model isn't on my machine" branch of the API-node decision tree.
Installing it
It ships with the Superside pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Superside/comfyui-superside-nodes
pip install -r requirements.txt
Restart ComfyUI and look under Superside. You need a fal.ai key in the api_key widget (no config file - the key lives in the node; a blank key falls back to a FAL_KEY env var).
Where people get burned
Three things bite in practice. First, cost: this is a per-call model, so "let me tune lora_scale across six values" burns credits fast - set one value, batch, and check a few frames. Second, expectations: a clean retouch pass is not the same as the "more detail" job of a generative upscaler, so if your goal is pores and sharpness rather than smoothness, this is the wrong node - you want a detail-adding upscale instead. Third, and this is the classic: retouching smooths, and smooth skin reads as AI the moment you overdo it. The KB's photorealism notes are worth internalizing here - keep lora_scale at or below default and let the face keep its texture, because a perfect porcelain face is the fastest tell that a model touched it.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| api_key | STRING | — | |
| guidance_scaleopt | FLOAT | 3.50–20 | CFG scale - how strongly the model follows its retouch objective. Higher = stronger effect. |
| num_inference_stepsopt | INT | 301–100 | Number of sampling steps. More steps = potentially cleaner result, slower. |
| lora_scaleopt | FLOAT | 1.000–2 | Strength of the retouch LoRA. Lower = subtler retouch, higher = stronger. |
| seedopt | INT | -1-1–2147483647 | -1 = random |
| enable_safety_checkeropt | BOOLEAN | true | — |
| sync_modeopt | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| info | STRING | — |