GPT Image-1.5 - Text to Image
Three Aspect Ratios and No Seed, On Purpose
- image
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
What it is, and when to bother
This is OpenAI's GPT Image 1.5, called through KIE.ai, wrapped as one ComfyUI node in KIE Next/Image/OpenAI/GPT Image. Nothing runs on your GPU. There's no checkpoint, no download, no free tier - you pay per image, through a reseller.
GPT Image's reputation is for two things: following a sentence rather than a tag soup, and rendering text that actually spells the words you asked for. If your prompt is a paragraph of staging directions and the image has to contain a label, a sign, or a headline, this line of models is usually less work than wrestling a local checkpoint. It came up as the successor to GPT Image 1 with a fidelity bump rather than a new architecture, so don't expect a different personality - expect fewer weird hands and better instruction adherence.
The honest counterweight: these models sit behind filters you cannot abliterate the way you can a local model's weights, and the filtering is unpredictable enough in practice that people who need specific or edgy content don't use them for serious work. If your generation is something a hosted policy might refuse, that's your cue to stay local.
How the pack runs it
The pack builds node classes at startup from KIE's API documentation, so the class name is mechanical - KIE_Next_gpt_image_1_5_text_to_image_1e42fc10, with the hash derived from the model id and the docs URL. That keeps IDs stable between releases.
Generation follows the pack's standard market path: POST the job to KIE's createTask with the model id gpt-image/1.5-text-to-image and your inputs, poll recordInfo until it succeeds, then download the URL and hand you a tensor. Failures on the transient side (rate limits, 5xx, dropped connections) are retried with backoff; if KIE marks a task done slightly before the URL is readable, the pack keeps polling rather than throwing away a paid generation.
The inputs - all four of them
prompt is required, multiline, and descriptive. The default is a photorealistic sailor-on-a-fishing-boat paragraph with lens, framing and skin-texture notes, and it's a decent template: state the subject, the framing, the lens, the light, and what you don't want. Long, plain-English direction is what this model is built for.
aspect_ratio has exactly three options: 1:1, 2:3, and 3:2. That's the whole list, and it's the biggest limitation of this node relative to the local tooling you're used to. There is no wide 16:9, no portrait 9:16, no 21:9 - pick the nearest and crop, or plan your composition around a square. If a workflow needs cinemascope, this is the wrong node.
quality is medium or high. The tooltip is refreshingly blunt: medium is balanced, high is "slow/detailed." Start on medium. High is a real cost and latency step up for a difference you'll notice on textures and fine text, not on composition.
timeout_seconds defaults to 1200 seconds (range 30–7200, step 30) and governs how long the pack waits. Generation is not instant; leave it.
callback_url exists for server-side push notifications. In a normal ComfyUI install, leave it empty.
Notice what isn't there: no negative prompt, no seed. The absence of a seed is the one that bites - this node is not reproducible. Same prompt, same settings, different image. If your process depends on rerunning a generation with one word changed, you can't do that here; you save the output image and edit from it instead.
Outputs
image is the tensor - Save Image, preview, or straight into an edit node. url is the KIE-hosted file, all_urls_json is every URL the task returned, task_id is the identifier you'd quote to KIE support, and raw_json is the full provider response for when something looks off. credits_consumed and credits_left report the spend, and they also appear on the node as a receipt after each successful run.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Restart ComfyUI. Dependencies are requests, Pillow, numpy, PyYAML - nothing heavy, nothing CUDA. Then set the key once at Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key; it's validated before saving and shown afterwards only as a masked fingerprint. KIE_API_KEY in the environment overrides the saved key for headless installs. The README's preferred routes are the Windows one-click installer and the packaged ZIP in dist/; Registry/Manager publication is described as "prepared" rather than finished, so if Manager's search finds nothing, clone it by hand.
Practical notes
Menu's empty on first launch. Most of the pack's nodes are built from a live catalog sync. Restart, or run the pack's Refresh Model Catalog node.
Text has to be quoted. If the image is supposed to contain a specific word or phrase, put it in quotes in the prompt and keep it short. Long strings of text are where every model in this class starts improvising.
Budget before you loop. There's no local fallback and no free tier, so a for-loop over twenty prompt variations is twenty charges. Do your exploration at medium, then re-run the winner at high.
Don't re-fire a timeout. Credits are spent at submission. Check the task_id in KIE's dashboard first.
The filter isn't optional. Refusals come from the model provider, and no reseller setting or node toggle changes that.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Create a photorealistic candid photograph of an elderly sailor standing on a small fishing boat. He has weathered skin with visible wrinkles, pores, and sun texture, and a few faded traditional sailor tattoos on his arms. He is calmly adjusting a net while his dog sits nearby on the deck. Shot like a 35mm film photograph, medium close-up at eye level, using a 50mm lens. The image should feel honest and unposed, with real skin texture, worn materials, and everyday detail. No glamorization, no heavy retouching. | A text description of the image you want to generate |
| aspect_ratio | COMBO | 1:1 | Width-height ratio of the image, determining its visual form. |
| quality | COMBO | medium | Quality: medium=balanced, high=slow/detailed. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |