Files
Çağan Kiraz 773a83703f feat(api): add flux 3 image klein node
BFL released FLUX 3 Image Klein (POST /v1/flux-3-image-klein) on
2026-10-15. It takes the same prompt, references, resolution and
aspect ratio as Flux 3 Image, so the node subclasses Flux3Image and
adds what Klein accepts on top: seed, steps, output_format, exact
width x height and a 0-7 safety_tolerance, without grounding.

The Flux 3 Image example workflow gets two bypassed Klein groups
(text to image, edit by URL); existing groups are untouched.
2026-10-17 15:29:01 +03:00

122 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ComfyUI-FLUX-BFL-API
Custom nodes for integrating Flux models with the BFL API.
## Installation
### Option 1: Install via Custom Nodes Manager
1. Open the Custom Nodes Manager.
2. Search for "ComfyUI-FLUX-BFL-API".
3. Select the package and follow the installation instructions.
### Option 2: Manual Installation
1. Clone the repository:
```bash
cd custom_nodes
git clone https://github.com/gelasdev/ComfyUI-FLUX-BFL-API.git
```
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```
3. Get your BFL API key from [api.bfl.ai](https://api.bfl.ai).
4. Add your API key to the `config.ini` file:
```ini
[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_url` does the node fall back to building `<base_url>get_result?id=<task_id>` itself, with the base URL from `config.ini` or the **Flux Config (BFL)** node.
- Polls run every 5 s: up to 40 attempts (~200 s) for image nodes, 120 for **Flux 3 Image** and **Flux 3 Image Klein** (`4k` can 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 Image Klein (BFL) | Open-weights 5.6B FLUX 3 — same prompt, 10 references and bounding boxes as Flux 3 Image, plus `seed`, `steps` (1–16), `output_format` and exact `width` × `height`; no grounding (`flux-3-image-klein`) |
| 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](CHANGELOG.md).
## Contributors
- [@pleberer](https://github.com/pleberer)
- [@Duanyll](https://github.com/Duanyll)
## Example
![image](https://github.com/user-attachments/assets/e74c4157-b113-4590-a19a-758ac044725f)
![image](https://github.com/user-attachments/assets/98011024-c929-4128-af76-af7925e3c445)