For AI agents: markdown of this page — /docs-content-en/entities/catalog-products/get.md documentation index — /llms.txt
Get catalog product
GET /v1/catalog-products/:id
Returns a single catalog product by identifier. The response contains more fields than the list: in addition to the fields from the reference, it returns the symbolic code, dimensions, type, and custom catalog properties.
Read the product's native images through the separate GET /v1/catalog-products/:productId/images endpoint. It returns the detail picture, preview picture, and MORE_PHOTO gallery, but not files stored in other custom File properties (propertyNNN).
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
id (path) |
number | yes | Product identifier |
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/catalog-products/541" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/catalog-products/541" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-products/541', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
console.log('Product:', data.name)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-products/541', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data |
object | Product object. The base field set — see Catalog product fields |
In addition to the reference fields, a single record contains:
code— symbolic codesort— sort ordertype— product typevatId— VAT rate IDquantityReserved— reserved stockweight,width,height,length— product dimensionsxmlId— external code- custom catalog properties of the form
propertyNNN— see the "List-property values" section below
Fields with an empty value are returned as null.
Response example
The main fields are shown.
{
"success": true,
"data": {
"id": 541,
"iblockId": 25,
"iblockSectionId": null,
"name": "USB-C cable",
"active": true,
"code": null,
"measure": 9,
"weight": null,
"vatId": 1,
"vatIncluded": false,
"available": true,
"bundle": false,
"canBuyZero": true,
"quantityTrace": false,
"subscribe": true,
"barcodeMulti": false,
"withoutOrder": false,
"purchasingPrice": 110,
"purchasingCurrency": "USD",
"quantity": null,
"quantityReserved": null,
"sort": 500,
"type": 1,
"dateCreate": "2021-08-06T12:59:15.000Z",
"timestampX": "2025-10-31T10:24:18.000Z",
"xmlId": "541"
}
}
List-property values (`propertyNNN`)
Custom catalog properties arrive in fields of the form propertyNNN, where NNN is the property id from GET /v1/catalog-product-properties. For a list property the value arrives as an object, and the readable text is already in the response — no extra request is needed to decode it:
{
"id": 160,
"iblockId": 26,
"name": "T-shirt (L)",
"property166": {
"value": "116",
"valueEnum": "L",
"valueId": "674"
}
}
| Key | What it is |
|---|---|
value |
Identifier of the enumeration element, as a string. This is the id of a record in List-property values |
valueEnum |
Readable text of the selected option. Here L is a size, not the listType code |
valueId |
Identifier of the value row on the product. Internal — not needed to match against the reference |
The shape depends on the property's listType. Read it from GET /v1/catalog-product-properties/:id:
Property listType |
What arrives in propertyNNN |
|---|---|
L (dropdown) |
an object { value, valueEnum, valueId }, as above |
C (checkbox) |
a bare "Y" or "N" scalar — the checkbox state, not an option ID |
When multiple: true, the same shape arrives as an array — expand every element.
For all possible options of a property (a dropdown, a filter, an export) use GET /v1/catalog-product-property-enums?filter[propertyId]=166&limit=1000. Match against the product with String(element.id) === product.propertyNNN.value.
Error response example
422 — no product with the specified id exists:
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "product does not exist."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 422 | BITRIX_ERROR |
No product with the specified id exists (product does not exist.) |
| 403 | SCOPE_DENIED |
The API key does not have the catalog scope |
| 401 | MISSING_API_KEY |
The X-Api-Key header was not passed |
Full list of common API errors — Errors.