โ๐จ API Image Generator (Black Forest Labs - Flux) ๐จโ
The only way to touch Flux Pro/Ultra locally
- IMAGE
There's a reason this node exists instead of just loading a Flux Pro checkpoint locally: you can't. Black Forest Labs ships Flux in tiers - Schnell is fully open (Apache 2.0), Dev is downloadable but non-commercial, and Pro - including the Ultra variant - has never been released as weights at all. It's API-only, full stop. If you want Flux Pro or Flux Pro Ultra in a ComfyUI graph, an API call to BFL is the only path that exists, and this node is that call.
How it works
Point it at your own BFL API key (the pack ships with a placeholder value in the field by default - replace it with a real key from bfl.ai, don't leave the shipped default in place), pick a model (flux-pro-1.1-ultra is the default, with flux-pro-1.1, flux-pro, and flux-dev also available), write a prompt, and the node handles the request over the network. Since Dev is separately available as local weights, running it through this node instead of a local checkpoint means you're paying BFL's per-call API price for something you could otherwise run for the cost of your own GPU time - worth knowing which tier you're actually calling before you queue a big batch.
Sizing is controlled two ways at once: aspect_ratio (16:9 default, plus 1:1, 4:3, 3:2, 21:9, 9:21) and explicit width/height up to 2752ร1536. A few of the optional fields are Ultra-specific behavior worth understanding rather than guessing at: raw (default off) requests a less processed, more photograph-like output instead of the tier's default polish, and safety_tolerance (0โ6, default 6) controls how permissive BFL's own content filtering is on the response - this is BFL's server-side policy, not something local to the node, so cranking it up doesn't bypass anything the node itself controls. image_prompt_strength only matters if you're feeding a reference image for image-to-image style guidance.
The inputs and outputs that matter
api_key(required) - your own BFL key. Get one at bfl.ai; the pack's default is a placeholder, not a working credential.model- which Flux tier:flux-pro-1.1-ultra,flux-pro-1.1,flux-pro, orflux-dev.prompt(multiline) - what to generate.aspect_ratio,width,height- sizing controls; aspect ratio picks the shape, width/height cap the resolution.seed,steps(15โ50),guidance(1โ100, default 2.5) - the standard reproducibility and generation-quality knobs, optional.rawandsafety_tolerance- Ultra-tier output style and BFL's own content-filter strictness.- Output - a single IMAGE.
How to install it
ComfyUI Manager โ search Bjornulf_custom_nodes โ install โ restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
pip install -r Bjornulf_custom_nodes/requirements.txt
No exotic Python dependency beyond standard HTTP handling - the real requirement is a funded BFL account and a valid API key, which is separate from anything pip install fixes.
Common issues & troubleshooting
Authentication fails immediately. Check that you actually replaced the shipped placeholder api_key with your own real key from bfl.ai - running the node with the default value in place is the single most likely cause of an auth error.
I'm getting billed and wasn't expecting to be. Flux Pro and Ultra are API-only by BFL's own licensing design - there's no free local alternative for those tiers, so any use of this node against flux-pro* models is billed by BFL directly, on top of whatever you're already paying for GPU compute elsewhere. If you want a free local option, flux-dev is separately downloadable and runnable without this node at all - use a standard checkpoint loader instead.
safety_tolerance at max still filtered my output. That setting reflects BFL's own server-side content policy for the request, not a local toggle this node can override beyond what the API itself allows - Dev tier in particular ships with content filtering embedded at the encoder level, and BFL's licensing treats NSFW output as an enforcement matter, not a setting.
Results look flatter or more "AI" than expected on Ultra. Try toggling raw on - it's specifically meant to pull back some of Ultra's default processed look toward something closer to an unedited photograph.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | 1ae1f1cc-de28-4682-bc4c-6ac2fdff79cc | โ |
| prompt | STRING | A beautiful landscape | โ |
| model | COMBO | flux-pro-1.1-ultra | 4 options: flux-pro-1.1-ultra, flux-pro-1.1, flux-pro, flux-dev |
| aspect_ratio | COMBO | 16:9 | 6 options: 16:9, 1:1, 4:3, 3:2, 21:9, 9:21 |
| width | INT | 2752256โ2752 | โ |
| height | INT | 1536256โ1536 | โ |
| output_format | COMBO | png | 2 options: png, jpeg |
| seedopt | INT | 00โ18446744073709550000 | โ |
| safety_toleranceopt | INT | 60โ6 | โ |
| rawopt | BOOLEAN | false | โ |
| image_prompt_strengthopt | FLOAT | 0.100โ1 | โ |
| stepsopt | INT | 5015โ50 | โ |
| guidanceopt | FLOAT | 2.51โ100 | โ |
| prompt_upsamplingopt | BOOLEAN | false | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | โ |