arkennemasis fal · Flux Pro Kontext · $0.04/image
Change one thing in a photo by describing the change
- image
- images
- image_paths
- seed
- has_nsfw_concepts
- prompt
- timings
- info
Kontext is the model that made instruction-based editing ordinary: you hand it a picture and a sentence, and you get the same picture back with the clothing changed, the background swapped, or that watermark gone. The community's reaction to the last one was, roughly, disbelief. This node is the Pro tier on fal - $0.04 per image, image in, edited image out, no mask anywhere.
What it is, and why you'd pay for it
Kontext consumes reference images in context rather than injecting them as adapter embeddings, which is the mechanical reason it holds a subject across successive edits where IP-Adapter-style approaches drift. That makes it the natural fit for turnaround sheets, character consistency, and any "same person, new scene" workflow.
The Pro tier is closed weights - there's no local option at any VRAM, which is the honest reason to route this through an API at all. Kontext [dev] is the open version if you'd rather run it locally; Pro is the API-only one, and pricing here is flat per image rather than per megapixel, so a big canvas doesn't cost more than a small one.
The documented ceiling, so you're not surprised: full-body framing degrades heads and hair, and it's been censored at the weights level since day one. If you want explicit output, this is the wrong model and there's nothing the node can do about it.
Inputs
prompt- the instruction. Say the change, not the scene: "change the jacket to red leather" beats a full re-description.image- the reference image prompt. This is what Kontext edits.aspect_ratio- default(not set), which leaves it to the model, and that's usually what you want. The options run from21:9through1:1to9:21if you need to force one.guidance_scale3.5 (1–20) - how hard it sticks to the instruction.seedfor repeats,num_images1–4.output_format(jpeg/png),enhance_prompt(default off - turning it on has fal rewrite your prompt, which is great for terse instructions and bad if your wording was the point).safety_tolerance, default2, with options 1–6 where 1 is strictest and 6 most permissive. This is the moderation dial rather than a quality one; raising it doesn't unlock a different model.
Plus the pack-wide four: max_cost_usd (default 20, 0 = off), reuse_identical_run (on), extra_json, max_concurrent.
Outputs
images → preview/save. image_paths → output/fal/fal-ai_flux-pro_kontext/. seed, prompt, timings, has_nsfw_concepts and info.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Or ComfyUI-Manager → search comfyui-arkennemasis. Restart ComfyUI; it's under arkennemasis/fal/Image/Flux. Add the key to .env beside run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
What actually goes wrong
Chained edits compound. Each pass re-renders the whole frame, so run five edits in a row and the image has quietly drifted. Kontext survives it better than most, but keep the original around and splice from it rather than from pass four.
Small text and logos. Editing near typography and brand marks is where instruction editing still visibly fails; the letterforms come back plausible and wrong.
Face anatomy at distance. Full-body shots are the known weak spot. Crop closer, edit, composite back if the frame demands it.
A price that doesn't scale with resolution but does with count. $0.04 per image, so num_images 4 is 16 cents - cheap, but four samples every time you tweak a word adds up faster than the badge suggests. Drop to 1 while you're iterating.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The prompt to generate an image from. | |
| 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. |
| guidance_scale | FLOAT | 3.501–20 | The CFG (Classifier Free 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. |
| 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. |
| aspect_ratio | COMBO | (not set) | The aspect ratio of the generated image. '(not set)' leaves it to the model. |
| image | IMAGE | Image prompt for the omni model. | |
| 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. |