arkennemasis fal · Flux Pro v1.1 · $0.04/MP
The closed model with two knobs and a per-megapixel bill
- images
- image_paths
- seed
- has_nsfw_concepts
- prompt
- timings
- info
FLUX1.1 [pro] is the closed weights tier - never downloadable, API only - and this node is the plain text-to-image front door to it at $0.04 per megapixel. What's notable is how little is on it. No step count, no guidance scale, no acceleration setting. The tier's whole pitch is that fal's infrastructure makes it fast enough that you don't tune anything.
Why pay, and what it costs you
Flux Dev is 12B of open weights you can run yourself. Pro is the same family with quality and speed you can't get locally, and the price for that is two things: money per megapixel, and your prompt leaving the machine. If the latter matters - client work, anything private, anything the hosted filter would refuse - the local path is the answer and there's no workaround, because there are no weights to patch and the filter lives in the model.
Where it earns its keep: a small number of high-value images where you'd rather not spend an afternoon on settings. Where it doesn't: volume. Per-megapixel pricing means a 2MP render is four cents, a 4MP render is sixteen, and num_images multiplies on top of that. Iterating twenty times on a prompt in an afternoon is real money in a way local generation never is.
Inputs - there are barely any
prompt. That's the main event.image_size, defaulting tolandscape_4_3. Options aresquare_hd,square,portrait_4_3,portrait_16_9,landscape_4_3,landscape_16_9, andcustom, which then readsimage_size_widthandimage_size_height(16–14142, step 16). Since billing is per megapixel, this widget is the price.seed, -1 for random. The node hands the used seed back on itsseedoutput, so a good result is reproducible.num_images1–4. Multiplies both the bill and the wait.output_format(jpeg/png) - if you're going to upscale or inpaint downstream, take the PNG.safety_tolerance, default2, with 1–6 available and 1 the strictest. Moderation dial, not a quality dial.enhance_prompt, default off. Leave it off when your wording is intentional; turn it on when you've written five words and want fal to expand them.
And the four pack-wide widgets: max_cost_usd (default $20 - the estimate is checked before anything is uploaded, so it stops the run instead of warning you afterwards; 0 removes the cap), reuse_identical_run (on by default - an identical request returns the files already sitting in output/fal/, even after a ComfyUI restart), extra_json (a JSON object merged into the request last, for any fal field the node has no box for), max_concurrent (default 1, one paid fal call at a time across every fal node in the run).
Outputs
images → preview or save. image_paths → output/fal/fal-ai_flux-pro_v1.1/. seed, prompt, has_nsfw_concepts, timings, and info - the JSON with the request id, the cost estimate and fal's own answer.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Manager users can search comfyui-arkennemasis instead. Restart ComfyUI, then look under arkennemasis/fal/Image/Flux. No local models, no extra pip packages for the fal provider.
# .env, in the folder with run_nvidia_gpu.bat
FAL_KEY=your-key-from-fal.ai/dashboard/keys
What catches people
No settings to tune, so a bad prompt is a wasted run. Don't go looking for a "steps" box; there isn't one. Rewrite the prompt.
The size widget is the invoice. custom at 2048×2048 is four megapixels and four times the headline rate, times num_images. Watch the live badge on the title.
Black images mean the safety checker flagged the output. has_nsfw_concepts will tell you; safety_tolerance is the only thing you can move, and often the prompt is the real problem.
The key isn't found. The pack reads FAL_KEY from the install's .env only. A shell export won't do; the error message names the file it looked for.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate an image from. | |
| image_size | COMBO | landscape_4_3 | The size of the generated image. 'custom' uses the width and height below. |
| image_size_width | INT | 102416–14142 | Width in pixels when image_size is 'custom'. |
| image_size_height | INT | 102416–14142 | Height in pixels when image_size is 'custom'. |
| seed | INT | -1-1–2147483647 | The same seed and the same prompt given to the same version of the model will output the same image every time. -1 leaves it to the model. |
| num_images | INT | 11–4 | The number of images to generate. |
| output_format | COMBO | jpeg | The format of the generated image. |
| safety_tolerance | COMBO | 2 | The safety tolerance level for the generated image. 1 being the most strict and 5 being the most permissive. |
| enhance_prompt | BOOLEAN | false | Whether to enhance the prompt for better results. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| seed | INT | — |
| has_nsfw_concepts | STRING | — |
| prompt | STRING | — |
| timings | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |