---
title: "Create ghost-mannequin garment photography"
method: POST
path: "/v2/tool/ghost-mannequin"
tags: ["edit-workflow"]
---

# Create ghost-mannequin garment photography

`POST /v2/tool/ghost-mannequin`

Transforms one or more photographs of the same garment into a polished
ghost-mannequin product image on a clean white studio background. The
garment keeps its identity and construction while the source person,
mannequin, hanger, environment, and other clothing are removed.

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

Supply one or more garment references. Use the directional fields when
the camera direction is known; each direction accepts either an
existing `AssetIdentifier` or one raw image, but not both. Additional
unlabeled references can be supplied through exactly one transport:
`garment_asset_identifiers`, or multipart `garment_images`.

## Query parameters

- `dry_run` boolean

## Request body

- GhostMannequinRequest — Supply at least one garment reference. Directional references are nullable and accept at most one of their asset-identifier or multipart image fields. Additional unlabeled references can use exactly one of `garment_asset_identifiers` or multipart `garment_images`. Every garment image must depict the same primary garment. The total number of garment references must not exceed 15, and all raw image uploads combined must not exceed 100 MB.
  - `garment_asset_identifiers` AssetIdentifier[] — Ordered uploaded or generated images of the same garment. Use multiple angles when available so obscured construction can be reconstructed conservatively. Mutually exclusive with `garment_images`.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `garment_images` string[] — Raw images of the same garment, up to 50 MB each. JPEG, PNG, WEBP, HEIF, AVIF, GIF, BMP, TIFF, and MPO are supported. Multipart requests only. Mutually exclusive with `garment_asset_identifiers`.
  - `front_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `front_image` string, binary — Optional raw front-view garment reference, up to 50 MB. Multipart requests only. Mutually exclusive with `front_asset_identifier`.
  - `back_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `back_image` string, binary — Optional raw back-view garment reference, up to 50 MB. Multipart requests only. Mutually exclusive with `back_asset_identifier`.
  - `left_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `left_image` string, binary — Optional raw left-view garment reference, up to 50 MB. Multipart requests only. Mutually exclusive with `left_asset_identifier`.
  - `right_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `right_image` string, binary — Optional raw right-view garment reference, up to 50 MB. Multipart requests only. Mutually exclusive with `right_asset_identifier`.
  - `top_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `top_image` string, binary — Optional raw top-view garment reference, up to 50 MB. Multipart requests only. Mutually exclusive with `top_asset_identifier`.
  - `bottom_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `bottom_image` string, binary — Optional raw bottom-view garment reference, up to 50 MB. Multipart requests only. Mutually exclusive with `bottom_asset_identifier`.
  - `view` 'front' | 'three_quarter' | 'back', required — Camera view for the output garment.
  - `instruction` string — Optional reconstruction guidance or identity-critical garment details for the analyzer to verify. The output always uses the workflow's clean white studio presentation.
  - `metadata` string — Optional JSON object serialized as a string containing factual product context, such as title, brand, category, color, material, item code, and exact printed text. Metadata helps disambiguate the garment references but does not add unsupported visual features.
  - `aspect_ratio` string — Output aspect ratio. Defaults to `1:1` when omitted. 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.
  - `seed` integer — Optional seed for repeatable results.
  - `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`

Ghost-mannequin generation accepted for asynchronous processing.

- GhostMannequinResponse — Acknowledgement that the ghost-mannequin 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 ghost-mannequin images.
- `404` — An input asset was not found or is not readable.
- `413` — The combined raw image uploads exceed 100 MB.
- `422` — The instruction did not pass prompt safety validation.
- `429` — Too many requests.

## Changes

- **2026-09-19** `4e95197be44a` — 12 breaking, 12 info
  - removed the enum value `BACK` of the request property `view` (media type: multipart/form-data)
  - removed the enum value `BACK` of the request property `view` (media type: application/json)
  - removed the enum value `FRONT` of the request property `view` (media type: multipart/form-data)
  - removed the enum value `FRONT` of the request property `view` (media type: application/json)
  - …20 more
- **2026-09-16** `a235a15c0235` — 1 info
  - added the new optional `query` request parameter `dry_run`
- **2026-09-11** `5dc75f5e8df3` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ideogram/apis/ideogram-openapi-3-0/changes/v2/tool/ghost-mannequin/post.md)

---

[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.dev/ideogram/apis/ideogram-openapi-3-0/revisions/c891acf371ed?raw)
