Catalog Product — Update
Equivalent to PUT /api/admin/catalog/products/{id}.
This is a partial patch — send only the fields you want to change inside input. Omitted fields keep their current value. Pass the product IRI as id (e.g. "/api/admin/catalog/products/42").
Prerequisites
The examples use illustrative IRIs. Replace them with the IRI of a product that exists in your store — use the adminCatalogProducts query to discover valid ids.
Operation
| Operation | Type |
|---|---|
updateAdminCatalogProduct | Mutation |
Input shape
The input has named camelCase args for the common and structural fields, plus an extras object for everything else:
| Arg | Notes |
|---|---|
id | The product IRI. Required. |
urlKey, status, price, weight | Common scalar fields. |
categories, channels | int[] — replace the product's assignment when sent, preserved when omitted. |
superAttributes, variants | Configurable structure. |
bundleOptions | Bundle structure. |
links | Grouped structure. |
downloadableLinks, downloadableSamples | Downloadable structure. |
booking | Booking structure (type ∈ default / appointment / event / rental / table). |
extras | Any other attribute code — name, color, meta_title, short_description, brand, … — as a JSON object keyed by attribute code. |
Family attribute fields (e.g. name, color, meta_title, short_description) that aren't one of the named args go inside extras. Structure args replace that structure when sent — send the full set. See the examples: dropdown for each type's verified payload.
Locale & channel
GraphQL has no query string, so translatable fields are written to the store's default locale and channel. To target a specific locale (e.g. write the French translation while leaving English untouched), use the REST endpoint with its ?locale=fr&channel=default query parameter — see the REST Update page.
Sub-resources are not updated here
images, videos, inventories, and customerGroupPrices are not handled by this mutation — they have dedicated operations. If sent, they are ignored and noted in the response _warnings array:
- Images → reorder images
- Inventories → update inventories
- Customer-group prices → customer-group prices
Response
Returns the updated product. Select { adminCatalogProduct { id sku type } }, or query the full detail fields — same shape as the detail query.

