Update a product (only the fields sent; optimistic version); 200 unchanged when nothing differs

Scope: products:write, channel:write or admin.

Idempotency: send Idempotency-Key; a retry with the same key replays the first answer.

Rate limit: write class, 1,200 requests per minute per tenant by default (read class 6,000). Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; a refusal is 429 rate_limited with Retry-After.

Path Params
string
required
length between 1 and 300

The uuid, a legacy 24-hex id, or ext:: (URL-encoded).

Body Params
string
length between 1 and 128
length between 1 and 100
length between 1 and 100
enum
string
length between 1 and 255
length ≤ 100000
length ≤ 10000
length ≤ 24
^[0-9]{1,14}(\.[0-9]{1,8})?$

A non-negative decimal amount in currency units ("12.50"); numbers are accepted.

Schema_c2c1933ffe | null
Schema_451c17529b | null
boolean
boolean
boolean
length ≤ 50
enum
length ≤ 20
length between 2 and 2
externalIdentifiers
array of objects
length ≤ 50

Replaces the set.

externalIdentifiers
images
array of objects
length ≤ 50

Replaces the set.

images
metadata
object

Merged by key; a null value removes the key.

components
array of objects
length ≤ 100
components
vendors
array of objects
length ≤ 50

The tenant's vendors this product is sourced from (by id or externalId). Replaces the set; [] clears it; absent keeps it.

vendors
skipEvents
array of objects
length ≤ 50
skipEvents
Headers
string
length between 7 and 50

Any string of 7 to 50 characters that identifies this request (an order number, a webhook id). A retry with the same key and the same body answers the first result with Idempotent-Replayed: true; the same key with a different body is 422 idempotency_key_reused; a concurrent request with the same key is 409 in_progress with Retry-After. Recommended on every write.

Responses

Language
Credentials
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json