OneThingAI OpenAI Image
Gpt-image-1 inside your ComfyUI graph
- reference_image
- IMAGE
GPT Image 1 is the model that made the Ghibli-style portraits go viral and that the community still brings up first when the subject is text rendering - lettering, logos, signage, anything with actual words in it. This node puts that model inside a ComfyUI graph. OnethingAIImageOpenAI ("OneThingAI OpenAI Image") is the OpenAI-shaped slot in the ComfyUI_Onething_Image pack, and it's an API client: no GPU, no checkpoint, just a prompt, a key, and a billed generation.
How it works. The node posts to OneThing AI's OpenAI-compatible endpoint (https://api-model.onethingai.com/v1/images/generations) with your key as a Bearer token, gets back base64 JSON, and converts it to a standard IMAGE tensor that any downstream node can use. It's the same machinery as the pack's other OpenAI-compatible nodes, with one genuinely useful trick: when you wire a reference_image in, it switches from the generation endpoint to the image-edit endpoint (/v1/images/edits) and sends the image as multipart form data. So the same node is both text-to-image and image-edit, depending on whether an IMAGE is attached. That's exactly the "natively multimodal, image input support" the model is known for.
Inputs that matter. model is locked to a single choice (gpt-image-1) - this node exists because the Loader's free-text model box is too easy to typo. You set:
api_key- your OneThing AI keyprompt- describe the scene, and lean in on text if text is the pointimage_size- presets (1536x1024 / 1024x1024 / 1024x1536) or 自定义, withcustom_width/custom_heightup to 4096 (note: this node goes to 4096, the Loader caps at 2048)quality(low/medium/high) - the cost lever. Medium is a fine default; high costs more and is slowerretriesandtimeout- defaults of 3 and 120 are fine; raise timeout for high quality
The optional extra input is worth knowing about: it's a JSON string that gets merged into the request payload, so it's your escape hatch for API parameters the node doesn't surface. And reference_image, as above, flips you into edit mode.
Install. This pack is one clone plus a restart:
cd ComfyUI/custom_nodes
git clone https://github.com/OneThingAI/ComfyUI_Onething_Image.git
pip install Pillow requests
Restart ComfyUI (or install "ComfyUI OneThing AI Node" via ComfyUI Manager) and you're done - there are no model files, the model lives on OneThing AI's servers.
Troubleshooting. The two things that bite people: budget and moderation. The node re-runs on every queue even if nothing changed, so re-queuing an untouched workflow still spends credits - that's the IS_CHANGED quirk, not a bug you can fix. And GPT Image's content filters are famously unpredictable; if a prompt that worked yesterday suddenly errors out or comes back sanitized, that's OpenAI's guardrails, not your graph. If an image request just hangs, the timeout (120s default) is the usual suspect - push it toward 180 for high-quality generations.
Honest take: if you want gpt-image-1's text rendering in a workflow, this is the cleanest way to get it short of hand-rolling the API call. If you don't specifically need a closed frontier model, the pack's other nodes give you more of the models you can't get elsewhere. But the node is a solid, no-drama client either way.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| model | COMBO | 1 options: gpt-image-1 | |
| prompt | STRING | — | |
| image_size | COMBO | 1024x1024 | 4 options: 1536x1024, 1024x1024, 1024x1536, 自定义 |
| custom_width | INT | 1024512–4096 | — |
| custom_height | INT | 1024512–4096 | — |
| retries | INT | 31–10 | — |
| timeout | INT | 1205–180 | — |
| quality | COMBO | medium | 3 options: low, medium, high |
| reference_imageopt | IMAGE | — | |
| extraopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |