zhenzhen-ideogram-v4-fal
The node with the best typography in the pack
- images
- response
- image_urls
Ideogram's whole reputation is text-in-image. Its founders wrote the diffusion papers (Denoising Diffusion Probabilistic Models, Imagen), and its model still does legible, correctly-spelled text in images better than almost anything else - which is why you reach for Ideogram when your prompt includes a slogan, a logo, a menu, a sign. Local checkpoints routinely mangle text; this node doesn't run a local checkpoint at all. It calls Ideogram v4 through Zhenzhen's fal proxy and drops the result back as a ComfyUI IMAGE.
The v4 model here also brings a rendering_speed knob (TURBO / BALANCED / QUALITY) and a separate acceleration setting (none/low/regular/high) - so you can buy speed with a TURBO pass and save the QUALITY pass for finals. Per-call credits, key in the widget, no local GPU work. It's the pack's most direct answer to "I need the text in the image to actually be right."
How it works
Text-to-image only - there's no image input on this node. Submit the prompt plus your size/quality choices to the fal proxy, poll, download, and you get back:
images- anIMAGEtensor you can wire into preview or save nodes.image_urls- STRING URLs of the results.response- the raw payload.
Because it's a non-output node, images can flow into downstream editing, upscaling or compositing steps in the same graph.
Inputs that matter
prompt- where the text lives. Put the exact wording in quotes, and letenable_prompt_expansion(default on) fill in the style around it. If Ideogram keeps rewriting your wording, try expansion off and spell it out yourself.image_size-square_hd,square,portrait_4_3,portrait_16_9,landscape_4_3,landscape_16_9. Square_hd is the default and the safest.rendering_speed-TURBO/BALANCED/QUALITY. This is your main cost/quality dial: TURBO to iterate, QUALITY to render.acceleration- an extra speed layer,nonetohigh. Stacking high acceleration with TURBO gets you there fastest but leaves the least polish.num_images- 1–4 per call. More images = more billed items, same as the rest of the pack's per-output billing.seed- max 65535,0= random (real fal-style seed, unlike the cache-only seeds elsewhere).enable_safety_checker- Ideogram's content filter, default on. Same "the node can't bypass the vendor's filter" rule as every closed model.
Installing it
Manager → search Comfyui-zhenzhen → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
Restart, paste your api_key into the widget. No model files.
Common issues
- Text still coming out wrong - usually a prompt problem, not the model. Keep the wording in quotes, keep it short, and let prompt expansion fill the rest. If it's a multi-line slogan, split it across two generations and composite.
- TURBO results too loose - that's the trade you asked for. Re-run at QUALITY for the final.
- The pack standard gotchas - empty key, 443/VPN-in-TUN-mode for the overseas API, vendor 500s needing a re-run, and fal's pre-deducted billing refunding the difference after the job.
If you mostly generate subjects and scenery, Ideogram won't change your life. The moment a client asks for a poster with correct spelling, it becomes the only node you want.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| api_keyopt | STRING | — | |
| image_sizeopt | COMBO | square_hd | 6 options: square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9 |
| rendering_speedopt | COMBO | BALANCED | 3 options: TURBO, BALANCED, QUALITY |
| accelerationopt | COMBO | none | 4 options: none, low, regular, high |
| num_imagesopt | INT | 11–4 | — |
| seedopt | INT | 00–65535 | 0 = random seed. FAL seed max is 65535. |
| output_formatopt | COMBO | jpeg | 2 options: jpeg, png |
| enable_prompt_expansionopt | BOOLEAN | true | — |
| enable_safety_checkeropt | BOOLEAN | true | — |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| response | STRING | — |
| image_urls | STRING | — |