Skip to main content
PUT
Use a stable product_id in the URL. A new product needs title and at least one image; later requests may send only changed fields.

Authorizations

Authorization
string
header
required

Keep the virtual.fit API key on your server.

Path Parameters

site_id
string<uuid>
required

Custom JavaScript site ID from virtual.fit.

product_id
string
required

Stable, case-sensitive identity that remains unchanged when the product's title, URL, options, variants, price, or media change. URL-encode it in the request path.

Maximum string length: 255

Body

application/json

A new product requires title and images. For an existing product, every field is optional and omitted fields stay unchanged.

title
string
x-required-on-create
Maximum string length: 500
images
object[] | null
x-required-on-create
Required array length: 1 - 500 elements
handle
string | null

Required when storefront URL resolution matches by handle.

Maximum string length: 255
canonical_url
string<uri>
Maximum string length: 8192
enabled
boolean
default:true

Whether the product can use the fitting room. This is separate from sale availability.

available
boolean | null

Source-reported sale availability for a product without exact variants. Variant availability takes precedence when variants exist.

rating
number | null

Current overall customer rating.

Required range: 0 <= x <= 5
review_count
integer | null

Number of reviews represented by the overall rating.

Required range: x >= 0
price
object | null
compare_at_price
object | null
variants
object[] | null
Maximum array length: 5000
variants_complete
boolean
default:false

When true, omitted variants become inactive. Use with an empty array for a variantless product.

options
object[] | null

Auto-derived from variant option values when omitted.

Maximum array length: 20
size_charts
object[] | null
Maximum array length: 50
garment_measurements
object[] | null
Maximum array length: 250
model_observations
object[] | null
Maximum array length: 50
brand
string | null
Maximum string length: 255
product_type
string | null
Maximum string length: 255
description
string | null
Maximum string length: 65536
custom_instructions
string | null
Maximum string length: 4096
prompt_tag
string | null

Concise garment naming override; auto-detected when omitted.

Maximum string length: 255
source_active
boolean
source_status_raw
string
Maximum string length: 255
source_updated_at
string<date-time>
ingest
object
schema_version
enum<integer>
default:2

Omit for version 2. Use 1 only for an existing image-only legacy integration.

Available options:
1,
2

Response

Saved product and its canonical catalog representation.

product
object
required

Compatibility fitting-room product projection.

catalog_product
object
required

Persisted canonical catalog product.

schema_version
integer
required