π¨ Flux Pro Integrative
This node is BFL's API in a box
- image_prompt
- image
- info
The name makes it sound like another local FLUX workflow, so let's clear that up first: FluxProIntegrative doesn't run FLUX on your machine and doesn't need a GPU at all. It's a wrapper around Black Forest Labs' hosted FLUX API. You hand it a prompt (and optionally an image or a trained-model ID), it phones home to api.bfl.ai, and it comes back with a finished image. The price of admission is a BFL API key and a few cents per image - not a 12B model squeezed into quantized bits on a card you had to buy.
It's a legitimate pitch. FLUX 1.1 Pro Ultra is the hosted flagship of the same architecture the local community runs as FLUX.1 dev, and this node gets you that tier without the hardware or the quantization dance. Reach for it when your rig can't hold a transformer but you want the 2K+ photorealistic output anyway, or when training a custom model without babysitting the job on your own box.
How it works
Under the hood it's one node class (FluxProIntegrative) wrapping a FluxAPIClient, and it works the way the BFL API works: asynchronously. You submit a task, get back a task_id plus a polling URL, then the client polls until the image is ready - with up to 15 retries and exponential backoff, so network hiccups usually sort themselves out. Generation hits flux-pro-1.1-ultra when ultra_mode is on and flux-pro-1.1 otherwise; feed it an image_prompt and it base64-encodes the tensor as an image-to-image reference. Requests run through a persistent requests.Session with your key in the X-Key header.
One behavior to know: the node never crashes the queue. On failure it returns a blank 512Γ512 gray image plus an info string starting with ERROR: - that second output is the one to read. Friendly for debugging, but a trap if you only wire the image to a Preview node and wonder about the gray boxes.
The inputs that matter
mode and prompt are the only required inputs; everything else is optional. The few you'll actually touch:
mode-generate,finetune, orinference. This one selector runs three completely different workflows.prompt- multiline, standard text-to-image.ultra_mode(default on) - the difference between 1.1 Pro and 1.1 Pro Ultra: better quality, slightly higher price.aspect_ratio- seven options from 21:9 down to 9:21; 16:9 default.seed--1for random, set a number to reproduce a result.api_key- optional, becauseconfig.inior an env var works too (below).
The outputs are image (a normal IMAGE tensor, so it wires straight into a Preview Image node) and info (a STRING carrying the task ID, finetune ID, or error message).
Finetune mode: the fun part, and the trap
Flip mode to finetune and this becomes a hosted finetune client. Point finetune_zip at a ZIP of 5β20 training images, set a finetune_comment and a trigger_word (default TOK), pick a finetune_mode (character/product/style/general) and a finetune_type (full or LoRA, lora_rank 8β128). Training runs on BFL's servers - the "no local GPU" benefit taken to its extreme - and costs $2β6 a job depending on iterations. Then mode: inference regenerates with finetune_id and finetune_strength (0.8β1.5 is the sensible range; crank past that and you get artifacts).
Here's the trap: finetune mode doesn't produce an image. It returns that blank gray image and puts the new finetune_id in the info string. Working as designed, not a bug - but a beginner who runs it will absolutely think it's broken. Read the info output, grab the ID, switch to inference.
Installing it
Install is boring in the good way: no model downloads, and the only dependencies are requests, Pillow, numpy, and torch - all things ComfyUI already ships.
cd ComfyUI/custom_nodes
git clone https://github.com/ShmuelRonen/flux_pro_integrative
# restart ComfyUI
Or search "Flux Pro Integrative" in ComfyUI Manager and hit install - it appears as "π¨ Flux Pro Integrative" under BFL/Flux Pro. There's no config.ini in the repo; you create it in the node directory:
[API]
X_KEY=your_actual_api_key_here
Or skip the file entirely: set a FLUX_X_KEY environment variable, or paste the key into the node's api_key input, which overrides everything. Get a key from the BFL API portal (api.us1.bfl.ai).
Where people get burned
- "Node not properly initialized" / "Config file not found" - the node hunts for
config.iniin the node dir, thenComfyUI/config.ini, then the working directory. Check the key has no stray spaces; the env-var and GUI-key routes sidestep the file entirely. - Blank image +
ERROR: HTTP 401- invalid or expired key.429is rate limiting (wait),500is BFL's problem (retry later). - Ignoring the
infooutput - it's your only window into what happened, especially in finetune mode. Wire it to a Display Any node while you're learning.
Honest caveat: this is a small, low-traffic pack from a single author, and BFL is actively shipping so the API layer can change under you. For hosted FLUX it does the job, and the retry logic is genuinely solid - one of the cleaner API wrappers out there.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | generate | Mode: generate=create image, finetune=train model, inference=use trained model |
| prompt | STRING | Text description of the image to generate | |
| api_keyopt | STRING | BFL API Key (optional - can use config.ini instead) | |
| image_promptopt | IMAGE | Input image for image-to-image generation or style reference | |
| image_prompt_strengthopt | FLOAT | 0.50.1β1 | Strength of image prompt influence (0.1=weak, 1.0=strong) |
| ultra_modeopt | BOOLEAN | true | Use Ultra mode for higher quality |
| aspect_ratioopt | COMBO | 16:9 | 7 options: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, +1 |
| safety_toleranceopt | INT | 60β6 | Safety filter strength (0=strict, 6=permissive) |
| output_formatopt | COMBO | png | 2 options: png, jpeg |
| rawopt | BOOLEAN | false | Skip safety checks (Ultra mode only) |
| seedopt | INT | -1 | Random seed (-1 for random) |
| finetune_zipopt | STRING | Path to ZIP file with training images | |
| finetune_commentopt | STRING | ComfyUI Finetune | Description for the finetune job |
| finetune_idopt | STRING | ID of existing finetune for inference | |
| trigger_wordopt | STRING | TOK | Word to trigger the finetune style |
| finetune_modeopt | COMBO | general | 4 options: character, product, style, general |
| iterationsopt | INT | 300100β2000 | Training iterations |
| learning_rateopt | FLOAT | 0.00000.00001β0.0001 | β |
| captioningopt | BOOLEAN | true | Auto-generate captions for training images |
| priorityopt | COMBO | quality | 2 options: speed, quality |
| finetune_typeopt | COMBO | full | 2 options: full, lora |
| lora_rankopt | INT | 328β128 | β |
| finetune_strengthopt | FLOAT | 1.20.1β2 | Strength of finetune effect |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| info | STRING | β |