For AI agents: markdown of this page — /docs-content-en/entities/catalog-product-properties/update.md documentation index — /llms.txt
Update a property
PATCH /v1/catalog-product-properties/:id
Updates an existing property definition. Fields are passed flat at the root of the JSON. Pass only the fields you want to change — the rest keep their current values. The response returns the re-read property definition.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
id (path) |
number | yes | Property identifier |
Request fields (body)
| Field | Type | Req. | Description |
|---|---|---|---|
name |
string | no | Property display name |
code |
string | no | Symbolic code. Latin letters, digits, and underscore, first character not a digit |
active |
boolean | no | Whether the property is active |
sort |
number | no | Sort index |
defaultValue |
string | no | Default value |
userTypeSettings |
object | no | User type settings |
listType |
string | no | List appearance: L dropdown, C checkboxes |
multiple |
boolean | no | Multiple value |
multipleCnt |
number | no | Number of inputs for a multiple value |
rowCount |
number | no | Number of input rows |
colCount |
number | no | Number of input columns |
withDescription |
boolean | no | Value description field |
searchable |
boolean | no | Included in search |
filtrable |
boolean | no | Included in the filter |
isRequired |
boolean | no | Required to fill in |
linkIblockId |
number | no | Linked catalog ID for binding types |
fileType |
string | no | Allowed file extensions for type F |
xmlId |
string | no | External identifier |
hint |
string | no | Field hint |
id is passed in the path, not the body — it is read-only. The iblockId, propertyType, and userType fields are set on create only: a PATCH that includes any of them is rejected with 400 READONLY_FIELD. The timestampX field is filled by the system.
Examples
curl — personal key
curl -X PATCH "https://vibecode.bitrix24.com/v1/catalog-product-properties/659" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Product category"
}'
curl — OAuth application
curl -X PATCH "https://vibecode.bitrix24.com/v1/catalog-product-properties/659" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Product category"
}'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-product-properties/659', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Product category',
}),
})
const { success, data } = await res.json()
console.log('New name:', data.name)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-product-properties/659', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Product category',
}),
})
const { success, data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data |
object | The re-read property definition. The field set is the same as GET /v1/catalog-product-properties/:id |
Response example
The main fields are shown.
{
"success": true,
"data": {
"id": 659,
"iblockId": 19,
"name": "Product category",
"propertyType": "S",
"code": "s12",
"active": true,
"sort": null,
"defaultValue": null,
"userType": "directory",
"userTypeSettings": {
"group": "N",
"multiple": "N",
"size": 1,
"tableName": "b_hlbd_categories",
"width": 0
},
"listType": "L",
"multiple": false,
"multipleCnt": null,
"rowCount": 1,
"colCount": 30,
"withDescription": null,
"searchable": false,
"filtrable": false,
"isRequired": false,
"linkIblockId": null,
"fileType": null,
"xmlId": null,
"hint": null,
"timestampX": "2026-03-19T18:23:02.000Z"
}
}
Error response example
422 — no property with the specified id exists:
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "property does not exist."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 422 | BITRIX_ERROR |
No property with the specified id exists (property does not exist.) |
| 400 | READONLY_FIELD |
A read-only field was passed in the body, for example id |
| 403 | SCOPE_DENIED |
The key lacks the catalog scope |
| 401 | MISSING_API_KEY |
The X-Api-Key header was not passed |
Full list of common API errors — Errors.