ComfyUI Node

Ideogram 4.0q

The text-in-image king, without the 24GB download

By Runware·Created 2 years ago·Updated 4 days ago· 140
Ideogram 4.0q
  • lora
  • advancedFeatures.watermark.image
  • image
structuredPrompt.high_level_description
positivePrompt
negativePrompt
width1024
height1024
seed0
CFGScalefalse
CFGScale_value7.00
numberResults1
advancedFeaturesfalse
advancedFeatures.watermark.bgColor
advancedFeatures.watermark.displayPosition(default)
advancedFeatures.watermark.fontColor
advancedFeatures.watermark.opacityfalse
advancedFeatures.watermark.opacity_value0.10
advancedFeatures.watermark.text
structuredPrompt.style_description.aesthetics
structuredPrompt.style_description.art_style
structuredPrompt.compositional_deconstruction.background
structuredPrompt.style_description.lighting
structuredPrompt.style_description.medium
structuredPrompt.style_description.photo
settings.renderingSpeedDEFAULT
safetyfalse
safety.checkContentfalse
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95
advanced_json

For three generations Ideogram was the closed benchmark nobody could touch on text-in-image. Posters with legible paragraphs. Brand logos that don't melt. When it finally released weights as Ideogram 4, the catch was the size: the only checkpoints that shipped are quantized fp8/nf4, and they still want a serious GPU to run comfortably. This node is the end run around all of that - it's Ideogram 4 running on Runware's cloud (the q is the quantized checkpoint, ideogram:4@q), so you get the best text renderer in the business with zero local VRAM and zero download. You just pay per image.

There's one thing you need to understand before you queue anything: Ideogram 4 is not prompted like a normal model. It was trained on structured JSON captions, not prose, and plain natural-language prompts underperform badly. That's baked into this node's interface. The one required input isn't a prompt - it's structuredPrompt.high_level_description, a one-or-two-sentence description of the full image including subject and style. That's the heart of the structured schema, and the rest of the structuredPrompt.* fields let you slice the description finer.

The inputs that matter

  • structuredPrompt.high_level_description (required) - your core sentence(s). This is the spine of the structured prompt; spend real time here.
  • structuredPrompt.style_description.* - aesthetics, art_style, lighting, medium, photo. Fill in the ones that matter: art style for non-photo work, lighting and mood, photographic style for realism. These become the JSON nodes Ideogram 4 was actually trained on.
  • structuredPrompt.compositional_deconstruction.background - environment, framing, and lighting context.
  • positivePrompt / negativePrompt - free-text extras. The negative is ignored when guidance is off (see CFG below).
  • width / height - 64 to 4096, step 16, default 1024. Ideogram 4 handles wild aspect ratios from one set of weights.
  • CFGScale - a toggle, off by default, because this model has usage rules around it. Flip it on to expose the CFGScale_value (default 7).
  • settings.renderingSpeed - TURBO, DEFAULT, or QUALITY. Your speed/quality tradeoff; the obvious place to start tuning.
  • numberResults - up to 20 variations, each with its own seed.
  • outputFormat / outputQuality - JPG/PNG/WEBP, quality 20–99.
  • advanced_json - the escape hatch for the structured fields this node doesn't expose as widgets (compositional_deconstruction.elements, style_description.color_palette). If you want bounding boxes and typed text elements, this is where the schema goes.

The output is a single image (IMAGE), straight into Preview or Save.

Why you'd run it here instead of locally

The KB's history is worth remembering: Ideogram 4 is a non-commercial release with a refusal image trained into the weights, and the community's fix was routing prompts through the structured JSON schema. On Runware you're calling the hosted model, not the downloaded weights - which sidesteps the quantized-only download, the VRAM question, and the license paperwork in one move. You trade that for per-image cost and an API key.

Installing it

This node is part of the Runware/ComfyUI-Runware pack. Install via ComfyUI Manager (search Runware) and restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

No model files, light deps (runware-sdk, pillow, soundfile). You do need a Runware API key - Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.

Gotchas

Where people get burned: they treat it like a normal text-to-image node and write a prompt, then wonder why the output ignores half of it. If your image has text or tight composition, work the structured fields. And remember it's a billed API - the title bar shows each run's cost, and the QUALITY rendering speed plus higher resolutions cost more.

CategoryRunware/Image/ideogram

Inputs (32)

NameTypeDefaultDescription
structuredPrompt.high_level_descriptionSTRINGOne or two sentences describing the full image, including subject and style.
loraoptRUNWARE_LORA
advancedFeatures.watermark.imageoptIMAGE
positivePromptoptSTRINGText prompt describing elements to include in the generated output.
negativePromptoptSTRINGPrompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1).
widthoptINT102464–4096Width of the generated media in pixels.
heightoptINT102464–4096Height of the generated media in pixels.
seedoptINT00–9223372036854776000Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
CFGScaleoptBOOLEANfalseEnable to set CFGScale. This setting has usage rules in this model, so it is off unless you enable it.
CFGScale_valueoptFLOAT7.000–30Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt.
numberResultsoptINT11–20Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
advancedFeaturesoptBOOLEANfalseEnable to set advancedFeatures. Off uses the model's default.
advancedFeatures.watermark.bgColoroptSTRINGBackground color in hex format.
advancedFeatures.watermark.displayPositionoptCOMBO(default)Watermark position.
advancedFeatures.watermark.fontColoroptSTRINGText color in hex format.
advancedFeatures.watermark.opacityoptBOOLEANfalseEnable to set advancedFeatures.watermark.opacity. Off uses the model's default.
advancedFeatures.watermark.opacity_valueoptFLOAT0.100.1–1Watermark opacity.
advancedFeatures.watermark.textoptSTRINGWatermark text.
structuredPrompt.style_description.aestheticsoptSTRINGOverall aesthetic direction.
structuredPrompt.style_description.art_styleoptSTRINGArt style for non-photographic images.
structuredPrompt.compositional_deconstruction.backgroundoptSTRINGEnvironment, framing, and lighting context.
structuredPrompt.style_description.lightingoptSTRINGLighting setup and mood.
structuredPrompt.style_description.mediumoptSTRINGArtistic medium or capture format.
structuredPrompt.style_description.photooptSTRINGPhotographic style for photo-realistic images.
settings.renderingSpeedoptCOMBODEFAULTGeneration speed/quality tradeoff.
safetyoptBOOLEANfalseEnable to set safety. Off uses the model's default.
safety.checkContentoptBOOLEANfalseEnable or disable content safety checking. Increases total generation time.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.
advanced_jsonoptSTRINGOptional JSON merged into the request. For: structuredPrompt.compositional_deconstruction.elements, structuredPrompt.style_description.color_palette

Outputs (1)

NameTypeDescription
imageIMAGE