FL GPT Image-1
OpenAI's gpt-image-1 for generation and editing, inside ComfyUI
- image
- mask
- image
- API Response
FL_GPT_Image1 is a direct wrapper around OpenAI's gpt-image-1 model, and it does double duty: generate from a text prompt alone, or wire in an existing image (and optionally a mask) and it switches to editing that image instead. Either way, this is a real, metered OpenAI API call - you supply your own api_key, and every queue costs actual money the moment it fires.
Why reach for a closed API node inside an open-source workflow at all? Sometimes you specifically want what a hosted model gives you - natively multimodal image understanding, notably strong text rendering inside generated images - and you'd rather get it as one step in a larger ComfyUI graph than bounce out to a separate tool. That's the trade this node makes explicit: real quality, real cost, real dependency on OpenAI staying up and your key staying valid.
The generation controls are OpenAI's own parameters, exposed directly. prompt is required; batch_size (1–4, default 1) generates multiple variants per call. size picks from three fixed dimensions (1024x1024, 1536x1024, 1024x1536) rather than arbitrary sizes, since you're bound by what the API actually offers. quality (auto/high/medium/low) and output_format (png/jpeg/webp) are straightforward - but background (auto/transparent/opaque) has one real dependency worth knowing: transparency needs a format that actually supports an alpha channel, so if you're after a transparent output, pair it with png or webp, not jpeg. Optional output_compression (1–100) tunes file size, moderation (auto/low) is OpenAI's own content-filter strictness, and seed gives you reproducibility where the API supports it.
Editing mode kicks in the moment you wire in the optional image input (and, if you want a masked edit rather than a whole-image edit, mask alongside it) - the node switches from the generate endpoint to the edits endpoint and sends a multipart request instead.
Outputs are image - the result, or results, if batch_size is above 1 - and API Response, the raw response string. Don't skip that second output: it's your actual window into what OpenAI's API said, which matters a lot when something fails.
Installing the node is the standard Fill-Nodes routine - search "Fill-Nodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
- then restart ComfyUI. The real prerequisite isn't the install, it's your own OpenAI account:
gpt-image-1access requires billing enabled, and depending on your account's verification status, OpenAI can gate access to it separately from a general API key.
Where people get burned. OpenAI's content filters on image generation have a real reputation in the community for being unpredictable - inconsistent flags, refusals on prompts that seem entirely reasonable. This node's own behavior when a request gets refused is to return an error image with visual text feedback rather than silently failing your whole graph, which is a genuinely considerate design choice - check that image and the API Response output together before assuming your prompt itself is broken. Persistent failures beyond that are almost always either an invalid or expired api_key, or an account that doesn't yet have gpt-image-1 access - read the API Response string rather than guessing. And a general point worth carrying across this whole pack: Fill-Nodes wraps a genuinely large number of real paid third-party services - OpenAI, Google, Fal.ai, RunwayML, Hugging Face, and more - across its AI-facing nodes. A public scare thread once went around when a user was surprised that a different node in this same pack (one of its Google Drive integrations) did precisely what its own documentation said it would do. It wasn't malware, it was a case of not reading what a feature-dense node actually does before feeding it credentials - the same discipline applies to every API key you paste into any node here, this one included.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| api_key | STRING | — | |
| batch_size | INT | 11–4 | — |
| size | COMBO | 1024x1024 | 3 options: 1024x1024, 1536x1024, 1024x1536 |
| quality | COMBO | auto | 4 options: auto, high, medium, low |
| background | COMBO | auto | 3 options: auto, transparent, opaque |
| output_format | COMBO | png | 3 options: png, jpeg, webp |
| output_compressionopt | INT | 1001–100 | — |
| moderationopt | COMBO | auto | 2 options: auto, low |
| seedopt | INT | 00–2147483647 | — |
| imageopt | IMAGE | — | |
| maskopt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| API Response | STRING | — |