Flux Pro 1.1 Ultra Finetune (BFL)
Your own Flux Pro 1.1 Ultra, trained by BFL — the finetune node explained
- config
- IMAGE
You cannot fine-tune Flux Pro. It's API-only, the weights never touch your disk, and that's been the deal since 2024. But BFL will fine-tune it for you - you send them a dataset, they train a private variant, and you generate with it through the API. This node is how you do the generating side of that from ComfyUI.
This is the pack's Ultra Finetune wrapper from gelasdev's ComfyUI-FLUX-BFL-API, and it's a niche on top of a niche. You only need it if you already have a BFL finetune (trained via their API or the companion nodes in this pack - Flux Finetune Status, Flux My Finetunes, Flux Delete Finetune) and want to render with it at Ultra resolution. If that's not you yet, the plain Pro 1.1 and Pro 1.1 Ultra nodes are the on-ramp.
How it works
Mostly the same async machinery as every node in the pack: POST the request, poll get_result until READY, decode, emit an IMAGE. The differences are the endpoint - flux-pro-1.1-ultra-finetuned - and the fact that your finetune carries its own identity.
Two things you must get right, because BFL makes them mandatory:
- finetune_id - the exact ID BFL gave your trained model. This isn't a name you invent; it's what the finetune creation call returned. Get it from your BFL dashboard or the pack's Flux My Finetunes node.
- region - BFL routes finetune jobs through regional endpoints, and this node's code is written around that. Connect a Flux Config (BFL) node and set its
regiontousoreu, matching where your finetune lives. Without a regional config, finetuned generation can fail at the door.
The inputs that matter
- finetune_id - your model's ID, as above. The default
"my-finetune"is a placeholder; leaving it will get you a 404-equivalent. - finetune_strength - how hard your finetune's style/identity pushes into the result, 0 to 2, default 1.2. This is the creative knob: crank it for a strong look, drop it for a hint.
- aspect_ratio - same nine-preset dropdown as the non-finetune Ultra node (16:9 default). This is a resolution model, not width/height, so no multiple-of-32 trap.
- prompt - your generation prompt, same natural-language rules as plain Pro.
- raw - leave false and BFL upsampling buffs your prompt; set true to keep it literal.
- safety_tolerance (0–6, default 2) and output_format (jpeg/png) - standard pack settings.
Optionals: seed (-1 = random), image_prompt + image_prompt_strength (default 0.1) for reference-image steering, prompt_upsampling, webhook fields, and config. Output is one IMAGE.
Installing
Same pack, same steps:
cd ComfyUI/custom_nodes
git clone https://github.com/gelasdev/ComfyUI-FLUX-BFL-API.git
pip install -r requirements.txt
Restart, then get your key from api.bfl.ai into config.ini - or, for this node specifically, prefer the Flux Config (BFL) node so the key and the region ride in the workflow.
Common issues
The blank-512×512-image failure mode is everywhere in this pack, and it's more likely here: a wrong finetune_id, a missing region, a finetune that's still training, or an exhausted poll all end in a black frame. The [BFL] console log tells you which one.
Don't confuse finetune_strength with LoRA weight. Locally you'd blend a LoRA's influence with a weight slider; here the model is already trained and this value scales how much of it shows through. If the identity barely appears, raise it - just know the range caps at 2. And remember the pricing reality: every finetuned render is a paid API call, so test on cheap settings before you commit to the expensive ones.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| finetune_id | STRING | my-finetune | — |
| prompt | STRING | — | |
| finetune_strength | FLOAT | 1.200–2 | — |
| aspect_ratio | COMBO | 16:9 | 9 options: 16:9, 4:3, 1:1, 3:2, 21:9, 9:16, +3 |
| safety_tolerance | INT | 20–6 | — |
| output_format | COMBO | jpeg | 2 options: jpeg, png |
| raw | BOOLEAN | false | — |
| seedopt | INT | -1 | — |
| image_promptopt | STRING | — | |
| image_prompt_strengthopt | FLOAT | 0.100–1 | — |
| prompt_upsamplingopt | BOOLEAN | false | — |
| webhook_urlopt | STRING | — | |
| webhook_secretopt | STRING | — | |
| configopt | BFL_CONFIG | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |