OpenAI Image Edit
Gpt-image-2 with mask inpainting and continuity
- image
- client
- mask
- image
OpenAI Image Edit is the editing node in the ERPK/OpenAI family, and it's the most "ComfyUI-native" edit node in the pack: it takes a real IMAGE tensor (plus an optional MASK), and defaults to gpt-image-2, OpenAI's current flagship image model. GPT-Image-2's headline strengths are legible multilingual text and character continuity across edits - the same subject stays recognizable from one edit to the next, which is exactly what you want when you're iterating on a look instead of regenerating from scratch.
The mask support is what separates it from a basic web-UI edit. Wire a MASK into the mask input and only the white areas get edited - white means edit, black means keep. That makes this node genuinely useful for targeted inpainting inside a larger workflow: generate a face, mask the hair, ask for a different color, everything else stays untouched. It's the closest this pack gets to local inpainting ergonomics, minus the local sampler.
How it works
The node converts your IMAGE tensor to PNG bytes and sends it to OpenAI's edit endpoint. Two details worth knowing:
- Batched IMAGE input = multi-image reference. If you pass an IMAGE with a batch dimension > 1 (from an Image Batch / Rebatch node), all N frames go as reference images - gpt-image-2 uses them for character/scene continuity, up to 16. The mask, if provided, applies to the first.
- Masks become alpha. The mask is applied as transparency where it's white (edit area), which is how OpenAI's edit endpoint understands "change this region."
The result comes back as an IMAGE tensor, ready for your downstream chain.
The inputs that matter
- image - the input tensor. Batched = multi-reference continuity.
- prompt - the edit description. Specific beats vague, as always.
- mask - optional; white = edit, black = keep. This is the inpainting knob.
- model -
gpt-image-2(default), plus gpt-image-1.5 / 1 / 1-mini. - size - 1024-series sizes for the edit endpoint, auto-filtered by model.
- n - how many edited variants per call, 1–10.
- moderation - "auto" (default filters) or "low" (more permissive).
background (transparent requires a supporting format), quality (gpt-image-1 only), and input_fidelity (ignored by gpt-image-2, which always edits at high fidelity) are the deep-end options.
Installing it
Part of the ERPK Collection (eRepublik-Labs/comfyui-nodes-erpk). ComfyUI Manager: search erpk → ERPK Custom Nodes → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/eRepublik-Labs/comfyui-nodes-erpk.git erpk
cd erpk
pip install -r requirements.txt
Needs openai>=2.32.0 and an OpenAI API key (Settings → ERPK → API Keys). No model downloads.
Common issues
- "Prompt cannot be empty" - same rule as every node in the pack.
- Mask edits the wrong area - check the polarity: white = edit, black = keep. If the whole image changes, the mask may be inverted or not connected.
- Transparent background came out solid -
background: transparentneeds an output format that supports alpha; on formats that don't, transparency is dropped. - Cost per edit - gpt-image-2 is billed per edit.
n> 1 multiplies it. Use the seed andn=1while iterating.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input image(s) to edit. A single image is the default. If you pass a batched IMAGE (e.g. from an Image Batch / Rebatch node), all N images are sent as reference images — gpt-image-2 uses this for character/scene continuity (up to 16 images). Mask (if provided) applies to the first. | |
| prompt | STRING | Description of how to modify the image | |
| seed | INT | -1-1–2147483647 | Seed for reproducible outputs (best-effort). Randomizes by default. |
| clientopt | OPENAI_API_CLIENT | OpenAI API client from OpenAI API Config node | |
| maskopt | MASK | Optional mask indicating areas to edit (white = edit, black = keep) | |
| modelopt | COMBO | gpt-image-2 | Image editing model. gpt-image-2.5-sunburst / -flare add xhigh/max quality; gpt-image-2 offers multilingual text and character continuity across edits. |
| sizeopt | COMBO | 1024x1024 | Output image size. Select Custom to use custom_width and custom_height. gpt-image-2 and 2.5 accept any size with both edges divisible by 16, aspect ratio 1:3 to 3:1, 655,360 to 8,294,400 pixels and max edge 3840. Resolutions above 2560x1440 are experimental. |
| custom_widthopt | INT | 1024256–3840 | Width in pixels when size is Custom. Must be a multiple of 16. |
| custom_heightopt | INT | 1024256–3840 | Height in pixels when size is Custom. Must be a multiple of 16. |
| qualityopt | COMBO | auto | Image quality for GPT Image models; xhigh/max only on GPT Image 2.5 (clamped to high elsewhere). |
| moderationopt | COMBO | auto | Content moderation level. 'auto' uses OpenAI's default safety filters; 'low' relaxes them for permissive content. |
| nopt | INT | 11–10 | Number of edited image variants to return per call (OpenAI supports 1-10 for all GPT Image models). |
| backgroundopt | COMBO | auto | Background type for the edited output (GPT Image models only). 'transparent' works on GPT Image 2.5 only (gpt-image-2 rejects it) and needs png or webp output. |
| input_fidelityopt | COMBO | auto | Fidelity to the original input image(s). 'high' preserves details more aggressively; 'low' gives the model more creative freedom. Ignored by gpt-image-2 and the 2.5 models (always high fidelity). |
| output_formatopt | COMBO | png | Output file format. 'transparent' background needs png or webp. |
| output_compressionopt | INT | 1000–100 | Compression level 0-100 (100 = least compression). Applied only to jpeg and webp. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |