Ideogram 4.5
The best text-in-image model, rented by the call
- maskImage
- referenceImages
- advancedFeatures.watermark.image
- image
What you're actually reaching for
Ideogram is the lab that made "text that renders correctly inside the image" a selling point, and its pedigree is the deepest in the field - the founders wrote DDPM and led Imagen at Google Brain before leaving in 2022. Through Ideogram 3.0 it was the closed benchmark for logos, posters, packaging and anything with a word in it.
Then 4.0 opened its weights in June 2026, and everyone found the three catches inside a day: it was trained on structured JSON captions so plain sentences underperform, the safety filter is welded into the weights, and the licence is non-commercial with no full-precision checkpoint. None of that applies here. Ideogram 4.5 is not the checkpoint you may have downloaded - it runs on Runware's servers. You get the newer model without a 9B file, a filter file, or a licence question about quantized weights; in exchange you pay per image and your prompt goes to somebody else's machine.
That's the trade every API node makes, and this is the node where it's least painful, because Ideogram's strength - accurate typography and layout - is exactly the job you don't want to babysit with a local checkpoint at 2 a.m. The pack ships the rest of the line too (4.0, 4.0q, 3.0 Remix, Background Remover, Object Remover, Layerize Text), so the family is one menu away.
How it works
No local inference. The node assembles a request (model: ideogram:4.5@0, taskType: imageInference), inlines any IMAGE you wire in as a base64 PNG data URI, posts it via the Runware SDK over REST, then downloads the returned imageURL and hands it back as a torch IMAGE tensor. Dependencies are just runware-sdk, pillow and soundfile - no VRAM, no model files.
The key comes from RUNWARE_API_KEY, else ComfyUI Settings, else ~/.runware/config.yaml. Cost and NSFW status are printed on the node's title bar after each run.
The inputs worth setting
- positivePrompt - required, and the only thing you must fill in.
- size - a pixel dropdown, default
1024x1024, running up to 3072×1024-style formats. Fixing a concrete size here overrides the separate width/height trio, so you never ship a contradictory pair. - settings.magicPrompt -
(default)/auto/on/off. This is the model rewriting your prompt. Ideogram 4.0's structured-caption training meant natural language underperformed, and while I wouldn't assume 4.5 inherited that quirk,onis the cheap hedge when your prompt is a plain sentence and the result is a shrug. - settings.quality -
very_lowthroughhigh(defaulthigh). Drop tomediumwhile you're iterating on composition; pay forhighwhen you're rendering the final. - maskImage - an
IMAGEused as a mask for masked generation. This node has no seed image, so it's for constraining a fresh render, not editing an existing picture - that's what the Precise Edit node is for. - referenceImages - an
IMAGEtensor to guide the output. numberResults (1–20) returns that many frames as one batchedIMAGE. - settings.copyrightDetection - off by default; opts into Hive likeness/logo checks after generation, which is a real consideration if you're generating anything resembling a brand or a public figure.
- negativePrompt isn't offered here, and neither are steps or a sampler. This is a hosted model: you get prompt, size, quality, seed, and a safety toggle.
Output is a single image (IMAGE).
Installing it
ComfyUI Manager → search Runware → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Set the key in ComfyUI Settings → Runware API key or via RUNWARE_API_KEY. Runware is top-up billing with a card on file - the platform's loudest community complaint - so decide on that before you fall in love with the node.
Where people get burned
No Runware API key- nothing set in env, Settings, or the CLI config. Restart after setting it.- The output is a batch you didn't expect.
numberResults: 4gives oneIMAGEwith four frames. Save Image writes four files; a downstream node expecting one image gets confused. - Nothing reproduces. Magic prompt is on by default-ish and the seed is random unless you set it. Pin
seedand turn magic promptoffbefore blaming the model. - Errors are deliberately terse.
Runware: ... [parameter 'size', code …, HTTP 400]is the whole message; setRUNWARE_DEBUGfor the traceback. - Filters are the provider's. When
safety.checkContentis on you get the NSFW flag in the title bar, but you cannot tune what Ideogram refuses - that's the category-wide property of API nodes, not a bug in the pack.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| maskImageopt | IMAGE | — | |
| referenceImagesopt | IMAGE | — | |
| advancedFeatures.watermark.imageopt | IMAGE | — | |
| sizeopt | COMBO | 1024x1024 | Output size. Only one of resolution or dimensions is sent. |
| seedopt | INT | 00–2147483647 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| numberResultsopt | INT | 11–20 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| advancedFeaturesopt | BOOLEAN | false | Enable to set advancedFeatures. Off uses the model's default. |
| advancedFeatures.watermark.bgColoropt | STRING | Background color in hex format. | |
| advancedFeatures.watermark.displayPositionopt | COMBO | (default) | Watermark position. |
| advancedFeatures.watermark.fontColoropt | STRING | Text color in hex format. | |
| advancedFeatures.watermark.opacityopt | BOOLEAN | false | Enable to set advancedFeatures.watermark.opacity. Off uses the model's default. |
| advancedFeatures.watermark.opacity_valueopt | FLOAT | 0.100.1–1 | Watermark opacity. |
| advancedFeatures.watermark.textopt | STRING | Watermark text. | |
| settings.copyrightDetectionopt | BOOLEAN | false | Opt into post-generation copyright detection using Hive likeness and logo checks. |
| settings.magicPromptopt | COMBO | (default) | Automatic prompt enhancement. |
| settings.qualityopt | COMBO | high | Rendering quality. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. Increases total generation time. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |