arkennemasis fal · Flux 2 Flash · $0.005/MP
The half-cent Flux 2 you use to find the prompt that works
- images
- image_paths
- seed
- prompt
- timings
- has_nsfw_concepts
- info
Half a cent per megapixel. A 1024×1024 render out of Flux 2 through this node costs about $0.005 - under a penny - and that makes it the cheapest sensible way to iterate on a Flux 2 prompt before you commit the good model to it.
This is the speed tier of the family, not a different model. Same realism push, same text rendering, same "it writes legible signage" trick. What's missing compared to the full Flux 2 node is the knobs: no num_inference_steps, no acceleration dropdown. The endpoint handles sampling itself, and you get the prompt, the size and a few switches. That's the trade. You're buying cheap and fast, and you're giving up the ability to trade wall time for quality inside the node.
The inputs
prompt - the model's encoder reads like an LLM chat turn, so write sentences. "A studio product shot of a matte black water bottle on a pale grey seamless backdrop, softbox from the left" beats a pile of comma-separated tags, and ((emphasis:1.4)) weighting does nothing at all.
image_size - presets (landscape_4_3 is the default) or custom, which switches on image_size_width / image_size_height. Width and height are the actual cost driver here: 1024×1024 is 1MP, 1920×1080 is roughly 2MP, and the bill follows.
num_images - this is the one to use properly. At half a cent a shot, asking for four at once is the whole point of a draft stage, and the node returns them as one batch on the images output.
guidance_scale (2.5) and seed (-1) - leave them unless you're reproducing something.
enable_prompt_expansion - off. It hands your prompt to an LLM for rewriting. Great if you typed six words and want twenty; terrible if you already know what you're asking for.
enable_safety_checker - on, and it flags rather than errors: a refused image comes back as a black square. Turning it off requires authorization on your fal account, and unauthorized requests are checked regardless.
output_format - png, jpeg or webp. PNG for anything you'll edit further.
Outputs
images (IMAGE, batched if you asked for several), image_paths (STRING - where they landed), seed (INT), prompt (STRING, what the model received after any expansion), timings, has_nsfw_concepts, and info - JSON with request id, cost estimate, saved files and fal's full answer. Wire images into SaveImage, a contact-sheet node, or straight into the Flash Edit sibling if you're chaining an edit pass.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI; the node lives under arkennemasis → fal → Image → Flux. ComfyUI-Manager can grab the pack by Git URL. The pack's only pinned dependency is httpx, which belongs to its ChatGPT/Codex nodes - the fal provider uses Python's stdlib, so this node installs clean on any working ComfyUI.
Then the key, one line in the .env by run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
Nothing on the node asks for it, deliberately - a key that lives in a file can't end up baked into a workflow you paste on Discord.
Where people get burned
Expecting it to be the good model. Flash is the draft tier. If your hands keep coming out wrong, that's not a Flash bug - it's why the full Flux 2 node exists. Draft here, re-run the keeper there.
Forgetting the megapixel math. Price scales with area, so a 2MP render is twice a 1MP one and num_images multiplies it again. Four 2MP drafts is about four cents, which is still cheap - just don't build a 200-image batch by accident.
Wondering why the second identical run was instant and free. reuse_identical_run is on by default: same settings, same inputs, files still in output/fal, so the node hands them back rather than paying twice. Turn it off for a new take.
Tripping the cap mid-batch. max_cost_usd defaults to $20 and is checked before upload, so an over-budget run stops for free. Lower it to a dollar or two while experimenting and you'll never have a surprise. If a fal request does fail, the node retries rate limits and gateway errors itself; jobs queued behind a failure aren't started, so you don't get billed for a cascade.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate an image from. | |
| guidance_scale | FLOAT | 2.500–20 | Guidance Scale is a measure of how close you want the model to stick to your prompt when looking for a related image to show you. |
| seed | INT | -1-1–2147483647 | The seed to use for the generation. If not provided, a random seed will be used. -1 leaves it to the model. |
| image_size | COMBO | landscape_4_3 | The size of the image to generate. The width and height must be between 512 and 2048 pixels. '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'. |
| num_images | INT | 11–4 | The number of images to generate. |
| enable_prompt_expansion | BOOLEAN | false | If set to true, the prompt will be expanded for better results. |
| enable_safety_checker | BOOLEAN | true | If set to true, the safety checker will be enabled. Disabling it requires account authorization; unauthorized requests are always checked, and images flagged as unsafe are returned as black images. |
| output_format | COMBO | png | 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 (7)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| seed | INT | — |
| prompt | STRING | — |
| timings | STRING | — |
| has_nsfw_concepts | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |