---
title: "Dress a person in one or more garments"
method: POST
path: "/v2/workflow/virtual-try-on"
tags: ["edit-workflow"]
---

# Dress a person in one or more garments

`POST /v2/workflow/virtual-try-on`

Generates a photorealistic image of the person in the supplied photo
wearing the supplied garments, preserving their face, body, and
background.

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

Supply the person as either an `AssetIdentifier` reference
(`person_asset_identifier`) or the raw image bytes directly
(`person_image`, multipart requests only), and likewise the garments as
either `garment_asset_identifiers` or `garment_images`. For each of the
two sources, provide exactly one of the two forms; supplying both, or
neither, is rejected with a 400.

## Request body

- VirtualTryOnRequest — Supply the person as either an `AssetIdentifier` reference or (multipart requests only) raw image bytes, and the garments likewise; for each source provide exactly one of the two forms. Supplying both forms of a source, or neither, is rejected with a 400.
  - `person_asset_identifier` AssetIdentifier — An identifier for an ideogram asset.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `person_image` string, binary — Photo of the person to dress (max size 25MB), as raw bytes; only JPEG, PNG, and WEBP formats are supported. Multipart requests only. Provide exactly one of `person_asset_identifier` or `person_image`.
  - `garment_asset_identifiers` AssetIdentifier[] — Photos of the clothing items to put on the person, by reference. Multiple garments are layered into one coherent outfit. Provide exactly one of `garment_asset_identifiers` or `garment_images`.
    - `asset_type` 'ASSET' | 'CANVAS_ASSET' | 'LAYERED_ASSET' | 'RESPONSE' | 'UPLOAD', required
    - `asset_id` string, required
  - `garment_images` string[] — Photos of the clothing items to put on the person (max 7, max size 25MB per image), as raw bytes; only JPEG, PNG, and WEBP formats are supported. Multipart requests only. Provide exactly one of `garment_asset_identifiers` or `garment_images`.
  - `aspect_ratio` string — The aspect ratio of the generated image. Defaults to the aspect ratio of the person's photo when omitted. Supported values are `1:1`, `3:4`, `4:3`, `16:9`, and `9:16`.
  - `instruction` string — Free-text art direction, for example which garments to name, how to pose the person, and what background to place them in. The person's identity and each garment's exact appearance are always preserved, whatever this says. When omitted, the person keeps the pose and background from their photo.
  - `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`

Try-on accepted for asynchronous processing.

- VirtualTryOnResponse — Acknowledgement that the try-on 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 try-on.
- `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)
