Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux Pro Kontext · $0.04/image
ComfyUI Node

arkennemasis fal · Flux Pro Kontext · $0.04/image

Change one thing in a photo by describing the change

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux Pro Kontext · $0.04/image
  • image
  • images
  • image_paths
  • seed
  • has_nsfw_concepts
  • prompt
  • timings
  • info
◄prompt►
◄seed-1►
◄guidance_scale3.50►
◄num_images1►
◄output_formatjpeg►
◄safety_tolerance2►
◄enhance_promptfalse►
◄aspect_ratio(not set)►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

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 from 21:9 through 1:1 to 9:21 if you need to force one.
  • guidance_scale 3.5 (1–20) - how hard it sticks to the instruction. seed for repeats, num_images 1–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, default 2, 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.

Categoryarkennemasis/fal/Image/Flux

Inputs (13)

NameTypeDefaultDescription
promptSTRINGThe prompt to generate an image from.
seedINT-1-1–2147483647The 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_scaleFLOAT3.501–20The 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_imagesINT11–4The number of images to generate.
output_formatCOMBOjpegThe format of the generated image.
safety_toleranceCOMBO2The safety tolerance level for the generated image. 1 being the most strict and 5 being the most permissive.
enhance_promptBOOLEANfalseWhether to enhance the prompt for better results.
aspect_ratioCOMBO(not set)The aspect ratio of the generated image. '(not set)' leaves it to the model.
imageIMAGEImage prompt for the omni model.
max_cost_usdoptFLOAT20.00–100000Safety 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_runoptBOOLEANtrueIf 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_jsonoptSTRINGAdvanced: 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_concurrentoptINT11–32How 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)

NameTypeDescription
imagesIMAGE—
image_pathsSTRING—
seedINT—
has_nsfw_conceptsSTRING—
promptSTRING—
timingsSTRING—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.