Products API
Scopes: products.read / products.write
List products
GET /v1/products?limit=250&cursor=...&updated_since=...&status=published
Get product
GET /v1/products/{id}
Create product
POST /v1/products
Idempotency-Key: ...
{
"title": "Ceramic bottle 500ml",
"handle": "ceramic-bottle-500",
"status": "draft",
"description": "…",
"variants": [
{
"sku": "BOTTLE-500",
"title": "Default",
"prices": [{ "amount": 2499, "currency": "EUR" }]
}
],
"categories": ["cat_…"]
}
Update product
PATCH /v1/products/{id}
Partial update; omit unchanged fields.
Delete product
DELETE /v1/products/{id}
Batch upsert (in development)
POST /v1/products/batch
Idempotency-Key: ...
Confirm via availability / changelog before relying on this path. See Usage guidelines for planned batch limits.
Webhooks: product.created | product.updated | product.deleted.