arkennemasis fal · Qwen Image 3 Edit · $0.04-0.075/image
Three references, one sentence, four cents
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- images
- image_paths
- seed
- info
Here's the annoying part of the local editing stack: Qwen-Image-Edit is the open instruction editor everyone actually uses, and it's frozen at 2511 - qwen.md is blunt about it, "the successor went closed", with Qwen-Image-2.0 shipping API-only. So the newest Qwen editing capability exists, and it's a call, not a download. This node is that call.
ArkFal_alibaba_qwen_image_3_edit edits an image from one to three reference pictures plus a natural-language instruction, preserving identity and detail while applying the change. It's $0.04 per image at 1K, $0.075 at 2K, and it lives in the fal branch of the pack.
When it beats doing it locally
Locally, Qwen-Image-Edit 2511 remains the pick for anything where a face has to survive the edit - the KB calls that its clearest remaining advantage. So this node isn't a replacement; it's the escape hatch. You reach for it when the GPU is tied up, when you want six variants without a six-minute render each, or when you're on a laptop and it's the difference between editing the picture and not.
You should also know what you're buying into, and that's the honest frame from external-api-nodes.md: your reference images and prompt leave the machine, the provider's moderation applies and can't be patched out, and in this specific pack's category a node that holds a key and calls the network by design is exactly the shape of thing you should look at once before its first run. This is a new pack with a large surface - that's a reason to read it, not a reason to avoid it.
What you actually set
prompt- the instruction. Up to 5,000 characters, Chinese or English. You refer to the references as "image 1", "image 2", "image 3", so ordering is meaningful.image_1- required. The model takes one to three references, soimage_2andimage_3are the ones you'll actually use; the extra optional sockets exist because each socket can carry a whole batch, sent through in socket order. Keep it at three references. Files want to be 384–2048px per side, max 10MB each, and JPEG/PNG/WebP with no alpha - transparency is flattened to RGB before upload.image_size-square_hdby default. Pick one of fal's presets, orcustomand useimage_size_width/image_size_height(16–14142 in steps of 16, total pixels between 512² and 2048²).num_images- 1 to 6, so you can generate a set of takes in one call. Cost scales with it.enable_prompt_expansion- on by default, and it runs your prompt through an LLM first. That's usually a win for vague prompts and a loss for surgical ones. If you wrote "change the jacket to red, keep everything else", turn it off; the rewriter loves to add detail you didn't ask for.negative_prompt,seed(-1lets the model pick),enable_safety_checker(on; disabling needs account authorization and unauthorized requests are checked anyway),output_format.
Plus the shared fal controls: max_cost_usd (a $20 default cap that stops the run before anything is uploaded), reuse_identical_run (on - the same inputs return the already-paid result, even after a restart), extra_json and max_concurrent.
Outputs are images (an IMAGE batch), image_paths, the seed fal used, and info with the request id, cost estimate and fal's full answer.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI (or use Manager and search arkennemasis), then:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
into the .env next to run_nvidia_gpu.bat. No key widget on the node, by design. No models to download either - fal holds the weights, which is the whole point.
Small print worth reading
The cost estimate this node shows is computed at the 2K rate, so a 1K run gets quoted at nearly double what fal will actually charge. Don't panic at the badge, and don't set max_cost_usd so tight that it blocks an honest run.
Results go to output/fal/alibaba_qwen-image-3_edit/. If a batch comes back at mixed sizes, the IMAGE output carries only the pictures matching the first one - all of them are still saved to disk, which is the pack quietly doing the right thing.
Last thing: the request is legal, and the outcome isn't guaranteed. Instruction editors drift identity, lighting and colour a little on every pass; if the face matters, that's still Qwen-Image-Edit 2511's home turf.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt describing the desired edit. Supports Chinese and English. Max 5000 characters. | |
| negative_prompt | STRING | Content to avoid in the generated image. Max 500 characters. Empty leaves it out. | |
| image_size | COMBO | square_hd | The size of the generated image. If not provided, the model determines the resolution automatically. Total number of pixels must be between 512x512 and 2048x2048. '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'. |
| enable_prompt_expansion | BOOLEAN | true | Enable automatic LLM prompt rewriting for better results. |
| seed | INT | -1-1–2147483647 | Random seed for reproducibility (0-2147483647). -1 leaves it to the model. |
| enable_safety_checker | BOOLEAN | true | Enable content moderation for input and output. Disabling it requires account authorization; unauthorized requests are always checked. |
| num_images | INT | 11–6 | The number of images to generate. |
| output_format | COMBO | png | The format of the generated image. |
| image_1 | IMAGE | Reference images for editing (1-3 images required). Order matters: reference as 'image 1', 'image 2', 'image 3' in prompt. Resolution: 384-2048px each dimension. Max size: 10MB each. Formats: JPEG, JPG, PNG (no alpha), WEBP. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_2opt | IMAGE | Reference images for editing (1-3 images required). Order matters: reference as 'image 1', 'image 2', 'image 3' in prompt. Resolution: 384-2048px each dimension. Max size: 10MB each. Formats: JPEG, JPG, PNG (no alpha), WEBP. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_3opt | IMAGE | Reference images for editing (1-3 images required). Order matters: reference as 'image 1', 'image 2', 'image 3' in prompt. Resolution: 384-2048px each dimension. Max size: 10MB each. Formats: JPEG, JPG, PNG (no alpha), WEBP. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_4opt | IMAGE | Reference images for editing (1-3 images required). Order matters: reference as 'image 1', 'image 2', 'image 3' in prompt. Resolution: 384-2048px each dimension. Max size: 10MB each. Formats: JPEG, JPG, PNG (no alpha), WEBP. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_5opt | IMAGE | Reference images for editing (1-3 images required). Order matters: reference as 'image 1', 'image 2', 'image 3' in prompt. Resolution: 384-2048px each dimension. Max size: 10MB each. Formats: JPEG, JPG, PNG (no alpha), WEBP. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| image_6opt | IMAGE | Reference images for editing (1-3 images required). Order matters: reference as 'image 1', 'image 2', 'image 3' in prompt. Resolution: 384-2048px each dimension. Max size: 10MB each. Formats: JPEG, JPG, PNG (no alpha), WEBP. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| 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 (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| seed | INT | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |