FLUX 1.0 [canny]
Canny control without the local ControlNet stack
- control_image
- IMAGE
Canny conditioning is the classic way to say "keep this composition, change everything about how it looks." FLUX 1.0 [canny] is that control in one node - and it's the API version of FLUX.1 Canny, one of BFL's official Flux Tools, so you don't download a single ControlNet file or run a single local preprocessor.
The notable difference from a local ControlNet workflow: you don't do the edge detection yourself. In ComfyUI you'd normally feed a canny-processed edge map into a ControlNet. Here you feed the plain reference image into control_image, and BFL's server runs the Canny extraction for you. You just get two knobs for the algorithm's thresholds instead of a preprocessor node you have to configure.
How it works
The node base64-encodes your control_image and sends it to the v1/flux-pro-1.0-canny endpoint along with your prompt. Inside the pack, the low_threshold and high_threshold inputs are renamed to canny_low_threshold / canny_high_threshold for the API - same thing you'd set on a local Canny node, just forwarded. The server then generates within the structure of those edges. Output is a single standard ComfyUI IMAGE.
Inputs that matter
- prompt (required) - what you want the content to be. Keep the composition the edges imply, let the prompt re-skin it.
- control_image (required) - the reference whose edges constrain the result.
- low_threshold / high_threshold (defaults 50 / 200) - the Canny edge detector's sensitivity. Lower both and you get denser, more permissive edges; raise them for clean, sparse lines. If the result looks cramped by too much detail, push them up.
- guidance (default 30, range 1–100) - how hard the model commits to the structure. Lower feels looser; this endpoint's default sits higher than the text-to-image nodes.
- steps (15–50, default 50) - the usual cost/quality trade, billed per image.
- safety_tolerance (0–6, default 2) - moderation dial.
There's no explicit "strength" like the local ControlNet baseline of ~0.6 people talk about - guidance is your lever here.
What it's actually good for
Anything with hard, clear contours: architecture, mechanical objects, product shots, or taking a sketch's lines and turning them into a rendered scene. Canny is a poor fit for soft organic subjects where the edges are ambiguous - that's what the depth node is for. The community's long-running take on Flux canny specifically (in the InstantX-era comparisons) is that it lands "decent" next to the SDXL control ecosystem - workable for composition, not a replacement for fine local control. The API version's real appeal is that you get it with zero install friction and no VRAM cost.
Install
Part of the official Black Forest Labs API Nodes pack. Install via ComfyUI Manager (search the pack title) or:
cd ComfyUI/custom_nodes
git clone https://github.com/black-forest-labs/bfl-comfy-nodes
Restart, then set BFL_API_KEY as an environment variable, put the key in a bfl_api_key.txt next to the pack, or fill api_key_override on the node. Key comes from api.bfl.ml. No model files, no extra dependencies, but every call spends credits - and the thresholds are the first thing to fiddle with when a result looks off.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| control_image | IMAGE | — | |
| seedopt | INT | 00–4294967294 | — |
| guidanceopt | FLOAT | 30.01–100 | — |
| stepsopt | INT | 5015–50 | — |
| low_thresholdopt | INT | 500–500 | — |
| high_thresholdopt | INT | 2000–500 | — |
| prompt_upsamplingopt | BOOLEAN | false | — |
| safety_toleranceopt | INT | 20–6 | — |
| api_key_overrideopt | STRING | — | |
| regionopt | COMBO | EU1 | 2 options: EU1, US1 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |