GPT Image 2.5 Flare · Image Editing
Sixteen Sources, One Mask, and an Alpha Channel You Can Actually Use
- image_urls
- mask_url
- images
- alpha
- task id
Instruction editing is where the character-consistency conversation went: stop trying to make the model remember a character, put the reference in front of it and describe the change. OpenAI's GPT Image line is one of the two or three tools that made that shift work, and Flare is the speed-first half of the 2.5 pair. This node takes one to sixteen source images, a sentence, and optionally a mask - and hands you back not just the image but a MASK of its transparency.
Why you'd reach for it
Because it does the thing local models are worst at: follow a plain-language instruction about this specific image without repainting the whole frame. Same reason people keep Gemini image in a side tab - the closed frontier is where "make it wear a red jacket, keep everything else" actually behaves. Flare leans fast and cheap; about $0.001816 an image is the headline rate, and it moves with your resolution and quality tier.
The other half of the picture you should have in your head: this is the category where the KB's API-node essay earns its keep. Prompts and source images leave your machine, and the vendor's filter - not the node - decides what it will edit. GPT Image's moderation has swung back and forth for years, and the enthusiast community's long-standing complaint is the unpredictability, not the existence of it.
Inputs worth setting
Required:
- prompt - say what to change and what must stay the same. The second half is what keeps edits surgical.
- image_urls - an autogrow socket group: connect one image and another socket appears, up to sixteen. Order matters, because your prompt refers to them by position.
- aspect_ratio (default 1:1), resolution (
1kby default; 2k and 4k above it), quality (five tiers; higher means more detail, more time, more money), num_outputs (1–10 - each one billed separately, so 10 means ten times the rate), output_format (png, plus JPEG/WebP), output_quality (−1 leaves compression to the model; 0–100 for JPEG/WebP only). - input_fidelity - how closely to hold onto the look of your sources. This is the knob to fiddle with when an edit drifts off-model.
- background - the output's background treatment, including transparent.
Optional: mask_url, an IMAGE input. The convention is inverted from what most ComfyUI users expect: transparent pixels mark the area to repaint, in the first source image. So a black/white mask from a segmentation node needs inverting in alpha before it means what you want.
Outputs: images, an alpha MASK (1 is opaque - feed it into compositing or mask ops), and task id.
Installing it
ComfyUI Manager → SpicyAPI → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, open Settings > SpicyAPI, paste a key from spicyapi.ai/console/keys, and restart once more so the node list is built from your account. Nothing else to install - no Python dependencies and no weights; your inputs are uploaded for you and cached per account for 12 hours by content hash, so iterating on the prompt doesn't re-upload the same sources.
Practical gotchas
num_outputs is the classic accidental bill: ten images at 4k is ten times everything. Set Max cost per run in Settings > SpicyAPI and the node refuses any quote above your ceiling before the task exists. The node's badge is a rate per the pack's design, not a total, because it can't know your final bill before the run; the actual charge is printed when it finishes.
Two API errors to recognise: 40004, "no deployment serves this combination" - change the option the message names instead of re-running; and a task ending content_rejected, which means the model declined and (unless the model page says refusals are billed) didn't charge you. Cancelling in ComfyUI stops your wait, not the job - it keeps running, bills on success, and sits in your console up to 14 days.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Say what to change and what must stay the same. | |
| image_urls | COMFY_AUTOGROW_V3 | One to 16 source images, in the order your prompt refers to them. | |
| aspect_ratio | COMBO | 1:1 | Output aspect ratio. |
| resolution | COMBO | 1k | Output size tier. |
| quality | COMBO | high | Rendering quality. Higher tiers add detail, time and cost. |
| num_outputs | INT | 11–10 | How many images to return, each billed separately. |
| input_fidelity | COMBO | low | How closely to keep the look of the source images. |
| background | COMBO | auto | Background treatment of the result. |
| output_format | COMBO | png | File format of the returned images. |
| output_quality | INT | -1-1–100 | Compression quality for JPEG and WebP, from 0 to 100. -1 leaves it to the model. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
| mask_urlopt | IMAGE | Optional PNG mask: transparent pixels mark the area to repaint in the first source image. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| alpha | MASK | Transparency of each image: 1 is opaque. |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |