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

Update a price

PATCH /v1/catalog-prices/:id

Updates an existing price. Fields are passed flat at the JSON root. Pass only the fields you want to change — the rest keep their current values.

Parameters

Parameter Type Required Description
Parameterid (path) Typenumber Requiredyes DescriptionPrice identifier

Request fields (body)

Field Type Required Description
Fieldprice Typenumber Requiredno DescriptionPrice value
Fieldcurrency Typestring Requiredno DescriptionPrice currency, e.g. USD. List: GET /v1/currencies
FieldquantityFrom Typenumber Requiredno DescriptionLower bound of the quantity range
FieldquantityTo Typenumber Requiredno DescriptionUpper bound of the quantity range

id is passed in the path (/v1/catalog-prices/:id); it cannot be passed in the body — it is read-only.

A request with productId or catalogGroupId in the body returns 200, but the product and price type stay the same. To move a price to another product or type, delete it via DELETE /v1/catalog-prices/:id and create a new one via POST /v1/catalog-prices.

Examples

curl — personal key

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

curl — OAuth application

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

JavaScript — personal key

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

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

JavaScript — OAuth application

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

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

Response fields

Field Type Description
Fieldsuccess Typeboolean DescriptionAlways true on success
Fielddata Typeobject DescriptionThe updated price with all its fields — Price fields
Fielddata.id Typenumber DescriptionPrice identifier
Fielddata.productId Typenumber DescriptionProduct ID
Fielddata.catalogGroupId Typenumber DescriptionPrice type
Fielddata.price Typenumber DescriptionPrice value
Fielddata.currency Typestring DescriptionPrice currency
Fielddata.quantityFrom Typenumber | null DescriptionLower bound of the quantity range
Fielddata.quantityTo Typenumber | null DescriptionUpper bound of the quantity range
Fielddata.priceScale Typenumber DescriptionPrice in the Bitrix24 account's base currency
Fielddata.extraId Typenumber | null DescriptionMarkup identifier (catalog_extra). Deprecated Bitrix24 field
Fielddata.timestampX Typestring DescriptionModification date (ISO 8601 with timezone)

Response example

JSON
{
  "success": true,
  "data": {
    "catalogGroupId": 1,
    "currency": "USD",
    "extraId": null,
    "id": 861,
    "price": 1750,
    "priceScale": 1500,
    "productId": 7081,
    "quantityFrom": null,
    "quantityTo": null,
    "timestampX": "2026-09-16T10:03:02.000Z"
  }
}

Error response example

422 — a price with the given id does not exist:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Price is not exists",
    "b24Code": "0"
  }
}

Errors

HTTP Code Description
HTTP422 CodeBITRIX_ERROR DescriptionA price with the given id does not exist (Price is not exists)
HTTP422 CodeBITRIX_ERROR DescriptionThe product has no price of this type for quantities above quantityTo: Invalid quantity range entry: no price is specified for quantity over <quantityTo>
HTTP400 CodeREADONLY_FIELD DescriptionThe body contains id — this field is set by the system and is not accepted on update
HTTP403 CodeSCOPE_DENIED DescriptionThe key lacks the catalog scope
HTTP401 CodeTOKEN_MISSING DescriptionThe API key has no configured tokens

The full list of common API errors — Errors.

Known specifics

priceScale is not recalculated when price changes. On creation priceScale matches price. If you update only price, the response keeps the previous priceScale value.

See also