Nodes/KIE.ai Nodes Next/Ideogram V3 Edit
ComfyUI Node

Ideogram V3 Edit

Remote inpainting where the mask must be a file URL

By felipederosilva·Created about a month ago·Updated a day ago· 3
Ideogram V3 Edit
  • image_url
  • image
  • url
  • all_urls_json
  • task_id
  • raw_json
  • credits_consumed
  • credits_left
◄promptA dog wearing a cowboy hat►
◄mask_urlhttps://file.aiquickdraw.com/custom-page/akr/section-images/1755076871089hx9uonhc.webp►
◄rendering_speedBALANCED►
◄expand_prompttrue►
◄seed123456►
◄timeout_seconds1200►
◄callback_url►

Six inputs, three of them real, and one of those three is the reason people bounce off this node: mask_url wants the URL of an uploaded mask file, not a ComfyUI MASK. If you came here from a local inpaint pipeline where the mask just flows along a wire, this is the culture shock.

What it does

Masked generation with Ideogram's hosted v3 model. White mask area gets repainted from your prompt; the rest of the image is preserved. The practical use is text and graphic elements - Ideogram's claim to fame is legible lettering in generated images, and repainting a masked region is how you fix a label without regenerating the whole comp. It's also fine for object replacement and cleanup, just at per-call cost rather than free local compute.

The inputs

prompt (required, up to 5000 characters) describes what fills the masked area. Because the mask already constrains where, spend the prompt on what - and if the region contains lettering, quote the exact string.

image_url (required) is a real IMAGE socket: the image being edited. The pack handles the upload; it goes up as PNG.

mask_url (required) is a STRING. Per the tooltip: "Please provide the URL of the uploaded file, not raw file content", accepted types image/jpeg, image/png, image/webp, max 10MB - and it must match the dimensions of the input image. The default value is a KIE-hosted sample webp, which is the trap: leave it and you'll be inpainting wherever that sample's white area happens to be.

Realistic workflow: render your mask to a file (mask editor, SAM-based segmentation, anything), upload it with the pack's upload utility to get a URL, and put that URL in the field. There's no drag-and-drop shortcut and no MASK socket.

rendering_speed: BALANCED (default), TURBO, QUALITY. Turbo for drafts, Quality for the one you keep.

expand_prompt (default true) enables MagicPrompt - Ideogram rewriting your prompt before generation. Handy for a two-word idea, unhelpful if you're quoting exact text you want rendered verbatim. Turn it off for typography work.

seed for reproducibility attempts, timeout_seconds (1200 default, 30–7200) for the polling budget, callback_url for webhooks (leave empty).

Outputs

image is the edited result as a native IMAGE. Then url, all_urls_json, task_id, raw_json, and credits_consumed / credits_left as floats, so you can log spend per edit - with a node that costs money per call, that's not a vanity metric. Files are archived to ComfyUI/output/KIE-Results/images/.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt

Restart ComfyUI afterwards. Dependencies are requests, Pillow, numpy, PyYAML - nothing heavy, nothing downloaded into models/. Windows users: the one-click installer in dist/. ComfyUI Manager might not carry the pack yet; the README treats registry publication as still pending, so clone it.

Then the key, once: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. Validated against KIE before it overwrites anything, shown back only as a masked fingerprint, never stored in workflow JSON. For headless/Docker, KIE_API_KEY works and takes priority over the saved key.

Getting it running, and the honest caveat

Watch your resolution. A mask sized for a 1024px canvas applied to a 1536px image will be rejected or produce garbage. Resize the image and mask together.

Don't lose the local comparison. If you're doing a lot of inpainting, Qwen-Image-Edit locally handles the same class of work with a mask on a wire instead of a URL round-trip - the community's default editing model through 2026. This node earns its place when you specifically want Ideogram's text rendering, and costs money every time it doesn't.

Ideogram 4 exists as weights now. They're on HuggingFace under a non-commercial licence, with a filter trained into the model and a JSON-caption prompting style. Running that locally is a different workflow entirely; V3 through this API is the one where a sentence-long prompt and a mask URL are the whole interface.

Timeout ≠ failure. If the node times out, KIE may still finish the job - and the credits are spent either way. Pull the task_id from the error with the Task Status node.

CategoryKIE Next/Image/Ideogram

Inputs (8)

NameTypeDefaultDescription
promptSTRINGA dog wearing a cowboy hatThe prompt to fill the masked part of the image. Maximum length: 5000 characters.
image_urlIMAGE—
mask_urlSTRINGhttps://file.aiquickdraw.com/custom-page/akr/section-images/1755076871089hx9uonhc.webpThe mask URL to inpaint the image. Needs to match the dimensions of the input image. - Please provide the URL of the uploaded file, not raw file content - Accepted types: `image/jpeg`, `image/png`, `image/webp` - Max size: 10.0MB
rendering_speedoptCOMBOBALANCEDThe rendering speed to use. Default value: `BALANCED`. - `TURBO`: Turbo - `BALANCED`: Balanced - `QUALITY`: Quality
expand_promptoptBOOLEANtrueDetermine if MagicPrompt should be used in generating the request or not. Default value: `true`. - Boolean value: `true` / `false`
seedoptINT123456-2147483648–2147483647Seed for the random number generator.
timeout_secondsoptINT120030–7200—
callback_urloptSTRINGOptional KIE callback URL. Leave empty for normal ComfyUI use.

Outputs (7)

NameTypeDescription
imageIMAGE—
urlSTRING—
all_urls_jsonSTRING—
task_idSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
credits_leftFLOAT—