For AI agents: markdown of this page — /docs-content-en/entities/products/update.md documentation index — /llms.txt

Update CRM product

PATCH /v1/products/:id

Updates a CRM catalog product. Pass only the fields being changed, flat at the JSON root — without the fields wrapper. The response returns the full object of the updated product.

The price can be changed here — with one caveat about currency. The price and currency fields and the currencyId alias are writable: Bitrix24 stores the sent value (verified 2026-09-07 on a live portal). But when the request CHANGES the price's currency — the value sent disagrees with the current one — Bitrix24 silently drops the whole request, including the price sent alongside it: both fields stay at their previous values and the response is still 200. To change the currency, find the product's price record with GET /v1/catalog-prices?filter[productId]=<id> and update it with PATCH /v1/catalog-prices/{id} — see Catalog prices.

Parameters

Parameter Type Required Description
id (path) number yes Product identifier. List: GET /v1/products

Request fields (body)

Field Type Required Description
name string no Product name
price number no Product price. Currency is set by currency or its currencyId alias
currencyId string no Write alias of currency. Responses return the value under currency
currency string no Canonical name of the price currency. If both names are present, currency wins. List: GET /v1/currencies
active boolean no Whether the product is active
sectionId number no Catalog section. List: GET /v1/product-sections
catalogId number no Product catalog. List: GET /v1/catalogs
measure number no Measurement unit identifier
description string no Product description
descriptionType string no Description format: text or html
vatId number no VAT rate identifier
vatIncluded boolean no VAT included in the price
sort number no Sort order
xmlId string no External identifier
code string no Symbolic product code
createdBy number RO Identifier of the employee who created it
modifyBy number RO Identifier of the employee who modified it
createdAt datetime RO Creation date
updatedAt datetime RO Last modification date

Examples

curl — personal key

Terminal
curl -X PATCH "https://vibecode.bitrix24.com/v1/products/7027" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "price": 150
  }'

curl — OAuth app

Terminal
curl -X PATCH "https://vibecode.bitrix24.com/v1/products/7027" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "price": 150
  }'

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/products/7027', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    price: 150,
  }),
})

const { success, data } = await res.json()
console.log('New price:', data.price)

JavaScript — OAuth app

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/products/7027', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    price: 150,
  }),
})

const { success, data } = await res.json()

Response fields

Field Type Description
success boolean Always true on success
data object The updated product object: basic fields — see CRM product fields, plus the custom PROPERTY_<N> properties

Response example

The main fields are shown. The response also includes catalog properties of the form PROPERTY_<N> — see Get CRM product.

JSON
{
  "success": true,
  "data": {
    "id": 7027,
    "name": "Desk lamp",
    "code": "desk_lamp",
    "active": true,
    "previewPicture": null,
    "detailPicture": null,
    "sort": 500,
    "xmlId": "7027",
    "updatedAt": "2026-06-16T08:48:21.000Z",
    "createdAt": "2026-06-16T08:48:18.000Z",
    "modifyBy": 1,
    "createdBy": 1,
    "catalogId": 25,
    "sectionId": null,
    "description": null,
    "descriptionType": "text",
    "price": 150,
    "currency": "USD",
    "vatId": null,
    "vatIncluded": false,
    "measure": null
  }
}

Error response example

404 — product not found:

JSON
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "Product is not found."
  }
}

Errors

HTTP Code Description
404 ENTITY_NOT_FOUND A product with this id was not found
403 SCOPE_DENIED The API key does not have the crm scope
401 MISSING_API_KEY The X-Api-Key header was not passed

Full list of common API errors — Errors.

See also