Products (optional)
List, Get & Delete Products
Inspect or remove products you’ve created. Most integrations don’t need these — the inline /try-on flow doesn’t depend on them.
GET
These endpoints are for introspection and cleanup, not part of the core try-on flow. If you’re using the inline
POST /try-on pattern you can skip them entirely — products self-manage via TTL.GET /tryon/v1/products paginates through products you’ve registered with a stable externalId. One-shot products (created by /try-on without an externalId) are not part of your catalog and don’t appear here.
GET /tryon/v1/products/:externalId fetches a single product by ID. This works for any ID you have, including server-generated one-shot IDs returned from /try-on.
DELETE /tryon/v1/products/:externalId removes a product. Past generations keep their snapshot of the product details — deleting only removes the product itself, not the history.
List
1–200, default 50.
nextCursor from the previous page.Response shape
Each product has:Your product ID.
One entry per image:
{ sourceUrl, order }.sourceUrl— the URL you supplied on upsert. For images shipped as multipart bytes this is an opaque internal reference (e.g.upload://…); treat it as a stable identifier, not as something you can fetch.order— 0-indexed position in the original list.
Whatever JSON you sent on upsert.
How long the product lives between uses, in days.
null means kept forever.ISO timestamp of the last generation that referenced this product.
null until the first use.ISO timestamp at which the product will be removed if it’s not used again.
null when validForDays is null (kept forever). Refreshed on every generation.ISO 8601 timestamp.
ISO 8601 timestamp of the last edit.
items in { items, nextCursor, hasMore, count }. nextCursor is null (or omitted) on the last page.

