Admin Catalog: Products

Update a catalog product (any type)

Partial update (PATCH-style): send only the fields you want to change — every attribute on the product's family is editable by its code (sku, name, url_key, short_description, description, meta_title, color, size, brand, price, weight, status, …). Translatable fields are written to the requested locale; pass ?locale=fr&channel=default to target a specific locale/channel (defaults to the store default). Omitted fields keep their current value. Type-structure keys are accepted for the matching type: variants (configurable), bundle_options (bundle), links (grouped), downloadable_links/downloadable_samples (downloadable), booking (booking). categories/channels/related_products/up_sells/cross_sells replace the current set when sent (omit to keep). Sub-resources images/videos/inventories/customer_group_prices have dedicated endpoints and are ignored here (noted in _warnings). Returns the full product detail (same shape as GET /catalog/products/{id}).

put/catalog/products/{id}

Request

Path parameters

idinteger required
Example:42

Product ID.

Request body

skustring
namestring
product_numberstring
url_keystring
status0 | 1
visible_individually0 | 1
guest_checkout0 | 1
new0 | 1
featured0 | 1
manage_stock0 | 1
pricestring
coststring
special_pricestring
special_price_fromstring date
special_price_tostring date
GSTstring
weightstring
lengthstring
widthstring
heightstring
tax_category_idinteger
colorinteger

Attribute option id.

sizeinteger

Attribute option id.

brandinteger

Attribute option id.

short_descriptionstring
descriptionstring
meta_titlestring
meta_keywordsstring
meta_descriptionstring
categoriesinteger[]
channelsinteger[]
up_sellsinteger[]
cross_sellsinteger[]
related_productsinteger[]
customizable_optionsobject

Custom options (simple & virtual only). Keyed option_; each option may carry a prices map keyed price_.

super_attributesobject

Configurable only. Map of attribute code to option-id list.

variantsobject

Configurable only. Per-variant fields keyed by variant product id.

bundle_optionsobject

Bundle only. Option groups keyed option_; products keyed product_.

linksobject

Grouped only. Associated products keyed link_*.

downloadable_linksobject

Downloadable only. Links keyed link_*.

downloadable_samplesobject

Downloadable only. Samples keyed sample_*.

bookingobject

Booking only. type ∈ default/appointment/event/rental/table.

translationsobject

Optional locale-keyed override. Top-level codes already write to the request locale (?locale=).

Example request

{
  "sku": "sp-001",
  "name": "Arctic Beanie",
  "product_number": "PN-1001",
  "url_key": "arctic-beanie",
  "status": 1,
  "visible_individually": 1,
  "guest_checkout": 1,
  "new": 1,
  "featured": 1,
  "manage_stock": 1,
  "price": "99.99",
  "cost": "40.00",
  "special_price": "79.99",
  "special_price_from": "2026-08-01",
  "special_price_to": "2026-08-31",
  "GST": "5.00",
  "weight": "0.5",
  "length": "10",
  "width": "5",
  "height": "3",
  "tax_category_id": 2,
  "color": 1,
  "size": 6,
  "brand": 10,
  "short_description": "Warm knit beanie.",
  "description": "Full HTML description.",
  "meta_title": "Arctic Beanie",
  "meta_keywords": "beanie, winter",
  "meta_description": "Buy the Arctic Beanie.",
  "categories": [
    1,
    8
  ],
  "channels": [
    1
  ],
  "up_sells": [
    2
  ],
  "cross_sells": [
    3
  ],
  "related_products": [
    2
  ],
  "translations": {
    "fr": {
      "name": "Bonnet Arctique"
    }
  }
}

Response

Product updated. Returns the full AdminCatalogProduct payload, plus _warnings (array of strings) if any sub-resource fields were stripped from the payload.

Changes

No recorded changes to this operation across all 8 revisions of this API.