BFL Bridge (Text-to-Image)
Flux 2 Pro inside ComfyUI with zero VRAM — the BFL API bridge
- image
Flux 2 is the model you probably can't run. The Dev weights need 18–24GB of VRAM even quantized, and the tiers people actually rave about - Pro and Flex - never shipped as weights at all. They live behind Black Forest Labs' hosted API, and that's exactly what this node is: a single BFL Bridge (Text-to-Image) node that talks to the BFL API from inside a ComfyUI graph. No GPU, no model download, no VAE, no sampler. If you've ever wanted the top-tier Flux without buying a 5090, this is the door.
How it works
The name is the honest one: it's a bridge. When you hit Queue, the node submits your prompt to https://api.bfl.ai/v1/<model> with your API key in the x-key header (BFL's auth scheme, not the usual Bearer), then polls the returned polling_url every two seconds until the job reports Ready, downloads the finished image, and hands it back to your graph as a normal IMAGE tensor. That's the whole job - all the actual inference happens in BFL's cloud, so a CPU-only box works fine.
It's built on ComfyUI's newer V3 node interface, which is the one real compatibility catch: you need ComfyUI 0.18 or newer, or the node simply won't register.
The inputs that matter
Most of the inputs are a sampler's worth of knobs, but only a few you'll touch:
- api_key - your key from api.bfl.ai, or leave blank and set the
BFL_API_KEYenvironment variable instead. Node input wins if both exist; for a shared server, the env var keeps the key out of workflow files. - model - the combo lists
flux-2-pro-preview(default),flux-2-pro,flux-2-flex,flux-2-klein-9b-preview, and the Flux 1.1pro-ultra/propair. Pro/Flex are the API-only tiers; Klein 9B is the one that also exists as open weights if you'd rather run it locally. - prompt - required; the node refuses to run an empty one.
- width / height - 256 up to 2048, default 1024×1024. That 2048 ceiling is the Flux 2 native 4MP sweet spot.
- seed, guidance, steps - default 0 / 3.5 / 28.
The single output is image, which you can wire straight into a Save Image node or into anything else downstream - upscalers, img2img, whatever.
Where people get burned
Seed 0 is not a seed. The node only sends seed to the API when it's greater than zero - at 0 it's omitted and the API rolls its own. If you want reproducibility, set a real number. Same logic applies to guidance and steps: the defaults (3.5 / 28) are only forwarded when you change them, so don't panic if the API docs list different defaults.
The other thing to internalize: every run costs credits. This is a paid API, and the 300-second poll timeout means a busy queue can occasionally fail a slow job. You'll see the HTTP status and a snippet of BFL's error message when it does - usually a bad key, an invalid model name, or a credit problem.
Installing it
ComfyUI Manager is the easy route - search "comfyui-bfl-bridge" and install. Or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/cerridan/ComfyUI_BFLBridge.git
Then restart ComfyUI. Dependencies are aiohttp, Pillow, and numpy - all already bundled with a modern ComfyUI, so the README's pip install line is usually a no-op. No models to download, ever. The pack itself is young and small - a single commit as of this writing - but the mechanism is simple enough that there's not much to break. It's not the pack I'd bet a production pipeline on yet, but for grabbing the real Flux 2 Pro without the hardware, it does exactly what it says.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| model | COMBO | flux-2-pro-preview | 6 options: flux-2-pro-preview, flux-2-pro, flux-2-flex, flux-2-klein-9b-preview, flux-1.1-pro-ultra, flux-1.1-pro |
| prompt | STRING | — | |
| width | INT | 1024256–2048 | — |
| height | INT | 1024256–2048 | — |
| seed | INT | 00–2147483647 | — |
| guidance | FLOAT | 3.50–20 | — |
| steps | INT | 281–50 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |