Update Product
PUT
Updates a product you own. Accepts the same full field set as Create Product; all fields are optional except /products/slug. Only the fields you send are changed — except where a field is a managed collection (see Sync & replace semantics).
Authentication
Headers
| Header | Value | Required |
|---|---|---|
Authorization | Bearer YOUR_API_TOKEN | Yes |
Accept | application/json | Recommended |
Content-Type | application/json | Yes |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | Product id (must belong to your store) |
Body Parameters
All fields from Create Product are accepted and optional exceptslug:
- Core:
name,slug* (must remain unique in your store),type,description,marketing_title,activation_info,status,show_reviews,is_noticeable - Pricing/inventory:
price,cost_price,discount_price,discount_expiry,stock,min_qty,max_purchase_count - Media:
image.file.response.id(omit to keep current),product_files[],extra_images[] - Relations:
categories[],benefits[],fields[] - Per type:
codes[](code),subscriptionVariants[](+license_config/ subscription config),course(sections/modules) - Display/SEO:
metadata.display.*,seo.*
Sync & replace semantics
| Field | Behavior on update |
|---|---|
codes | Replaces the live (unsold) code set. To add, send the existing codes plus new ones. Sold codes are preserved. |
subscriptionVariants | Synced by id: include id to update a variant, omit id to create, omit a variant entirely to delete it. A subscription/license must keep at least one variant (an empty array is rejected). |
subscriptionVariants[].features | Synced by id within each variant. |
course.sections / modules | Synced by id; omitted sections/modules are deleted. |
product_files / extra_images | Synced; ids omitted from the list are detached/removed from the product. |
image | Omit to keep the current image; provide a new media id to replace it. |
benefits / categories | Replace the full set you send. |
Example Requests
Success Response
200 OK
Error Responses
| Code | Description |
|---|---|
401 | Unauthorized — invalid or missing token |
403 | Plan does not include the API feature, or license type requires a plan with license integration |
404 | Product not found in your store, or a referenced media id is not yours |
422 | Validation error (e.g. duplicate slug, empty subscriptionVariants for a subscription/license). The data object contains field errors. |

