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

Get a product from an item

GET /v1/items/:entityTypeId/:id/products/:rowId

Returns a single product row of an item by row ID.

Use the entityTypeId field from GET /v1/smart-processes in the /v1/items/:entityTypeId path. The type record's internal id is a different identifier. For example, if a type is returned as { "id": 3, "entityTypeId": 174 }, the path starts with /v1/items/174. Use the returned value rather than assuming all type IDs start at 1030.

Parameters

Parameter Type Required Description
ParameterentityTypeId (path) Typenumber Requiredyes DescriptionSmart process type ID
Parameterid (path) Typenumber Requiredyes DescriptionItem ID
ParameterrowId (path) Typenumber Requiredyes DescriptionProduct row ID (from the add or list response)

rowId is the product row ID, not the productId from the product catalog.

Examples

curl — personal key

Terminal
curl -X GET "https://vibecode.bitrix24.com/v1/items/156/741/products/1471" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl -X GET "https://vibecode.bitrix24.com/v1/items/156/741/products/1471" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/items/156/741/products/1471', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})

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

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/items/156/741/products/1471', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

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

Response fields

Field Type Description
Fielddata.id Typenumber DescriptionProduct row ID
Fielddata.productId Typenumber DescriptionProduct ID. Catalog: GET /v1/products
Fielddata.productName Typestring DescriptionProduct name
Fielddata.price Typenumber DescriptionUnit price
Fielddata.quantity Typenumber DescriptionQuantity
Fielddata.discount Typenumber DescriptionDiscount amount
Fielddata.discountRate Typenumber DescriptionDiscount percentage
Fielddata.discountTypeId Typenumber DescriptionDiscount type (1 — amount, 2 — percentage)
Fielddata.taxRate Typenumber | null DescriptionTax rate (%)
Fielddata.taxIncluded Typeboolean DescriptionTax included in the price
Fielddata.priceExclusive Typenumber DescriptionPrice excluding tax, with discount
Fielddata.priceNetto Typenumber DescriptionNet price
Fielddata.priceBrutto Typenumber DescriptionGross price
Fielddata.priceAccount Typenumber DescriptionPrice in the reporting currency
Fielddata.measureCode Typenumber DescriptionUnit of measure code
Fielddata.measureName Typestring DescriptionUnit of measure name
Fielddata.sort Typenumber DescriptionSort order
Fielddata.ownerId Typenumber DescriptionID of the owner entity the row belongs to
Fielddata.ownerType Typestring DescriptionRow owner type: the letter T plus the hexadecimal entityTypeId, T9c for type 156
Fielddata.storeId Typenumber | null DescriptionWarehouse ID. List: GET /v1/warehouses. null when inventory management is off

Response example

JSON
{
  "success": true,
  "data": {
    "id": 1471,
    "productId": 1,
    "productName": "Server equipment",
    "price": 5000,
    "priceAccount": 5000,
    "priceExclusive": 5000,
    "priceNetto": 5000,
    "priceBrutto": 5000,
    "quantity": 3,
    "discountTypeId": 2,
    "discountRate": 0,
    "discount": 0,
    "taxRate": null,
    "taxIncluded": false,
    "customized": "Y",
    "measureCode": 796,
    "measureName": "pcs",
    "sort": 0,
    "ownerId": 741,
    "ownerType": "T9c",
    "storeId": 3,
    "xmlId": "sale_basket_995",
    "type": 1
  }
}

Error response example

404 — item or product row not found:

JSON
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "Item not found"
  }
}

Errors

HTTP Code Description
HTTP400 CodeINVALID_DYNAMIC_PARAM DescriptionentityTypeId is not a positive integer or is reserved (1, 2, 3, 4, 7, 31)
HTTP400 CodeINVALID_ROW_ID DescriptionrowId is not a positive integer
HTTP404 CodeENTITY_NOT_FOUND DescriptionItem or product row not found
HTTP404 CodeNOT_FOUND DescriptionBitrix24 returned a success response, but the product row is missing (Product row not found)
HTTP403 CodeSCOPE_DENIED DescriptionThe API key lacks the crm scope
HTTP401 CodeTOKEN_MISSING DescriptionThe API key has no configured tokens
HTTP429 CodeRATE_LIMITED DescriptionRate limit exceeded: 300 requests per minute per portal, all API keys of the portal share one limit. The exact value arrives in the x-ratelimit-limit header (the cap is divided across replicas). Retry after the delay in the Retry-After header

Full list of common API errors — Errors.

See also