edit-workflow

Advertisement Variations

Generates a brand-locked creative variation of the source ad along the requested variation axis: different people, a different setting, a different group size, or a different scene. Logos, brand colors, the product, and all on-image text are preserved; only the requested axis changes.

The request is processed asynchronously. Poll GET /v1/generations/{generation_id} with the returned generation_id until the generation is completed or failed. The completed generation reports the exact amount billed for the request in usage_cost_usd_micros.

Each returned image is generated at the source creative's own aspect ratio (the long side to short side ratio is capped at 3:1).

Supply the source creative 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.

post/v2/tool/ad-variations

Request body

imagestring binary

The source creative to vary (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.

variation_type'PEOPLE' | 'SETTING' | 'GROUP_SIZE' | 'SCENE' required

The axis to vary while everything else stays on-brand. PEOPLE replaces the people in the ad with different talent. SETTING moves the same subject and product to a different environment. GROUP_SIZE changes how many people appear. SCENE shifts the moment or occasion (time of day, season, or activity).

promptstring

Optional direction to steer the variation, for example "set it on a beach" or "make the models older". Takes priority over the default preservation rules for anything it explicitly asks to change.

quality'LOW' | 'MEDIUM' | 'HIGH'

The quality tier for the image edit. Higher tiers may improve detail and take longer to complete.

num_imagesinteger

The number of variations to generate along the requested axis.

privateboolean

When true or omitted, the output is kept private to your account. Set to false to publish the output to the public feed. Enterprise accounts always generate privately.

webhook_urlstring uri

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.

Example request

{
  "image_asset_identifier": {
    "asset_type": "RESPONSE",
    "asset_id": "7uS_VESkRI6O3-sVgHQp_A"
  },
  "webhook_url": "https://api.example.com/webhooks/ideogram"
}

Response

Ad variation accepted for asynchronous processing.

generation_idstring required

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

Example response

{
  "generation_id": "generation_id"
}

Changes