Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · GPT Image 2 Edit · $0.01-0.41/image
ComfyUI Node

arkennemasis fal · GPT Image 2 Edit · $0.01-0.41/image

The edit model that obeys, and one dropdown that triples the bill

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · GPT Image 2 Edit · $0.01-0.41/image
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • mask
  • images
  • image_paths
  • info
◄prompt►
◄image_sizeauto►
◄image_size_width1024►
◄image_size_height1024►
◄backgroundauto►
◄qualityhigh►
◄num_images1►
◄output_formatpng►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

You cannot download GPT Image. It lives behind OpenAI's API, and this node is one of the ways it gets into a ComfyUI graph - feed it images, describe the edit, get images back. The reason to reach for it over a local Qwen-Edit or Flux Kontext is the same reason people use ChatGPT for image work: it follows instructions in plain language, handles text inside the picture, and doesn't need a reference LoRA to understand what you meant. The reason to hesitate is the price table.

What the node gives you

image_1 is a required socket and up to image_6 are optional; each carries a batch, the node sends them in socket order, and the endpoint allows a maximum of 16 input images overall. This is genuinely useful - an edit that says "match the lighting from the first picture and the jacket from the second" is the kind of thing a single-reference model can't do.

image_size is a dropdown of canonical sizes (square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9, auto, custom) with auto as the default, which infers the shape from your inputs. Pick custom and the image_size_width / image_size_height boxes (16–14142, stepped by 16) take over. If your whole workflow is "edit this photo and give it back the same shape," set this deliberately rather than trusting auto - the model will happily reframe your picture otherwise.

quality (auto / low / medium / high, default high) is the money dropdown, and I mean that literally. The pack's own price table for this node says a 1024×1024 image at low is about $0.015, at medium about $0.061, and at high about $0.219. Same prompt, same size, 14x the cost between ends. The default sits at the expensive end and OpenAI's own note is that quality "significantly affects cost." Start at medium, go to high only for the final pass - and note that a 3840×2160 at high is where the node's $0.41 top-of-range figure comes from.

num_images (1–4) multiplies all of that. output_format is png / jpeg / webp. background is auto / transparent / opaque - transparent is the one people forget exists and then fight with local matting nodes over. mask is an optional MASK input, "what part of the image to edit": wire a mask in and the edit is scoped to it.

Then the pack's shared controls: max_cost_usd (default $20, 0 disables), reuse_identical_run, extra_json, and max_concurrent (default 1 = one paid fal call at a time across the run).

Outputs: images (an IMAGE batch that wires into anything downstream), image_paths, and info, the JSON with request id, cost estimate, saved files and fal's full answer. Results are saved under output/fal/openai_gpt-image-2_edit/.

Install

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

ComfyUI Manager → search arkennemasis also works. The key goes in the .env in your install root (the folder with run_nvidia_gpu.bat):

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

Restart ComfyUI. Worth saying out loud for anyone who skipped the intro: this is a third-party wrapper that sends your images to fal, which forwards them to OpenAI. If the pictures matter, that's the trade.

Where people get burned

  • The price badge can't see your images. It shows the cost for a 1 MP picture at the settings you picked; the pre-run check measures the real thing and holds it against max_cost_usd. Read the cap as the real guardrail and the badge as a hint.
  • "The seed didn't change anything." There's no seed on this node, and reuse_identical_run is on by default - identical settings and identical input files means it returns the files you already paid for, even after a ComfyUI restart. Turn it off for a fresh take; leave it on and re-running a graph costs nothing.
  • high by default. First experiments shouldn't be at the top quality tier. Drop to medium or low, get the prompt right, then spend once.
  • Everything in the graph queues at max_concurrent: 1, and if one fal node fails, the queued ones never start - good for your balance, mildly annoying when you're batching.
Categoryarkennemasis/fal/Image/OpenAI

Inputs (19)

NameTypeDefaultDescription
promptSTRINGThe prompt for image generation
image_1IMAGEThe URLs of the images to use as a reference for the generation. A maximum of 16 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_sizeCOMBOautoThe size of the generated image. Use 'auto' to infer from input images. 'custom' uses the width and height below.
image_size_widthINT102416–14142Width in pixels when image_size is 'custom'.
image_size_heightINT102416–14142Height in pixels when image_size is 'custom'.
backgroundCOMBOautoBackground for the generated image
qualityCOMBOhighQuality for the generated image. Use 'auto' to let the model pick the best quality for the prompt.
num_imagesINT11–4Number of images to generate
output_formatCOMBOpngOutput format for the images
image_2optIMAGEThe URLs of the images to use as a reference for the generation. A maximum of 16 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_3optIMAGEThe URLs of the images to use as a reference for the generation. A maximum of 16 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_4optIMAGEThe URLs of the images to use as a reference for the generation. A maximum of 16 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_5optIMAGEThe URLs of the images to use as a reference for the generation. A maximum of 16 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
image_6optIMAGEThe URLs of the images to use as a reference for the generation. A maximum of 16 images are allowed. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1).
maskoptMASKThe URL of the mask image to use for the generation. This indicates what part of the image to edit.
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 (3)

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