Nodes/ComfyUI_Fill-Nodes/FL GPT Image-1
ComfyUI Node

FL GPT Image-1

OpenAI's gpt-image-1 for generation and editing, inside ComfyUI

By filliptm·Created 3 years ago·Updated a day ago· 630
FL GPT Image-1
  • image
  • mask
  • image
  • API Response
prompt
api_key
batch_size1
size1024x1024
qualityauto
backgroundauto
output_formatpng
output_compression100
moderationauto
seed0

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-1 access 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.

Category🏵️Fill Nodes/GPT

Inputs (12)

NameTypeDefaultDescription
promptSTRING
api_keySTRING
batch_sizeINT11–4
sizeCOMBO1024x10243 options: 1024x1024, 1536x1024, 1024x1536
qualityCOMBOauto4 options: auto, high, medium, low
backgroundCOMBOauto3 options: auto, transparent, opaque
output_formatCOMBOpng3 options: png, jpeg, webp
output_compressionoptINT1001–100
moderationoptCOMBOauto2 options: auto, low
seedoptINT00–2147483647
imageoptIMAGE
maskoptIMAGE

Outputs (2)

NameTypeDescription
imageIMAGE
API ResponseSTRING