---
title: "Create a fashion lookbook"
method: POST
path: "/v2/workflow/lookbook"
tags: ["edit-workflow"]
---

# Create a fashion lookbook

`POST /v2/workflow/lookbook`

Creates polished fashion product imagery from one or more product
references and an aesthetic reference. Each generated shoot is returned
as four individual lookbook images.

The request is processed asynchronously. Poll
`GET /v1/generations/{generation_id}` with the returned `generation_id`
until the generation is completed or failed.

## Request body

- LookbookRequest
  - `product_asset_identifiers` AssetIdentifier[], required — Product images whose appearance must be preserved in the generated looks.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `category` 'dresses' | 'jeans' | 'pants' | 'tops', required — Selects the category-specific Lookbook presentation reference.
  - `aspect_ratio` string — The aspect ratio of each generated 2x2 composite before it is split into images. Defaults to `1:1` when omitted. Supported values are `1:1`, `3:4`, and `9:16`.
  - `num_shoots` integer — Number of four-image lookbook shoots to create.
  - `private` boolean — If true, the user is requesting private generation. If omitted, this defaults to the user's plan entitlement. Enterprise generations are always private.
  - `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`

Lookbook accepted for asynchronous processing.

- LookbookResponse — Acknowledgement that the Lookbook 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 a lookbook.
- `429` — Too many requests.

---

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