Ideogram material swap API: 4 masks vs Sume's one mask_url

Ideogram's material-swap tool takes up to 4 masks and material images. Sume's images API has one optional mask_url plus up to 16 references.

4 min readSume
All posts

Ideogram's POST /v2/tool/material-swap is a dedicated tool: one product photo, up to 4 masks and the material images to apply. Sume's images API has no such tool. It has one optional mask_url on ChatGPT Image 2.5 edits, plus up to 16 image references and a prompt, so a 4-region swap becomes a prompt that names each region.

Ideogram facts are from its API reference and Sume facts from Image generation, both read 2026-10-01.

What does Ideogram's material swap accept?

The endpoint is multipart. image is required (max 25MB); masks holds up to 4 files, each with the same pixel dimensions as the photo; materials holds reference images whose color, texture, pattern scale and orientation are applied to the masked regions, paired by position. It returns a generation_id to poll, or delivers to a webhook_url.

What does Sume offer instead?

Material swap on Ideogram versus the Sume images API, read 2026-10-01.
NeedIdeogram material-swapSume POST /v1/images
MasksUp to 4 masks filesOne optional mask_url (public HTTPS), ChatGPT Image 2.5 edits
Material imagesmaterials, one per maskUp to 16 image references on ChatGPT Image 2.5
Region-to-material pairingBy positionNot a parameter; describe it in the prompt
ResultPoll generation_id or webhookdata[].url, Sume-hosted and signed

How do I do a multi-region swap on Sume?

Send the product photo and the material images as input_references, set mask_url to one mask that covers the regions you want changed, and say in the prompt which material goes where. Treat the pairing as a prompt instruction, not a guarantee: the docs define no per-mask pairing. For edits, the docs also say to prefer aspect_ratio: "auto" to match the reference, and note that omitting the field is not the same as auto.

If you need strict one-mask-one-material control, run one edit per region and feed each result into the next. Compare that against Ideogram 4.5 precise edit limits if you are weighing masks.

What happens if I send a parameter Sume does not list?

It is rejected, not dropped. The docs say a request that sets a parameter the selected model does not list is rejected with 400 unsupported_parameter. Read the model's capability descriptors from GET /v1/images/models first, since mask_url is documented for ChatGPT Image 2.5 only.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume