Superside Ideogram V4.5 Edit
Fixes the defect, won't move the shape
- image_1
- image_2
- image_3
- image_4
- mask_image
- images
- info
There's a moment in a retouching pipeline where everything is right except one thing - a scratch on a lens, a smudge where the hinge should be clean. You don't want the model to "reimagine" the photo; you want it to fix that and leave the other 4 megapixels alone. That's this node's job, and the pack's own testing is blunt about where it stops. On five eyewear cases, Ideogram V4.5 at quality: high repaired a broken detail 3/3 runs where GPT Image 2.5 Sunburst managed 1/3, changing only the defect while Sunburst redrew the frame. Asked to reshape an outline it went 0/2, Sunburst 2/2. It holds the geometry it's given - so correct detail with it, don't ask it to change a shape.
What it actually is
SupersideIdeogramV45EditNode is a thin ComfyUI wrapper over fal's ideogram/v4.5/edit endpoint. Nothing runs on your GPU: the node uploads your image to fal, waits, and drops the edited image back into the graph as a normal IMAGE. Same category as ComfyUI's own Partner Nodes - a metered storefront over a model you were never going to download, so expect per-call cost, your images leaving the machine, and the vendor's filter doing what it does.
What makes it pleasant to live with is that it speaks the same mask dialect as the rest of the pack, so it's a drop-in swap wherever one of the GPT Image nodes sits. Three things differ underneath:
- Ideogram reads black as the editable area - backwards from every other node here. The wrapper inverts your mask on the way out, so one WHITE = edit mask feeds either model.
- References go in their own
reference_image_urlslist, besideimage_url, and fal takes at most three alongside a mask. - It's seeded, so a fixed seed reproduces a run.
The inputs that matter
prompt, image_1 and api_key are required. image_1 is the thing being edited; image_2–image_4 are references (a product shot to keep the look consistent, another angle). Wire three references and a mask and you're at the cap - the node trims the extras and logs a warning rather than erroring.
mask_mode defaults to off - edit whole image, which ignores mask_image entirely. That's deliberate: in a crop-stitch graph a separate node does the masking, so the edit model should treat the whole crop as editable. For standalone inpainting pick guide model (soft) (the mask is a hint) or lock outside mask (hard), which also composites the result back inside the mask locally so everything outside stays pixel-identical. invert_mask is for masks that already use the opposite convention - you don't need it just because Ideogram is backwards internally.
quality (default high) is where your money goes: $0.22 per image at high, $0.06 at medium. Their test had medium hitting 2/3 where high hit 3/3, so medium-then-verify is a sane budget move. edit_precision (default high) holds the edit closer to the masked region. seed takes -1 for the service's pick or a fixed int. num_images goes to 4, but only the first returned image comes back on images - four is four times the price for one usable wire. Outputs are images (IMAGE) and info (STRING, the result URL, handy for logging a batch). One honesty note: the seed tooltip says the chosen seed comes back in info; in the shipped code info is just the URL, so write your seed down.
No size, resolution or output_format widgets here - deliberately removed. The endpoint rejects output_format with a 422, and it's always called with image_size: auto, so you get no control over output dimensions. Resize downstream.
Install
Manager, or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Superside/comfyui-superside-nodes.git
pip install -r requirements.txt # into ComfyUI's own Python env
Restart ComfyUI and type "Superside" in the node search. Dependencies are light - fal-client, pillow, numpy, torch, requests - and there are no model downloads: the weights live on fal. Then paste your fal key into the api_key widget. This is an in-house pack for a design agency's production pipelines ("ask your project lead for the key"), not a community favourite, so there's no thread history to fall back on; the README is the documentation. A blank api_key falls back to the FAL_KEY environment variable. On a shared ComfyUI box keep passing an explicit per-workflow key - that input is the access gate, not a formality.
Where people get burned
- The mask did nothing. You wired a mask, ran, and the whole frame re-rendered:
mask_modewas stilloff. That's the default on purpose. - You pre-inverted the mask. Feed it WHITE = edit and let the node do the inversion.
- You asked it to reshape something. The 0/2 is the whole story - geometry changes belong to Sunburst or a local edit model.
- Cost drift. Every fal-backed node here paints its price under the node body, and the Superside Fal Cost Report node totals the run. Wire it into batch graphs; a few hundred repairs at $0.22 is a real invoice.
The natural pairing is the pack's own crop-stitch pair: a region selector finds the defect, Crop By Region cuts around it, you edit the crop with mask_mode: off, and Stitch Region pastes it back at full resolution. Paying to re-encode a 12-megapixel frame to fix a 400-pixel scratch is the expensive way to do it.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| image_1 | IMAGE | — | |
| api_key | STRING | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — | |
| mask_imageopt | IMAGE | — | |
| mask_modeopt | COMBO | off - edit whole image | How to use mask_image: - 'off - edit whole image': ignore the mask, edit everything. Use this in crop-stitch pipelines where a separate stitch node does the masking (this is how it worked before). - 'guide model (soft)': send the mask to GPT so it focuses edits on the white area (the model may still re-render the rest). - 'lock outside mask (hard)': same, plus paste the result back only inside the mask so everything outside stays pixel-identical to the input. Best for standalone inpainting. |
| invert_maskopt | BOOLEAN | false | Only used when mask_mode is not 'off'. Mask convention is WHITE = edit this area, BLACK = keep. Turn ON if your mask is inverted (the area you want to change is black). |
| num_imagesopt | INT | 11–4 | — |
| qualityopt | COMBO | high | Rendering quality. 'high' repaired a detail 3/3 in testing and 'medium' 2/3, at roughly a quarter of the price. |
| edit_precisionopt | COMBO | high | How closely the edit is held to the masked region. 'high' keeps more of the surrounding image untouched. |
| seedopt | INT | -1-1–2147483647 | Fixed seed for a reproducible run. -1 lets the service pick, and the seed it used comes back in `info`. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| info | STRING | — |