GPT-Image-2.5 Sunburst
The same OpenAI dial panel, a different renderer behind it
- maskImage
- referenceImages
- advancedFeatures.watermark.image
- image
What this is, minus the marketing
GPT-Image-2.5 Sunburst is one of the pack's two OpenAI image endpoints. Flare is the other. They expose an identical widget set - same inputs, same ranges, same defaults - and the only difference a user can see is which model identifier the node is bound to. If you were hoping for a documented "Sunburst is for X and Flare is for Y," the schema doesn't have one: the pack's own description for each node is empty, and the difference lives in whatever OpenAI's 2.5 revision split is. So the useful advice is the boring kind: run the same prompt, same size, same settings.quality through both, look at the 20 results, and pick per project. Cost is per call either way, and the node prints it on the title bar.
Why bother with the second endpoint at all? Because when a model's real problem is unpredictability, a second sample of the same prompt is the cheapest debugging tool you have. Plenty of people run a prompt through one, get something off-model, and assume the prompt is wrong.
What's on the node
positivePrompt is the only required input. The generation surface is width and height (defaults 1024×1024, 16–3840 in steps of 16) and numberResults, up to 20 variations in one queue slot. settings.quality gives you auto, max, xhigh, high, medium or low, and settings.moderation gives you auto or low - the loosening dial, not a bypass. There is a settings.background choice of auto, opaque or transparent; pair transparent with outputFormat: PNG and you've got an alpha channel to composite with.
For anything beyond text-to-image there are two IMAGE sockets: referenceImages for visual anchoring - the single most effective consistency trick available on a node with no seed - and maskImage for inpainting, so you can keep the composition and only let the model redraw the region you masked. Both are worth the install on their own; it's much nicer to ask OpenAI's renderer to fix one region than to run the whole image again and hope.
The advancedFeatures group is the watermark set (advancedFeatures.watermark.text, .image, .displayPosition, .fontColor, .bgColor, plus the .opacity toggle that gates .opacity_value). Off by default, and while it's off none of those fields are sent at all. The safety group is safety.checkContent, which adds a check and, per the author's tooltip, increases total generation time. ttl gates ttl_value if you're keeping result URLs around instead of downloading. outputFormat (JPG/PNG/WEBP) and outputQuality (20–99) close it out.
Output: one image, natively typed, straight into Preview or Save.
Install
Manager → search Runware → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Installs runware-sdk>=1.6.5, pillow and soundfile. Nothing to download beyond that, because there are no weights involved - this is a REST call wrapped in a node. Key from runware.ai/api-keys into ComfyUI Settings → Runware API key, or set RUNWARE_API_KEY, or runware auth login once.
Where people get burned
Using it as your only image model. Per the KB's read on the closed-image field, OpenAI's image line earns its place on text rendering and instruction following, and the community's long-running complaint is moderation you can't predict - prompts that come back refused for reasons a landscape prompt shouldn't trip. Have a local checkpoint for the work this endpoint won't do. That's the general rule for API nodes: right tool for a model you cannot run, wrong default for one you can.
Feeding it your client's photos. The node's job is to send your inputs to someone else's server. That's the whole trade - convenience and capability in exchange for the images leaving your machine, subject to another company's logging and filter. Decide that per project, not per default.
Forgetting that this is a snapshot. The node is bound to one model identifier. When the pack updates, a newer GPT Image revision shows up as its own node; there's no dropdown to move to it. If you specifically want the freshest model before the pack catches up, that's what the pack's generic Runware (custom) node is for - it takes any model identifier and returns raw JSON.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| maskImageopt | IMAGE | — | |
| referenceImagesopt | IMAGE | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| widthopt | INT | 102416–3840 | Width of the generated media in pixels. |
| heightopt | INT | 102416–3840 | Height of the generated media in pixels. |
| 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. | |
| settings.backgroundopt | COMBO | auto | Background handling in generated images. |
| settings.moderationopt | COMBO | auto | Content moderation level. |
| settings.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. Increases total generation time. |
| 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 | — |