externalId, usually your SKU or catalog product ID).
You never have to create products up front. The first try-on that includes a product creates it. What matters is that you send the same externalId every time you try on the same garment.
Why reuse the same ID
The first time we see a product, we analyze it: what kind of garment it is, and which image shows it best. That analysis adds a few seconds to the first try-on. It is saved on the product, so every later try-on with the sameexternalId skips it.
Three ways to send a product
Every try-on resets the product’s lifetime, so products your shoppers use keep living. Products created with
POST /products never expire.
The recommended pattern
Send the ID alone. If the product expired or was never sent, you get404 PRODUCT_NOT_FOUND: send it again in full, once.
First call, or after PRODUCT_NOT_FOUND
Every call after that
ProductNotFoundError.
Choosing the ID
- Use an ID that never changes for the garment: your SKU or product ID. Don’t add timestamps or random values.
- One ID per look. If colours have their own photos, give each colour its own ID (
shirt-42-red,shirt-42-blue). Switching images under one ID replaces the product and runs the analysis again. - The ID is yours. It is scoped to your account and can’t start with
_anon_, which is reserved for one-shot products.
Getting the best results
- Send the full title and a real description (cut, fit, length). They help the AI understand the garment.
- Prefer image URLs to uploaded files. URLs are fetched once and cached. Uploaded bytes travel with every call that includes them.
Manage your products
- See every product, its try-ons and any input problems in the dashboard under Products.
- Register products ahead of time, or keep them forever, with Upsert Product.
- List, fetch or delete them with List, Get & Delete Products.

