Skip to content

Create a product

POST
/products
curl --request POST \
--url https://api.integration.tryonvirtual.com/v1/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "title": "example", "category": "eyewear", "handle": "example", "external_id": "example", "images": [ "https://example.com" ] }'
Media typeapplication/json
object
title
required
string
<= 255 characters
category
required
string
Allowed values: eyewear watch shoes jewelry clothes bag luggage
handle

URL slug. Generated from the title when omitted.

string
external_id

Your own identifier for this product (unique within your shop). Lets you look products up and wire the storefront using ids you already have.

string
<= 255 characters
images

Image URLs to import. Each is downloaded (10s timeout, 15 MB max, must be an image content type). URLs that fail are reported in images_failed without failing the request.

Array<string>
<= 10 items

Product created

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
images_failed
Array<object>
object
url
string
code
string
message
string
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"
}
}