Skip to content

Update a product / control try-on

PATCH
/products/{product_id}
curl --request PATCH \
--url https://api.integration.tryonvirtual.com/v1/products/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "title": "example", "category": "eyewear", "handle": "example", "external_id": "example", "mode": "realtime", "tryon_enabled": true }'

Partial update. mode selects the try-on experience: realtime (3D asset AR) or swap (AI photo swap). Changing mode disables try-on until you re-enable it. Enabling try-on requires a category and a mode; realtime additionally requires an active 3D asset.

product_id
required
string format: uuid
Media typeapplication/json
object
title
string
<= 255 characters
category
string
Allowed values: eyewear watch shoes jewelry clothes bag luggage
handle
string
external_id
string
<= 255 characters
mode
string
Allowed values: realtime swap
tryon_enabled
boolean

Updated product

Media typeapplication/json
object
product
object
id
string format: uuid
external_id

Your own product identifier (SKU, database id…). Set it at create or via PATCH, filter with GET /products?external_id=…, and use it directly in the storefront button/script in place of our id. Read-only for Shopify-platform shops.

string | null
title
string
handle
string
category
string
Allowed values: eyewear watch shoes jewelry clothes bag luggage
status
string
image_url
string | null
model_type

Try-on experience. Null when no mode is set yet.

string | null
Allowed values: realtime swap
tryon_status
string
Allowed values: active inactive
active_asset_id

UUID of the active 3D asset (realtime mode only).

string | null
swap_ready

True once the product’s images have been processed for AI try-on (processing starts when images are added, typically under a minute). Only show the storefront button when this is true and tryon_status is active.

boolean
images
Array<object>
object
id
string format: uuid
url
string
position
integer
is_primary
boolean
created_at
string format: date-time
created_at
string format: date-time
Example
{
"product": {
"category": "eyewear",
"model_type": "realtime",
"tryon_status": "active"
}
}

Invalid input

Media typeapplication/json
object
error
object
code
string
message
string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

Resource not found (or belongs to another shop)

Media typeapplication/json
object
error
object
code
string
message
string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}