Flux Pro 1.1 (BFL)
Flux Pro 1.1 is the best Flux you'll never download — here's how to run it in ComfyUI anyway
- config
- IMAGE
Flux Pro 1.1 occupies the weirdest spot in the Flux lineup: it's arguably the best image model Black Forest Labs ships, and you can never run it locally. No weights, no GGUF, no fp8. It lives entirely behind BFL's API. This node - one of the cleanest community wrappers for that API - drops it onto your ComfyUI canvas with a single wire to PreviewImage.
You've heard the backstory by now. In 2024 BFL gave the open-weights crowd Dev and Schnell and kept the uncompromised base model behind a paywall, and the community grumbled but paid anyway because the results were that good. This pack from gelasdev (posted on r/comfyui back in October 2024, with workflow examples that people found "very clean and easy to use") is the standard way ComfyUI people hit that API. One honest caveat up front: this is a cloud wrapper, not a magic local model. You trade pay-per-image and no ControlNet for zero VRAM cost and output quality that still surprises people. That's the whole trade.
How it works
Under the hood is the same async dance every BFL client does. The node POSTs your prompt and settings to api.bfl.ai/v1/flux-pro-1.1, gets back a task ID, then polls get_result?id=... every five seconds for up to forty attempts. When the status flips to READY it downloads the rendered sample, decodes it, and hands your graph a normal IMAGE tensor.
The whole exchange is logged to your ComfyUI console as [BFL] lines - and you'll be glad of that the first time something goes wrong, because the failure mode is sneaky (see below).
There's no model to download and no real dependency either. requirements.txt is literally just torch, which you already have.
The inputs that matter
- prompt - the whole game. Pro 1.1 follows natural language well, so write like you mean it instead of keyword-stuffing.
- width / height - 256 to 1440, default 1440 square. Here's the trap: they must be multiples of 32. The node won't warn you - it'll just hand you a blank image.
- prompt_upsampling - off by default. Flip it on and BFL quietly rewrites your prompt into something richer before generating.
- safety_tolerance - BFL's content-moderation knob, 0 to 6, default 2. Raise it if the API keeps refusing things you think are fine.
- output_format - jpeg or png. Default jpeg is fine for eyeballing; pick png if you're feeding the result into anything lossy later.
The optional slot worth knowing: image_prompt, a base64 string or URL to steer the generation - wire the output of the pack's Image to Base64 node in here for image-to-image-style work. seed of -1 means random; webhook_url/webhook_secret are for async notifications you almost certainly don't need.
The single output is IMAGE - wire it to PreviewImage or SaveImage like any other generator.
Installing
From ComfyUI Manager, search ComfyUI-FLUX-BFL-API and install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/gelasdev/ComfyUI-FLUX-BFL-API.git
pip install -r requirements.txt # just torch - you have it
Restart ComfyUI, then grab a key from api.bfl.ai and drop it in custom_nodes/ComfyUI-FLUX-BFL-API/config.ini:
[API]
X_KEY = YOUR_API_KEY
BASE_URL = https://api.bfl.ai/v1/
Or skip the file entirely and connect the pack's Flux Config (BFL) node to the config input - that overrides the key per-node.
Common issues
The big one is the silent black image. When anything fails, the node returns a blank 512×512 frame instead of raising an error. If you get one, read the [BFL] lines in the console: a bad key, a CONTENT_MODERATED status, or width/height that aren't multiples of 32 are the usual culprits.
Second: config.ini gets clobbered on update. It's tracked by git, so a git pull (which ComfyUI Manager does on update) overwrites your key back to the placeholder. That's exactly why the per-node Flux Config node exists - use it and stop re-pasting keys.
Finally, remember the model is remote and the poll is capped around three minutes, so plan for a few seconds of waiting per image and make sure your machine can reach the internet. For everything local, Dev and Schnell are still there; this node is specifically for when you want the unreachable best.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| width | INT | 1440256–1440 | — |
| height | INT | 1440256–1440 | — |
| prompt_upsampling | BOOLEAN | false | — |
| safety_tolerance | INT | 20–6 | — |
| output_format | COMBO | jpeg | 2 options: jpeg, png |
| seedopt | INT | -1 | — |
| image_promptopt | STRING | — | |
| webhook_urlopt | STRING | — | |
| webhook_secretopt | STRING | — | |
| configopt | BFL_CONFIG | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |