Floyo FLUX.2 API Custom Node

A Floyo-ready ComfyUI custom node for the Black Forest Labs FLUX.2 API. The node mirrors Floyo's URL-first I/O pattern, supports both flux-2-pro and flux-2-flex variants, and polls the API's polling_url until an image URL is returned.

Features

  • URL/Base64 inputs for the base image plus up to eight additional reference images.
  • Model selector for flux-2-pro (fast, production) or flux-2-flex (adjustable steps & guidance).
  • Optional sizing, seed, safety tolerance, and output format controls.
  • Flex-only parameters: guidance and steps.
  • Configurable polling interval and timeout aligned with BFL recommendations.

Installation

  1. Copy the custom_nodes/floyo_flux2_api_node folder into your ComfyUI custom_nodes directory (keep the __init__.py + flux2_node.py pairing intact so the node is auto-discovered).
  2. Ensure requests is available in your Python environment.
  3. Provide your Black Forest Labs API key via either:
    • Environment: export BFL_API_KEY=your_key
    • Config file: update custom_nodes/floyo_flux2_api_node/config.ini ([auth] api_key)

Configuration

config.ini lets you set defaults without changing the node code:

[auth]
api_key = YOUR_BFL_API_KEY

[api]
base_url = https://api.bfl.ai/v1
model = flux-2-pro
poll_interval = 0.5
max_wait_seconds = 120

The node falls back to BFL_API_KEY if it is set. The placeholder value must be replaced.

Node Inputs

  • prompt (string, required): Edit or generation prompt.
  • input_image (string, required): URL or base64 image to edit; also works for text-to-image prompts.
  • input_image_2 ... input_image_9 (string, optional): Additional reference images.
  • model (flux-2-pro | flux-2-flex): Selects the target endpoint.
  • width / height (int, optional): Multiples of 16; defaults to matching input.
  • seed (int, optional): -1 for random.
  • safety_tolerance (0-6): Moderation strictness.
  • output_format (jpeg | png).
  • guidance, steps: Only applied when model = flux-2-flex.
  • poll_interval, max_wait_seconds: Override the default polling cadence.

Output

  • image_url: The signed URL returned by the FLUX.2 API (result.sample). Download and re-serve the image within 10 minutes per BFL delivery rules.

Workflow Tips

  • Keep inputs as URLs to align with Floyo's storage and queueing behavior.
  • Multi-reference editing: supply additional input_image_* fields to mix styles and content.
  • For flex runs, tweak guidance (1.5-10) and steps (<=50) for quality/performance tradeoffs.
  • Respect BFL rate limits and poll using the provided polling_url rather than a hardcoded endpoint.

Example (Python)

import os
import requests

api_key = os.environ["BFL_API_KEY"]
resp = requests.post(
    "https://api.bfl.ai/v1/flux-2-pro",
    headers={"x-key": api_key, "accept": "application/json"},
    json={
        "prompt": "Cinematic city sunset, 85mm lens",
        "input_image": "https://example.com/source.jpg",
        "output_format": "jpeg",
    },
).json()

polling_url = resp["polling_url"]
result = requests.get(polling_url, headers={"x-key": api_key}).json()
print(result)

Notes

  • Delivery URLs expire after ~10 minutes and are not CORS-enabled; download and serve from your own storage.
  • For regional routing, adjust base_url to https://api.eu.bfl.ai/v1 or https://api.us.bfl.ai/v1 in config.ini.
S
Description
No description provided
Readme
100 KiB
Languages
Python 100%