GPT Image 2
GPT Image 2 in your ComfyUI graph — with moderation dialed to 'low'
- referenceImages
- advancedFeatures.watermark.image
- image
GPT Image is OpenAI's image model line - the successor to DALL-E - and it's the thing most people think of when they picture "AI image generator," because it's the one that went viral in ChatGPT. GPT Image 2 is the current API tier, and this node puts it in ComfyUI. Type a prompt, optionally feed it a reference image, and get back a native IMAGE. The reason you'd pick this over the open models in the pack is its specific strengths: excellent text rendering and a strong instinct for graphic-design-flavored output - posters, UI mockups, typography-heavy compositions - where diffusion models tend to garble letters.
The honest context: this is a closed, cloud-only model, and the community's relationship with it has always been complicated. The quality is real. The censorship is also real - OpenAI's guardrails have oscillated ("everything trips its baby mode content filters" was a classic complaint), and reliability of access has been a standing gripe. What this node gives you is at least some dials on that: providerSettings.openai.moderation and providerSettings.openai.quality.
How it works
Standard image-node pattern: an imageInference request to Runware (fronting OpenAI's API), returned as a native IMAGE tensor. Unlike most image nodes, it has a required width/height pair that goes from 16 to 3840px - genuinely flexible canvas control.
Inputs that matter
positivePrompt(required) - the description. For GPT Image's text-rendering strength, be explicit about the words and layout: "a poster that readsGrand Openingin bold serif, centered." Quote the text you want rendered.width/height- 16–3840px, default 1024. The range is huge; use it for banners or tall posters.referenceImages- anIMAGEinput for editing. GPT Image's editing is one of its better features - wire in an image and prompt changes around it.providerSettings.openai.quality-auto,high,medium,low(defaultauto). This is the quality/cost trade-off dial.highfor final work (slower, pricier),medium/lowfor drafts and iteration.providerSettings.openai.moderation-autoorlow(defaultauto). This is the censorship dial, and the headline control.lowis the looser tier - still filtered, but less trigger-happy. If you're here specifically because GPT Image is less restrictive than some rivals, this is where that lives. It's still OpenAI;lowis not "no moderation."numberResults(1–20) - seeded takes. Cloud calls are metered; start at 2–4.watermark- the Runware Watermark builder socket, if you want a stamped output.safety/safety.checkContent- Runware's own content check on top of OpenAI's, off by default.outputFormat/outputQuality- JPG (default), PNG, WEBP, and compression quality. PNG for text-heavy work you'll re-edit.
Single output: image → Preview or Save.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Or ComfyUI Manager → search Runware → install → restart. API key via Settings, RUNWARE_API_KEY, or runware auth login. No local models.
The honest caveats
This is the most "black box" of the pack's image nodes: no weights, no seed-level reproducibility guarantees, moderation that can change without notice, and billing that adds up on high quality. The standing community argument against closed image models applies in full - an API can be revoked, repriced, or re-filtered overnight, which is exactly why the ecosystem keeps moving to open weights. Use this node for what it's genuinely good at - typography, design-style output, reliable editing - and don't build your whole pipeline on the assumption it'll be identical next month. For unrestricted work, it is not the node (the Grok one in this same pack is the looser option), and moderation: low gets you a looser OpenAI, not a different company.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| width | INT | 102416–3840 | Width of the generated media in pixels. |
| height | INT | 102416–3840 | Height of the generated media in pixels. |
| referenceImagesopt | IMAGE | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| providerSettings.openai.moderationopt | COMBO | auto | Content moderation level. |
| providerSettings.openai.qualityopt | COMBO | auto | Image quality level. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |