Concurrent Submit | zhenzhen-gpt-image-2-official_ratio_stable
GPT Image 2 with pixel-exact custom sizes — the stable one
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- image15
- image16
- mask
- task
The official GPT Image 2 API doesn't take arbitrary resolutions - it has a fixed set of legal sizes. The plain official_ratio node handles that by snapping your requested ratio to the nearest valid box. This node, official_ratio_stable, is the one that goes further: pick custom in the aspect-ratio dropdown and you get custom_width / custom_height up to 8192, with the backend doing the snapping for you. It was added later in the pack's life specifically for people who needed a specific pixel dimension - the README's update log notes custom sizes must be divisible by 32 (the schema steps the widgets in 64s to keep you honest).
Same family as the other official GPT Image 2 nodes: async mode, task-ID recovery, webhook, polling/retry knobs, sixteen image slots plus a mask, all resold through the Comfyui-zhenzhen key. The "stable" in the name is a claim about this being the dependable custom-size path - and it's also the node you'll reach for when a client hands you an exact spec.
How the concurrent bit works
The plain Comfly_gpt_image_2_official_ratio_stable node blocks until the job lands. The Submit variant runs it in the pack's shared image pool (30 workers) and returns a task immediately. Collect via Concurrent Collect Images (30): wire task_1 … and the collector waits for the batch, returning images in slot order plus a status string. failure_mode = fail-fast (default) or placeholder.
The inputs that matter
prompt(required).aspect_ratio- a long list includingempty, the common set, andcustom. Choosecustomand thecustom_width/custom_heightwidgets activate (defaults 2560×1280).resolution- 1k / 2k / 4k.image1…image16andmask- multi-image editing + inpainting.model-gpt-image-2/-all/-2K/-4K.n,quality,background,output_format,output_compression,moderation,response_format- the standard official-family controls.async_mode(default true),webhook, and the polling/retry knobs.
Output: one task (COMFLY_IMAGE_FUTURE) → Collector → images.
Installing it
Ships in Comfyui-zhenzhen:
- ComfyUI Manager → Install Custom Nodes → search "Comfyui-zhenzhen" → install → restart.
- Or
cd ComfyUI/custom_nodes && git clone https://github.com/T8mars/Comfyui-zhenzhenand restart.
No model downloads. You need a paid token from the author's storefront (ai.t8star.org), in api_key.
Gotchas
The custom-size rule is the whole game: keep custom_width/custom_height divisible by 32 (the widgets step by 64 by default) or the call fails on validation. And remember the result is still snapped to the nearest legal GPT Image 2 size - "stable" doesn't mean "exactly your number comes out," it means the flow is reliable. Same family warnings apply: official-channel congestion is real (the -2K/-4K models and the fal channel are the backups), and if a job times out client-side, check the shop's async task list for the task ID before paying for a rerun.
Inputs (39)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| aspect_ratio | COMBO | empty | 12 options: empty, 1:1, 3:2, 2:3, 4:3, 3:4, +6 |
| resolution | COMBO | 1k | 3 options: 1k, 2k, 4k |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image5opt | IMAGE | — | |
| image6opt | IMAGE | — | |
| image7opt | IMAGE | — | |
| image8opt | IMAGE | — | |
| image9opt | IMAGE | — | |
| image10opt | IMAGE | — | |
| image11opt | IMAGE | — | |
| image12opt | IMAGE | — | |
| image13opt | IMAGE | — | |
| image14opt | IMAGE | — | |
| image15opt | IMAGE | — | |
| image16opt | IMAGE | — | |
| maskopt | MASK | — | |
| api_keyopt | STRING | — | |
| modelopt | COMBO | gpt-image-2 | 4 options: gpt-image-2, gpt-image-2-all, gpt-image-2-2K, gpt-image-2-4K |
| nopt | INT | 11–10 | — |
| qualityopt | COMBO | auto | 4 options: auto, high, medium, low |
| backgroundopt | COMBO | auto | 2 options: auto, opaque |
| output_formatopt | COMBO | png | 3 options: png, jpeg, webp |
| output_compressionopt | INT | 1000–100 | — |
| moderationopt | COMBO | auto | 2 options: auto, low |
| response_formatopt | COMBO | url | 2 options: url, b64_json |
| async_modeopt | BOOLEAN | true | — |
| webhookopt | STRING | — | |
| max_poll_attemptsopt | INT | 30010–1000 | — |
| poll_intervalopt | INT | 52–60 | — |
| max_retriesopt | INT | 51–10 | — |
| initial_timeoutopt | INT | 90060–1200 | — |
| seedopt | INT | 00–18446744073709550000 | — |
| skip_erroropt | BOOLEAN | false | 开启后,节点失败时不报错、按旧行为返回默认空结果;关闭时(默认)失败直接抛出错误。 |
| custom_widthopt | INT | 256064–8192 | aspect_ratio选择custom时生效,自定义宽度 |
| custom_heightopt | INT | 128064–8192 | aspect_ratio选择custom时生效,自定义高度 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| task | COMFLY_IMAGE_FUTURE | — |