Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · Flux Pro v1 Fill · $0.05/MP
ComfyUI Node

arkennemasis fal · Flux Pro v1 Fill · $0.05/MP

The inpainting endpoint for people who don't want to run a 12B model

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · Flux Pro v1 Fill · $0.05/MP
  • image
  • mask
  • images
  • image_paths
  • seed
  • has_nsfw_concepts
  • prompt
  • timings
  • info
◄prompt►
◄seed-1►
◄num_images1►
◄output_formatjpeg►
◄safety_tolerance2►
◄enhance_promptfalse►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

Fill is the inverse of Erase: give it a picture, a mask and a prompt, and it generates into the hole. Swap the sky, replace the sign, put the missing person back into the group photo. It's the fal-ai/flux-pro/v1/fill endpoint - hosted FLUX.1 [pro] Fill - wrapped as a node in comfyui-arkennemasis.

So the first question is why you'd pay $0.05 a megapixel for this when Flux Fill Dev runs locally and the community has been calling it the best inpainter around for a while. Two answers, both real. One, Dev is the distilled open tier under the non-commercial Flux licence, and Pro isn't - if the job is commercial, that distinction is the whole ballgame. Two, Fill Dev in 2026 is no longer the automatic pick: people doing serious masked editing have been moving to Qwen-Image-Edit and Flux 2 Klein, with the honest community verdict on Fill being that it's a step behind. What Pro Fill still buys you is a mask you can trust with no LoRA stacking, no VRAM math, and no scheduler arguments.

Inputs that matter

  • prompt - describe what should appear in the masked area, and describe the surroundings too. The classic failure is prompting only the object and getting invented clutter around it; "on a clean cafe table, nothing else" is the kind of trailing clause that saves a render.
  • image and mask - both required, and the mask is the pack's usual deal: you paint where you want the edit, the node converts it to an RGBA PNG and resizes it to the image's dimensions. Sloppy mask edges are the number one cause of bad inpainting, so paint past the object.
  • safety_tolerance (1 strict … 5 permissive, default 2), enhance_prompt, num_images (up to 4), seed, output_format.
  • The shared money widgets: max_cost_usd, reuse_identical_run, extra_json, max_concurrent.

Cost

Billed by the megapixel of output, rounded up, times num_images. fal's megapixel is 1024×1024, so a plain 1024×1024 outpaint is one megapixel - five cents. Set num_images to 4 and you're at twenty. That rounding is why 1024×1024 doesn't cost 1.05 MP and get billed as two: the pack sizes its estimates against fal's own worked examples, so the badge and the run agree. The pre-run check against max_cost_usd (default $20) happens before anything is uploaded, which means a vetoed run costs nothing at all.

Outputs

images for the IMAGE socket, image_paths for the file, seed as an integer, plus prompt, timings, has_nsfw_concepts and info (JSON: request id, cost estimate, files, fal's answer). Results land in output/fal/fal-ai_flux-pro_v1_fill/.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis

Or install comfyui-arkennemasis from ComfyUI Manager and restart. Then one line in the .env beside run_nvidia_gpu.bat:

FAL_KEY=your-key-from-fal.ai/dashboard/keys

The fal nodes in this pack need no Python packages at all - the reference to httpx in the pack's requirements is for its separate ChatGPT-login nodes, which you're not using here. No key box exists on the node so your key can never travel inside a workflow file.

Practical notes

Compositing is not optional. The old warning from the inpainting threads still holds: Flux Fill made people stop compositing, and three to five uncomposited passes turn a picture to trash. Blend the changed region back over the original.

If the fill looks "pasted", the mask is too tight, not the model - feather the edge or make the masked region larger than the thing you're removing. If it looks like a completely different image, your prompt is describing the whole scene rather than the region. And if ComfyUI restarts while fal is working, nothing is lost: every submit is logged in output/fal/_requests.jsonl, and the pack's free Recover Result node collects the finished job by id without charging you a second time.

Categoryarkennemasis/fal/Image/Flux

Inputs (12)

NameTypeDefaultDescription
promptSTRINGThe prompt to fill the masked part of the image.
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.
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.
imageIMAGEThe image URL to generate an image from. Needs to match the dimensions of the mask.
maskMASKThe mask URL to inpaint the image. Needs to match the dimensions of the input image.
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.