Update Product
Products
Update Product
Update an existing product
PUT
Update Product
Update Product
Updates an existing product. Only include the fields you want to update.Request
Path Parameters
The unique product ID
Body Parameters
All body parameters are optional. Only include the fields you want to update.The product title
Product description (supports HTML)
URL-safe handle
Product vendor/brand name
Product type or category
Primary category ID (legacy single-category FK on the product row).
If you set this without
categoryIds, the backend auto-mirrors the
value into the ProductCategories many-to-many join so the product
shows up on /collections/{handle} listings. Safe to send on its own
for single-category products.Array of category IDs for the many-to-many
ProductCategories join.
This is the relation storefront collection pages and the
collection.products Liquid drop list from. The first entry (or the
one matching categoryId) is stored as the primary association. Use
this when a product belongs to multiple categories.Behaviour:- If
categoryIdsis supplied, it fully replaces the existing associations. - If only
categoryIdis supplied, the backend treats it ascategoryIds: [categoryId]. - If both are supplied and
categoryIdis incategoryIds, it stays the primary; otherwise the first valid id incategoryIdsbecomes primary.
Product status:
active, draft, archivedArray of tags (replaces existing tags)
Array of variants to update or create
Array of images to update or add
Response
Whether the request succeeded
The updated product object
Example Response
Error Codes
| Code | Description |
|---|---|
UNAUTHORIZED | Invalid or missing access token |
FORBIDDEN | App doesn’t have write_products scope |
NOT_FOUND | Product with the specified ID does not exist |
VALIDATION_ERROR | Invalid request body |
DUPLICATE_HANDLE | A product with this handle already exists |