edit-workflow

Create marketplace-ready product packshots

Creates one polished product photograph from one or more ordered product references. An optional style reference may guide framing, crop, background, and lighting without changing the product's identity.

The request is processed asynchronously. Poll GET /v1/generations/{generation_id} with the returned generation_id until the generation is completed or failed. Product fidelity is best-effort and details absent from every reference may be reconstructed.

post/v2/tool/packshots

Request body

view'DETAIL' | 'THREE_QUARTER' | 'FRONT' | 'BACK' required

Product view to generate.

instructionstring

Optional art direction for the studio background, lighting, framing, and presentation. Product fidelity rules always take precedence.

aspect_ratiostring

Aspect ratio for every generated image. Supported values are 1:1, 3:4, 4:3, 16:9, and 9:16.

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

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

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

{
  "product_asset_identifiers": [
    {
      "asset_type": "RESPONSE",
      "asset_id": "7uS_VESkRI6O3-sVgHQp_A"
    }
  ],
  "view": "FRONT"
}

Response

Packshot accepted for asynchronous processing.

generation_idstring required

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

Example response

{
  "generation_id": "generation_id"
}

Changes