---
title: "Create marketplace-ready product packshots"
method: POST
path: "/v2/tool/packshots"
tags: ["edit-workflow"]
---

# Create marketplace-ready product packshots

`POST /v2/tool/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.

## Request body

- PackshotsRequest
  - `product_asset_identifiers` AssetIdentifier[], required — Ordered uploaded or generated product images. Their product color, construction, materials, logos, proportions, and distinguishing details guide every output.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `style_reference_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `view` 'DETAIL' | 'THREE_QUARTER' | 'FRONT' | 'BACK', required — Product view to generate.
  - `instruction` string — Optional art direction for the studio background, lighting, framing, and presentation. Product fidelity rules always take precedence.
  - `aspect_ratio` string — 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.
  - `private` boolean — 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_url` string, 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.

## Response `200`

Packshot accepted for asynchronous processing.

- PackshotsResponse — Acknowledgement that the packshots workflow was accepted. Poll `GET /v1/generations/{generation_id}` for status and results.
  - `generation_id` string, required — URL-safe base64 ID accepted by the generation polling endpoint.

## Other responses

- `400` — Invalid input provided.
- `401` — Unauthorized.
- `402` — Insufficient credits or quota.
- `403` — Not authorized to create packshots.
- `429` — Too many requests.

---

[API](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0.md) · [All operations](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ideogram/ideogram-openapi-3-0/revisions/3eb3216eed39/schema)
