Flux Pro 1.1 Ultra & Raw with Finetuning
The Flux 1.1 Pro node that skips your GPU (and trains in the cloud while you sleep)
- IMAGE
- STRING
What it actually is
This node doesn't generate anything locally. FluxPro11WithFinetune - displayed as "Flux Pro 1.1 Ultra & Raw with Finetuning" - is a remote control for Black Forest Labs' hosted FLUX 1.1 Pro API: you type a prompt, it ships it to BFL's servers, polls until the job's done, and hands back an image tensor. No 12B stack crammed into VRAM, no checkpoints to download, no sampler math. Just an API key and roughly $0.06 per image in Ultra mode.
That's deliberate, by the way. FLUX.1 Pro is the tier of the BFL ladder that has never shipped as weights - Schnell is open, Dev is non-commercial, and the best model stays API-only. So if you want 1.1 Pro quality and don't own a 4090+, this is one of the few honest ways to reach it from inside ComfyUI; if you do own one, it's how you get the ceiling instead of the local approximation.
Three modes, one node
The mode dropdown is the whole skeleton:
- generate - text-to-image with 1.1 Pro, regular or Ultra.
- finetune - trains a custom model on BFL's servers from a zip of your images.
- inference - generates with a model you've already trained.
Mechanically it's a thin API client. In generate mode it POSTs to api.bfl.ml (/v1/flux-pro-1.1-ultra when ultra_mode is on, otherwise /v1/flux-pro-1.1), then polls the result endpoint every 5 seconds up to ten times and decodes what comes back. Regular mode converts your aspect ratio into pixel dimensions (16:9 becomes 1408×800); Ultra sends the ratio straight through and tops out around 4MP. The IMAGE output feeds straight into a Preview Image or Save Image node; the STRING output carries the model ID when you train. A wrapper, not a pipeline - and it knows it.
The inputs that matter
- prompt - multiline text. Write it like a photographer would; Flux's natural-language understanding is the whole reason people use it.
- ultra_mode (default on) - 4MP output versus ~1.4MP regular. There's a real reason to leave it on: Raw is Ultra-only.
- raw - drops the aesthetic polish for a more natural, photographic look - the "subtract the polish" school of realism. The main reason 1.1 Pro is worth paying for if photorealism is your thing.
- aspect_ratio - the usual seven, from 21:9 down to 9:21.
- safety_tolerance (0–6, default 6) - BFL's content filter. Counterintuitive scale: 0 is most strict, 6 is least, and most people park it at 6.
- seed (optional, -1 = random) - reproducibility when you need it.
Training your own model
Set mode to finetune, point finetune_zip at a zip of 5–20 decent images (optionally with .txt caption files alongside), give finetune_comment a real description - it's required - and pick finetune_mode from character / product / style / general. Defaults are sane: trigger word TOK, 300 iterations, 1e-5 learning_rate, auto-captioning on, and full-model training unless you'd rather set lora_rank 32 for a LoRA. Training is a flat $2–$6 depending on length, and the node hands the finished model's ID back on the STRING output. Keep that ID. Switch to inference, paste it into finetune_id, include TOK in your prompt, and dial finetune_strength: 0.8–1.0 is subtle, 1.2–1.5 the sweet spot, 1.6–2.0 strong but artifact-prone.
Installing
Use ComfyUI Manager and search for "ComfyUI Flux 1.1 Ultra & Raw Node", or:
cd ComfyUI/custom_nodes
git clone https://github.com/ShmuelRonen/ComfyUI_Flux_1.1_RAW_API
No model downloads and no heavy Python deps - the node only needs requests, Pillow, numpy and torch, all of which ComfyUI ships anyway. The one real setup step is an API key. Generate one in the BFL portal, then put it in config.ini next to the node's Python files:
[API]
X_KEY=your_actual_api_key_here
BASE_URL=https://api.bfl.ml
Restart ComfyUI and the node appears under the BFL category.
Where people get burned
- The silent black image. Almost any failure returns a blank 512×512 black image instead of raising an error, so if you get a black square, read the console log - the error is in there.
- "Config file not found." The node searches the node folder, then
ComfyUI/config.ini, then the working directory. Missing[API]section, missingX_KEY, or stray spaces around the key all trip it. - 401 / 429 / 500. Invalid or expired key, rate limit (wait and retry), or BFL's servers grumbling (wait longer); the node's retry logic absorbs the transient ones.
- You can't stack finetunes. Community threads on this exact node keep hitting the same wall: you can't combine multiple finetuned models in one generation, and a LoRA trained through the API can't be downloaded as a
.safetensors- it lives on BFL's servers. Fine for one character or product, not a path to a multi-LoRA realism stack. - It's a closed API. BFL can reprice or change the filter overnight - the whole reason the local crowd exists. Use it as a tool, not as a dependency to build a business on without reading the terms.
Honest verdict: this is a niche utility - a couple dozen impressions and a handful of threads, mostly people working out the finetune flow. For occasional 1.1 Pro quality without big hardware, it does exactly that. As a main pipeline, think hard about the lock-in first.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | generate | 3 options: generate, finetune, inference |
| prompt | STRING | — | |
| ultra_mode | BOOLEAN | true | — |
| aspect_ratio | COMBO | 16:9 | 7 options: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, +1 |
| safety_tolerance | INT | 60–6 | — |
| output_format | COMBO | png | 2 options: jpeg, png |
| raw | BOOLEAN | false | — |
| seedopt | INT | -1 | — |
| finetune_zipopt | STRING | — | |
| finetune_commentopt | STRING | — | |
| finetune_idopt | STRING | — | |
| trigger_wordopt | STRING | TOK | — |
| finetune_modeopt | COMBO | general | 4 options: character, product, style, general |
| iterationsopt | INT | 300 | — |
| learning_rateopt | FLOAT | 0.00000.00001–0.0001 | — |
| captioningopt | BOOLEAN | true | — |
| priorityopt | COMBO | quality | 2 options: speed, quality |
| finetune_typeopt | COMBO | full | 2 options: full, lora |
| lora_rankopt | INT | 32 | — |
| finetune_strengthopt | FLOAT | 1.20 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| STRING | STRING | — |