FLUX.2 [pro] Image Edit
FLUX.2 multi-reference editing, without the 24GB GPU
- input_image
- input_image_2
- input_image_3
- input_image_4
- input_image_5
- input_image_6
- input_image_7
- input_image_8
- image
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 -
-1random, 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.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the edit you want. | |
| input_image | IMAGE | Base image. | |
| input_image_2opt | IMAGE | Optional reference image #2. | |
| input_image_3opt | IMAGE | Optional reference image #3. | |
| input_image_4opt | IMAGE | Optional reference image #4. | |
| input_image_5opt | IMAGE | Optional reference image #5. | |
| input_image_6opt | IMAGE | Optional reference image #6. | |
| input_image_7opt | IMAGE | Optional reference image #7. | |
| input_image_8opt | IMAGE | Optional reference image #8. | |
| widthopt | INT | 10240–2048 | Override width (0 = keep). Multiple of 16. |
| heightopt | INT | 10240–2048 | Override height (0 = keep). Multiple of 16. |
| seedopt | INT | -1-1–4294967295 | -1 = random. Any other integer is reproducible. |
| safety_toleranceopt | INT | 20–6 | Moderation level 0 (strict) to 6 (permissive). |
| output_formatopt | COMBO | jpeg | Output format. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |