OneThingAI Image Generator
The OneThingAI Image Generator node
- reference_image
- IMAGE
Most ComfyUI nodes make your GPU sweat. This one makes your wallet sweat instead. OneThingAILoader - displayed as "OneThingAI Image Generator" - is the flagship of the ComfyUI_Onething_Image pack, and it is a pure API client. You give it a prompt and an API key, it talks to OneThing AI's server, and a finished image comes back. No checkpoint download, no VRAM, no sampler math. That's the whole pitch.
Here's the context that makes it interesting: OneThing AI is an aggregator. One key and one OpenAI-style endpoint (https://api-model.onethingai.com/v1/images/generations) get you into a bunch of otherwise-separate, closed, API-only image models - OpenAI's gpt-image-1, Google's Gemini image line, Alibaba's Wanxiang, ByteDance's Seedream, Tencent's Hunyuan, even flux-dev. The frontier labs (Seedream, Gemini) release nothing you can run locally, and the community has a durable argument against that: an API can be re-priced, filtered, or revoked overnight, where a file on your disk cannot. But if you want Gemini 3 Pro quality from inside a ComfyUI graph without owning Google's SDK, an aggregator node is the only path.
How it works. The node POSTs your prompt (plus model, size, quality) to OneThing AI with a Bearer key. The response is base64-encoded JSON, decoded to a PIL image, and converted to a standard torch IMAGE tensor in the 0–1 range - so the output plugs straight into Save Image, upscalers, img2img chains, anything. Under the hood there's a requests session with a real retry strategy (429/500/502/503/504, with backoff), which is more than most API nodes bother with. Two quirks are baked into the code and worth knowing before you run it: IS_CHANGED always returns NaN, so the node re-executes on every queue run even if you changed nothing - each run is a billed generation. And it makes its requests with TLS certificate verification disabled (verify=False). For a node that's sending your prompt to a third party, that's sloppy, and it's a reason to think twice before feeding it anything you'd rather keep private.
Inputs that matter. The model input is a plain text box, not a dropdown - that's the Loader's superpower. It defaults to gpt-image-1, but you can type any model ID the OneThing AI API exposes. (The README still says "gpt4o"; the code and the node's actual default disagree, and the code wins.) The rest of the required set is short:
api_key- paste your keyprompt- the whole jobnum_images(1–10) - the only node in this pack that batches. More images = more money.image_size- presets (1536x1024, 1024x1024, 1024x1536) or 自定义 (custom), withcustom_width/custom_height(512–2048, step 64)quality(low/medium/high),retries,timeout- leave retries at 3 and timeout at 120 unless a model is slow
In optional: reference_image (any IMAGE from your graph) plus reference_image_weight (0–1, default 0.5) to control how much the reference steers the result. Unlike the per-model sibling nodes, which switch to an image-editing endpoint when you wire a reference in, the Loader base64-encodes the reference straight into the generation payload. Either way, one IMAGE (or a batch) comes out.
Install. Same story as every node in this pack:
cd ComfyUI/custom_nodes
git clone https://github.com/OneThingAI/ComfyUI_Onething_Image.git
pip install Pillow requests
Then restart ComfyUI - or search "OneThingAI" in ComfyUI Manager and install from there. No model files, because nothing runs locally; Pillow, requests, torch and numpy all ship with ComfyUI anyway, so on a normal setup the pip step is usually redundant.
Troubleshooting. A 401/403 means the key is wrong or the account has no credit - that's on OneThing AI, not the node. If the queue just sits there, it's probably the timeout: 120s default, and 4K-class generations can crawl past that; bump it toward 180. Reference image ignored? Check reference_image_weight isn't at 0 and that the model you typed supports refs. And remember the always-executes quirk: re-running a workflow you didn't change still spends credits.
One honest warning: this pack is new and tiny. An exact-phrase search for "onethingai" across the reddit corpus I checked returns zero threads - no community war stories, no bake-off posts. You're an early adopter, for better and worse.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| prompt | STRING | — | |
| model | STRING | gpt-image-1 | — |
| num_images | INT | 11–10 | — |
| image_size | COMBO | 1024x1024 | 4 options: 1536x1024, 1024x1024, 1024x1536, 自定义 |
| custom_width | INT | 1024512–2048 | — |
| custom_height | INT | 1024512–2048 | — |
| quality | COMBO | medium | 3 options: low, medium, high |
| retries | INT | 31–10 | — |
| timeout | INT | 1205–180 | — |
| reference_imageopt | IMAGE | — | |
| reference_image_weightopt | FLOAT | 0.500–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |