master
ComfyUI-FLUX-BFL-API
Custom nodes for integrating Flux models with the BFL API.
Installation
Option 1: Install via Custom Nodes Manager
- Open the Custom Nodes Manager.
- Search for "ComfyUI-FLUX-BFL-API".
- Select the package and follow the installation instructions.
Option 2: Manual Installation
-
Clone the repository:
cd custom_nodes git clone https://github.com/gelasdev/ComfyUI-FLUX-BFL-API.git -
Install the required dependencies:
pip install -r requirements.txt -
Get your BFL API key from api.bfl.ai.
-
Add your API key to the
config.inifile:[API] X_KEY = YOUR_API_KEY BASE_URL = https://api.bfl.ai/v1/
Configuration
You can either use config.ini for a global API key, or connect a Flux Config (BFL) node directly to any generation node to override the key, base URL, and region per-node. If no config node is connected, config.ini is used automatically.
How results are polled
Every BFL request is asynchronous: the node submits the job, then polls until the result is ready.
- The submit response contains a
polling_url, and the node polls that URL. BFL requires this because it points at the region that holds your task (Flux 3 Image, for example, returns a regional one). - Only when a response has no
polling_urldoes the node fall back to building<base_url>get_result?id=<task_id>itself, with the base URL fromconfig.inior the Flux Config (BFL) node. - Polls run every 5 s: up to 40 attempts (~200 s) for image nodes, 120 for Flux 3 Image (
4kcan take several minutes) and 240 for the video nodes. A terminal status (Error,Request Moderated,Content Moderated) stops polling at once, even when BFL reports it as HTTP 503, and the node returns a black placeholder so the workflow keeps running. - Every poll is logged in the ComfyUI console as
[BFL] Poll attempt … | GET <url>, so you can see which URL was used.
Nodes
Generation
| Node | Description |
|---|---|
| Flux 3 Image (BFL) | Text-to-image and editing with FLUX 3 in one node — up to 10 references (image_1…image_10 are "Image 1"…"Image 10" in the prompt), bounding boxes as a JSON list at the end of the prompt, 768sq to 4k output (flux-3-image) |
| Flux 3 Video T2V (BFL) | Text-to-video with FLUX 3 Video (up to 20 s, with audio) |
| Flux 3 Video I2V (BFL) | Image-to-video — feed keyframes from the Flux 3 Keyframes node or a single image |
| Flux 3 Video V2V (BFL) | Video continuation from an existing MP4 (URL or base64), up to 15 s |
| Flux Video Edit (BFL) | Edit an existing clip with a prompt — remove / add / replace objects, restyle, change dialogue; up to 15 s, delivered at 720p (flux-tools/video-edit-v1) |
| Flux Video Upscale (BFL) | 1.5×–3× video super-resolution toward 4K, precise or creative mode; up to 20 s and 2560×1440 in (flux-tools/video-upscale-v1) |
| Flux Pro 1.1 (BFL) | Text-to-image with Flux Pro 1.1 |
| Flux Pro 1.1 Ultra (BFL) | High-resolution text-to-image |
| Flux Dev (BFL) | Text-to-image with Flux Dev |
| Flux Pro Fill (BFL) | Inpainting / outpainting |
| Flux Pro Expand (BFL) | Outpainting with directional padding |
| Flux Erase (BFL) | Object removal via binary mask (flux-tools/erase-v1) |
| Flux Outpaint (BFL) | Image extension via target canvas + reference offsets (flux-tools/outpainting-v1) |
| Flux Deblur (BFL) | Sharpen a blurry image while preserving the scene — no prompt or mask, up to 4 MP (flux-tools/deblur-v1) |
| Flux Virtual Try-On (BFL) | Virtual try-on — dress a person image in a garment image (flux-tools/vto-v1) |
| Flux Virtual Try-On v2 (BFL) | Virtual try-on v2 — sharper face preservation, inputs up to 4 MP (flux-tools/vto-v2) |
| Flux Kontext Pro (BFL) | Image editing with context (up to 4 images) |
| Flux Kontext Max (BFL) | Image editing with context, max quality |
| Flux 2 Max (BFL) | Flux 2 Max generation |
| Flux 2 Pro (BFL) | Flux 2 Pro generation |
| Flux 2 Pro Preview (BFL) | Flux 2 Pro preview (latest advances) |
| Flux 2 Flex (BFL) | Flux 2 Flex generation |
| Flux 2 Klein 9B (BFL) | Flux 2 Klein 9B generation |
| Flux 2 Klein 9B Preview (BFL) | Flux 2 Klein 9B preview (latest advances) |
| Flux 2 Klein 4B (BFL) | Flux 2 Klein 4B generation |
The Flux 3 Video nodes output ComfyUI's native VIDEO type — connect them to the built-in Save Video / preview nodes (requires ComfyUI ≥ 0.3.30).
Finetune
| Node | Description |
|---|---|
| Flux Pro Fill Finetune (BFL) | Inpainting with a finetuned model |
| Flux Pro 1.1 Ultra Finetune (BFL) | Ultra generation with a finetuned model |
| Flux Finetune Status (BFL) | Check the status of a finetune job |
| Flux My Finetunes (BFL) | List all your finetunes |
| Flux Finetune Details (BFL) | Get details of a specific finetune |
| Flux Delete Finetune (BFL) | Delete a finetune |
Config
| Node | Description |
|---|---|
| Flux Config (BFL) | Override API key, base URL and region per-node |
| Flux Credits (BFL) | Check your remaining BFL API credits |
Utils
| Node | Description |
|---|---|
| Image to Base64 (BFL) | Convert a ComfyUI IMAGE to base64 — choose jpeg (default) or png (lossless, recommended for masks) |
| Flux 3 Keyframes (BFL) | Combine up to 10 images (start, 8 middles, end) into the keyframes string for Flux 3 Video I2V — empty sockets are skipped; timing: even spreads them across the clip, timing: custom pins start at 0, middles at their time_N widgets and the end image at end_time (= clip length with duration: auto) |
| Video to Base64 (BFL) | Convert a ComfyUI VIDEO (LoadVideo output or a Flux 3 Video result) to a base64 MP4 string — feed it into Flux 3 Video V2V's start_video, Flux Video Edit's video or Flux Video Upscale's input_video |
Workflow
Example workflows are available in the workflows folder.
Changelog
See CHANGELOG.md.
Contributors
Example
Languages
Python
88.7%
Shell
10%
JavaScript
1.3%