Product Material Change

Re-renders the masked regions of the product photo in the materials shown by the reference images — matching each one's color, texture, pattern scale, and orientation — while preserving the product's silhouette, construction, seams, and shading, and keeping every region outside the masks unchanged. The request is processed asynchronously. Poll `GET /v1/generations/{generation_id}` with the returned `generation_id` until the generation is completed or failed. Supply the product photo as either an `AssetIdentifier` reference (`image_asset_identifier`) or the raw image bytes directly (`image`, multipart requests only). Provide exactly one of the two forms; supplying both, or neither, is rejected with a 400. Supply the masks marking the regions to re-material as either `AssetIdentifier` references (`mask_asset_identifiers`) or the raw mask bytes directly (`masks`, multipart requests only) — up to 4 regions; a single-region edit is a one-item list. Provide exactly one of the two forms. Every mask must have the same pixel dimensions as the product photo. White pixels mark the region to change; black pixels are preserved. Alpha-only masks are also supported: opaque pixels mark the region to change and transparent pixels are preserved. Supply the material references as either `AssetIdentifier` references (`material_asset_identifiers`) or the raw image bytes directly (`materials`, multipart requests only). Provide exactly one of the two forms. Send either one material, which every mask takes, or exactly one material per mask, paired by position.

Authentication

Api-Keystring

API key for access control. Use in the header with the name “Api-Key”

Request

The product photo, one mask or several masks marking the regions to change, and either one shared material reference or one per mask. Use multipart/form-data to upload raw bytes directly, or application/json (or multipart with *_asset_identifiers fields) to reference existing assets instead.

image_asset_identifierobjectOptional
An identifier for an ideogram asset.
imagefileOptional

The product photo to edit (max size 25MB), as raw bytes; only JPEG, PNG, and WEBP formats are supported. Multipart requests only. Provide exactly one of image_asset_identifier or image.

mask_asset_identifierslist of objectsOptional
The masks marking the regions of the product photo to change, by reference (max 4). Every mask must have the same pixel dimensions as the product photo. White pixels mark the region to change; black pixels are preserved. Alpha-only masks are also supported: opaque pixels mark the region to change and transparent pixels are preserved. Provide exactly one of `mask_asset_identifiers` or `masks`.
masksfilesOptional
The masks marking the regions of the product photo to change (max 4, max size 25MB each), as raw bytes; only JPEG, PNG, and WEBP formats are supported. Every mask must have the same pixel dimensions as the product photo, and follows the same pixel rules as `mask_asset_identifiers`. Multipart requests only. Provide exactly one of `mask_asset_identifiers` or `masks`.
material_asset_identifierslist of objectsOptional

The material reference images, by reference. Only their material — color, texture, pattern scale, and orientation — is applied to the masked regions. Send one material, which every mask takes, or exactly one per mask paired by position. Provide exactly one of material_asset_identifiers or materials.

materialsfilesOptional
The material reference images (max size 25MB each), as raw bytes; only JPEG, PNG, and WEBP formats are supported. Only their material — color, texture, pattern scale, and orientation — is applied to the masked regions. Send one material, which every mask takes, or exactly one per mask paired by position. Multipart requests only. Provide exactly one of `material_asset_identifiers` or `materials`.
aspect_ratiostringOptionalformat: "^(1:1|3:4|4:3|16:9|9:16)$"
The aspect ratio of the generated image. Defaults to the aspect ratio of the product photo when omitted, which preserves the original framing exactly. When a different ratio is requested, the scene is extended to fill the new shape rather than cropped, so part of the frame is newly generated. Supported values are `1:1`, `3:4`, `4:3`, `16:9`, and `9:16`.
qualityenumOptional
The quality tier for the image edit. Higher tiers may improve detail and take longer to complete.
Allowed values:
webhook_urlstringOptionalformat: "uri"<=2048 characters
HTTPS URL that Ideogram delivers the generated result to. Ideogram sends a JSON POST to this URL once all images for the request have finished generating. The body mirrors the synchronous generate response: `request_id`, `created`, and a `data` array containing every generated image (`url`, `prompt`, `resolution`, `seed`, `is_image_safe`). Each delivery is signed with Ed25519 and verifiable against the public keys at `https://api.ideogram.ai/v1/.well-known/jwks.json`. Must be HTTPS; private and loopback hosts and the cloud metadata service are rejected.

Response

Material swap accepted for asynchronous processing.
generation_idstring

URL-safe base64 ID accepted by the generation polling endpoint.

Errors

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
429
Too Many Requests Error