Nodes/ComfyUI-Floyo-Flux2-API-node/FLUX.2 [pro] Image Edit
ComfyUI Node

FLUX.2 [pro] Image Edit

FLUX.2 multi-reference editing, without the 24GB GPU

By ritik-devsecops·Created 9 months ago·Updated 9 months ago· 1
FLUX.2 [pro] Image Edit
  • input_image
  • input_image_2
  • input_image_3
  • input_image_4
  • input_image_5
  • input_image_6
  • input_image_7
  • input_image_8
  • image
prompt
width1024
height1024
seed-1
safety_tolerance2
output_formatjpeg

FLUX.2's one genuinely unmatched capability is multi-reference editing - drop in a base image plus a few extras and it holds the character, object, or style consistent across the result, no LoRA training required. Local FLUX.2 Dev can do it, but it needs 18–24GB VRAM and patience. This node runs the same editing API from Black Forest Labs and does the heavy lifting on their servers. Your GPU just watches.

What it does

Flux2ProImageEdit is the edit half of the ComfyUI-Floyo-Flux2-API-node pack, talking to api.bfl.ai/v1/flux-2-pro. It takes your base image as a ComfyUI IMAGE tensor, base64-encodes it, and sends it - plus up to seven extra reference images - as input_image, input_image_2, and so on. Then it polls until the edit is Ready, downloads the result, and returns it as an IMAGE tensor you can save, preview, or push through the rest of your graph.

Inputs that matter

  • prompt - describe the edit in plain sentences. FLUX.2's encoder is an LLM; it reads "the woman is now standing" like an instruction, not like tag soup. Name what must stay the same: "keep her face, keep the pose."
  • input_image - required, the base.
  • input_image_2 … input_image_8 - optional references for character, object, or style consistency. Pro caps the total at 8 (the flex edit node in this pack goes to 10).
  • width / height - here's the trap: the widgets default to 1024, but 0 means "match the input image." The node only sends a size when it's above 0, so for an untouched-resolution edit set both to 0 - not to the input's dimensions, not to 1024.
  • seed - -1 random, any positive integer reproducible.
  • safety_tolerance - 0 (strict) to 6 (permissive), default 2.
  • output_format - jpeg (default) or png.

No steps or guidance on pro either - same deal as the pro text-to-image node: curated sampling, fixed price, no dials.

Install

Same pack as the pro text-to-image node. Install it once and you get all four nodes. Via ComfyUI Manager ("ComfyUI-Floyo-Flux2-API-node") or:

cd ComfyUI/custom_nodes
git clone https://github.com/ritik-devsecops/ComfyUI-Floyo-Flux2-API-node
cd ComfyUI-Floyo-Flux2-API-node
pip install -r requirements.txt

Then put your api.bfl.ai key in config.ini or export BFL_API_KEY, and restart. That's the entire setup - no model files, no VRAM concerns.

Where people get burned

Same failure mode as the rest of this pack: errors come back as a black image, with the real message printed to your ComfyUI console. Black output could be a bad key, a timeout, or moderation - check the terminal before you rerun.

Moderation is more likely to bite on edits than on text-to-image, because you're pushing real-world photos through BFL's filter. If a source image gets flagged, you'll see a "Content Moderated" status and a black output. Lowering safety_tolerance doesn't loosen that - it only tunes BFL's permissive level, and the hard moderation happens regardless.

And mind the bill. Every edit is a metered API call, and multi-reference edits with several images are the pricier end. It's the cost of not running a 32B model locally, and it's worth it mainly for the consistency-critical jobs.

The verdict

If you have a 24GB+ card and time, local Klein is the freer path and its editing is excellent. If you need top-tier results and the hardware is a hard no, this is the node. Set width/height to 0, describe the edit like a photo editor, and read the console when it comes back black.

CategoryFloyo/Flux2 Pro

Inputs (14)

NameTypeDefaultDescription
promptSTRINGDescribe the edit you want.
input_imageIMAGEBase image.
input_image_2optIMAGEOptional reference image #2.
input_image_3optIMAGEOptional reference image #3.
input_image_4optIMAGEOptional reference image #4.
input_image_5optIMAGEOptional reference image #5.
input_image_6optIMAGEOptional reference image #6.
input_image_7optIMAGEOptional reference image #7.
input_image_8optIMAGEOptional reference image #8.
widthoptINT10240–2048Override width (0 = keep). Multiple of 16.
heightoptINT10240–2048Override height (0 = keep). Multiple of 16.
seedoptINT-1-1–4294967295-1 = random. Any other integer is reproducible.
safety_toleranceoptINT20–6Moderation level 0 (strict) to 6 (permissive).
output_formatoptCOMBOjpegOutput format.

Outputs (1)

NameTypeDescription
imageIMAGE