codex/create-custom-node-for-flux2-pro
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) orflux-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
- Copy the
custom_nodes/floyo_flux2_api_nodefolder into your ComfyUIcustom_nodesdirectory (keep the__init__.py+flux2_node.pypairing intact so the node is auto-discovered). - Ensure
requestsis available in your Python environment. - 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)
- Environment:
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_KEYif 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):
-1for 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) andsteps(<=50) for quality/performance tradeoffs. - Respect BFL rate limits and poll using the provided
polling_urlrather 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_urltohttps://api.eu.bfl.ai/v1orhttps://api.us.bfl.ai/v1inconfig.ini.
Languages
Python
100%