arkennemasis fal · Flux 2 Pro · $0.03 + $0.015/MP
The API-only flagship, at $0.03 for the first megapixel
- images
- image_paths
- seed
- info
Flux 2 Pro is the tier BFL actually sells to production users: released alongside Dev on 25 November 2025, API-only, and still the reference point people compare new image models against. You cannot download it. This node is the text-to-image endpoint, at $0.03 for the first megapixel of output and $0.015 for each additional megapixel of input and output, rounded up.
First, a warning about the description
The node's own blurb reads "Image editing with FLUX.2 [pro] … style transfer and sequential editing workflows", which is fal's copy for the edit endpoint of the same model - the descriptions on the two pages are effectively swapped. Trust the schema instead: this node has no image socket at all. It's text-to-image. If you need the editor, that's the ArkFal_fal_ai_flux_2_pro_edit node, which does have image_1 through image_6.
The inputs
prompt, and here it's worth writing properly. Flux 2's encoder is an LLM reading a chat turn: sentences with explicit ownership and spatial relations beat keyword stacks, and CLIP-era weighting syntax is disabled. image_size defaults to landscape_4_3 with the usual presets plus custom for explicit image_size_width and image_size_height. Because billing is per megapixel rounded up, a 512×512 output still costs you a whole megapixel - the pricing example is blunt about it: it's $0.03 whether you ask for 0.25MP or 1MP.
seed at -1 lets the model decide. output_format defaults to jpeg; switch to png for anything you'll re-edit. safety_tolerance is a 1–5 combo - 1 strictest, 5 most permissive, default 2 - with enable_safety_checker next to it, and disabling the checker requires authorisation on your fal account.
The shared options behave as on every fal node in this pack: max_cost_usd (default $20, 0 disables) is checked before anything is uploaded; reuse_identical_run hands back an identical already-paid result rather than charging twice; extra_json merges raw JSON for fal fields the node doesn't expose; max_concurrent (default 1) limits simultaneous paid calls across the graph. Note there's no num_images on this node either, so one run is one image - batch by looping.
Outputs
images and image_paths are the result, seed comes back for reproducibility, and info is the JSON receipt with the request id, cost estimate, saved files and fal's full response. No prompt passthrough, no timings - Pro and Max have leaner output sets than the Klein and [dev] nodes in this pack.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart, then:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
in the .env next to run_nvidia_gpu.bat. The fal provider needs no Python packages, so there's nothing to install for this node specifically.
Where people get burned
The tier confusion, first: if your image socket is empty and the node still complains, you may be on the wrong one of the Pro pair - the descriptions are swapped on fal's pages, and the schema is the only reliable guide. Second, price shape. $0.03 for the first megapixel then $0.015 after means 1920×1080 is $0.045 and 2MP-ish outputs stay cheap; but you're still paying per attempt with no batch discount, so fifty exploratory renders is a couple of dollars.
Third, the honest question of whether you need Pro at all. For most work Klein at $0.011–0.015 a megapixel is the better buy, and the local Klein models are free after electricity. Pro earns its rate on prompt comprehension and composition quality - and it's the tier whose weights will never be downloadable, which is exactly why renting is the only option. Where a hosted filter would refuse the job, stay local; no API tier is going to route around its own moderation.
Inputs (12)
| 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 seed to use for the generation. -1 leaves it to the model. |
| safety_tolerance | COMBO | 2 | The safety tolerance level for the generated image. 1 being the most strict and 5 being the most permissive. |
| enable_safety_checker | BOOLEAN | true | Whether to enable the safety checker. Disabling it requires account authorization; unauthorized requests are always checked. |
| output_format | COMBO | jpeg | The format of the generated image. |
| 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 (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| seed | INT | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |