🎨 GrsAI GPT Image 2 VIP
The 4K size table is the entire reason this node exists
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image
- status
- api_task_ids
Why you'd pick this one over its siblings
The pack ships three GPT Image nodes and they look nearly identical on the canvas. Grsai_GPTImage is the plain GPT Image 2 path with a modest size list. Grsai_GPTImage25 is the Flare/Sunburst variant. This one, Grsai_GPTImageVIP, pins a single model - gpt-image-2-vip - and hands you the reseller's premium size table: real 1K/2K/4K tiers instead of one 1024-square and a pile of odd 1672x941-style rectangles. If you want a 3840-wide landscape or a 4K square straight out of the API without upscaling afterwards, this is the node to grab. It's also the node the other two inherit from, so if you understand it you understand the whole family.
What it isn't: a local model, a fine-tune, or anything with a licence file. GPT Image has no downloadable weights - that's the whole reason [closed-source-models.md] puts it in the "local is not an option at any VRAM" bucket - so your options are the official API or a reseller. GrsAI is the reseller, it proxies through grsai.dakka.com.cn, and it charges pennies per call. There is no community track record behind it: searching the corpus for "GrsAI" returns nothing at all. Cheap and undocumented is the honest description. Use a key you can rotate.
How it works
The flow is: encode, submit, poll, download, stack.
Your prompt plus model plus the resolved size go out to POST /v1/api/generate with replyType: "async". For VIP-tier models the client hardcodes quality: "medium" - that's a difference you can't tune from the node, unlike the plain GPT Image 2 node which sends auto. Reference images are encoded to base64 PNG and travel in the request's images array, which is how the same node does text-to-image, editing and multi-reference fusion depending on what you connect.
num_images is not a server-side batch count. Every requested image becomes its own request, fired concurrently through a thread pool sized to that number. Twelve images means twelve jobs, twelve task IDs, twelve charges. Each job is polled against /v1/api/result every two seconds, with an hour-long ceiling before it gives up, and the finished URLs are downloaded into one IMAGE batch.
Inputs that matter
- prompt - multiline, with a stock demo sentence as the default. Replace it.
- apikey - the GrsAI key,
sk-prefixed. This field is the source of truth; the pack's.envis only read by its legacy Flux nodes, so don't go editing files and wondering why nothing changed. - model - one option,
gpt-image-2-vip. It exists so the workflow JSON is explicit about which tier you paid for. - num_images -
"1"to"12". The single most expensive digit on this node. - aspect_ratio - default
auto, otherwise pixel sizes tagged by tier:1024x1024 (1:1, 1K),2048x2048 (1:1, 2K),2880x2880 (1:1, 4K),3840x2160 (16:9, 4K),2160x3840 (9:16, 4K),3840x1648 (21:9, 4K), and so on. Note the aspect ratio menu here is a different map from the plain node's - that's not a bug, it's the tier. - image_1 … image_8 - optional IMAGE inputs, eight max. Connect them for edits and multi-image fusion; only the first frame of each is used.
Outputs
image is your batch, ready for Save Image or a local upscale pass. status is the readout you want when something half-fails - model, resolved size, reference count, and how many of the requested images actually came back. api_task_ids is one ID per request on separate lines, which is what you quote if you're chasing a refund on a dead call.
Install
Manager → Install via Git URL → https://github.com/31702160136/ComfyUI-GrsAI.git, or:
cd ComfyUI/custom_nodes
git clone https://github.com/31702160136/ComfyUI-GrsAI.git
pip install requests python-dotenv httpx httpcore
Do it that way rather than pip install -r requirements.txt. That file also lists torch, fal-client, Pillow and numpy; nothing in the node code imports fal-client, ComfyUI already has the other three, and the README's Windows-portable line adds --force-reinstall, which is how you turn a five-second install into a broken torch install. The four imports above are the real dependency list.
Troubleshooting
Failures are visible rather than fatal: if every request dies, the node returns a dark red placeholder image with the error text rendered into it, and status reads 失败: …. Look at the picture. The usual causes are a key that isn't sk--prefixed (including the untrimmed Chinese placeholder still sitting in the field), a zero balance on the reseller account, or a size the model won't honour - 4K tiers are the ones that get rejected. And because the node reports itself as always-changed, there's no run-to-run caching: every queue re-calls the API, every call costs money. If a 4K fusion request feels like it's hanging, it's probably the upload - reference images leave your machine as full-size base64 PNGs.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A beautiful girl with long black hair, wearing a white dress, standing in a beautiful garden, looking at the camera. | — |
| apikey | STRING | 请输入您的APIKEY: sk-xxxxxxx | — |
| model | COMBO | gpt-image-2-vip | 1 options: gpt-image-2-vip |
| num_images | COMBO | 1 | 12 options: 1, 2, 3, 4, 5, 6, +6 |
| aspect_ratioopt | COMBO | auto | 44 options: auto, 1024x1024 (1:1, 1K), 2048x2048 (1:1, 2K), 2880x2880 (1:1, 4K), 1280x720 (16:9, 1K), 2048x1152 (16:9, 2K), +38 |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — | |
| image_5opt | IMAGE | — | |
| image_6opt | IMAGE | — | |
| image_7opt | IMAGE | — | |
| image_8opt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| status | STRING | — |
| api_task_ids | STRING | — |