Nodes/IC-Light V2 (fal.ai)/IC-Light V2 (fal.ai)
ComfyUI Node

IC-Light V2 (fal.ai)

The fal.ai wrapper, explained

By a-und-b·Created about a year ago·Updated 3 months ago· 43
IC-Light V2 (fal.ai)
  • image
  • mask
  • images
prompt
negative_prompt
num_inference_steps28
guidance_scale5.0
seed-1
initial_latentNone
enable_hr_fixfalse
lowres_denoise0.98
highres_denoise0.95
hr_downscale0.50
num_images1
cfg1.0
output_formatjpeg

The title says "IC-Light V2," so the important part first: this node doesn't run the model, and it won't ask you to download a single checkpoint. It's a wrapper for the fal.ai API. Your image leaves your machine, a paid server does the relighting, and the result comes back. No GPU, no 10+ GB Flux model, no model files at all - just an API key and a card on file.

Why does a wrapper like this even need to exist? Because of one of the weirdest release stories in the whole ecosystem. lllyasviel shipped IC-Light in May 2024 as three SD 1.5 checkpoints that relight a photo by construction - light changes, but logos, stitching and label text hold still, which is exactly what whole-frame editors can't promise. Then he announced V2, a Flux-based rebuild that was supposed to fix V1's worst habits: small-face degradation, the warm orange skin-tone shift, and stylised art being dragged toward photorealism. And then he never released the weights. Two years later, V2 still only exists behind the fal.ai API at roughly $0.10 per megapixel. This node is the ComfyUI door to that API - the only door, since even the HuggingFace demo Spaces have decayed.

So the honest framing: if you've been fighting V1's limits on product or portrait work, this is the paid upgrade path. If you googled "IC-Light V2" expecting open weights, this is the node that tells you they don't exist.

How it works

The mechanism is unglamorous and reliable. When the node runs, it serializes your input IMAGE to a temp file, uploads it to fal, subscribes to the fal-ai/iclight-v2 endpoint with your parameters, downloads whatever comes back, saves a copy into ComfyUI's output folder (look for iclight_v2_*.png/jpg), and hands you a tensor so the result can flow into the rest of your graph. The dependencies are light: fal-client>=0.5.0, requests, pillow, configparser. There's nothing to download because the model never leaves fal's servers.

The inputs that matter

The parameter list is long, but you'll actually touch four of them:

  • image + prompt - the photo and a lighting sentence, not an instruction. "Golden hour, soft window light" works; "relight this from the left" doesn't. That's the IC-Light prompting style carrying over from V1.
  • initial_latent - the direction bias: None, Left, Right, Top, Bottom. This is V1's Lighting Preference control, reborn.
  • mask (optional) - a native ComfyUI MASK that restricts which region gets relit. The node uploads it as a separate PNG, which is handy for protecting the subject while the background does all the work.
  • enable_hr_fix - a two-pass high-res fix with lowres_denoise, highres_denoise and hr_downscale behind it. Flip it when faces come back soft.

Everything else mostly deserves its default. guidance_scale (how strictly the prompt is enforced) and cfg (the model's CFG scale) are two separate knobs on the fal API - leave them alone until you know what you're doing. Set seed to anything but -1 for reproducible results; num_images (up to 4) multiplies your bill along with your variations. The single output, images, wires straight into a preview or save node.

Install

Easiest via ComfyUI Manager - search "IC-Light V2 (fal.ai)" and hit install. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/a-und-b/ComfyUI_IC-Light-v2_fal.git
cd ComfyUI_IC-Light-v2_fal
pip install -r requirements.txt

Then the API key, which is the step everyone half-skips. Copy config.ini.template to config.ini in the node folder and paste in your fal key, or export FAL_KEY as an environment variable. No key and the node raises a hard ValueError on first run - that's it telling you the config didn't land. Restart ComfyUI after install.

Where people get burned

  • A stale fal-client. The requirements pin fal-client>=0.5.0 because anything older breaks with a baffling "module 'fal_client' has no attribute 'subscribe'". If you see that, pip install -U "fal-client>=0.5.0".
  • The price sneaks up. $0.10 per megapixel is roughly a 1024×1024 image, and HR fix plus multiple variations are extra passes on top. A batch of 20 product shots is no longer free or cheap.
  • Privacy. Your image is uploaded to a third party. Fine for shots you own; a genuine problem for client work under an NDA. If that's your situation, the local kijai IC-Light node on V1 is the offline fallback.
  • It's a dependency chain, not a model. If fal's endpoint is down or your card is declined, you get an error, not an image - there's no local fallback baked in.

For general free relighting in 2026 you'd honestly reach for Qwen-Image-Edit or Flux 2 Klein instead. This node exists for the specific case where V2's detail preservation is worth paying for - the batch product catalogue where logos must not drift.

Categoryimage effects/lighting

Inputs (15)

NameTypeDefaultDescription
imageIMAGE
promptSTRING
negative_promptSTRING
num_inference_stepsINT281–100
guidance_scaleFLOAT5.01–20
seedINT-1-1–2147483647
initial_latentCOMBONone5 options: None, Left, Right, Top, Bottom
enable_hr_fixBOOLEANfalse
lowres_denoiseFLOAT0.980–1
highres_denoiseFLOAT0.950–1
hr_downscaleFLOAT0.500.1–0.9
num_imagesINT11–4
cfgFLOAT1.00–30
output_formatCOMBOjpeg2 options: jpeg, png
maskoptMASK

Outputs (1)

NameTypeDescription
imagesIMAGE