Для AI-агентов: markdown этой страницы — /docs-content/entities/invoices/products-get.md индекс документации — /llms.txt

Товарные позиции счёта

GET /v1/invoices/:id/products

Возвращает список товарных позиций, привязанных к счёту.

Параметры

Параметр Тип Обяз. Описание
id (path) number да ID счёта
limit (query) number нет Сколько позиций вернуть за вызов, от 1 до 5000, по умолчанию 50. Значение выше 5000 приводится к 5000. limit=0 размером страницы не считается: применяется значение по умолчанию, а в meta.warnings приходит запись с кодом LIMIT_ZERO_IGNORED
offset (query) number нет Смещение в позициях, а не в страницах: offset=7 начинает выдачу с восьмой позиции

Без limit и offset приходит первая страница выдачи. Есть ли позиции за её пределами, показывает meta.hasMore, а сколько их всего у счёта — meta.total.

Примеры

curl — личный ключ

Terminal
curl "https://vibecode.bitrix24.tech/v1/invoices/741/products" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth-приложение

Terminal
curl "https://vibecode.bitrix24.tech/v1/invoices/741/products" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — личный ключ

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

const { success, data } = await res.json()
console.log('Товаров:', data.length)

JavaScript — OAuth-приложение

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

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

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data array Массив товарных позиций
data[].id number ID товарной позиции. Он же rowId в операциях над одной позицией
data[].productId number ID товара. Каталог: GET /v1/products
data[].productName string Название товара
data[].price number Цена за единицу
data[].quantity number Количество
data[].discount number Сумма скидки
data[].taxRate number/null Ставка налога (%)
data[].taxIncluded boolean Налог включён в цену
data[].ownerId number ID счёта-владельца позиции, тот же, что в адресе запроса
data[].ownerType string Тип владельца позиции, у счёта — SI
data[].storeId number | null ID склада. Список: GET /v1/warehouses. null, если складской учёт выключен
meta.total number Сколько товарных позиций у счёта всего. Приходит, когда Битрикс24 вернул счётчик, иначе поля в ответе нет.
meta.hasMore boolean Есть ли позиции за пределами отданной страницы. Верно для любого запрошенного окна, а не только для первого
meta.warnings array Приходит только когда запрос нёс limit=0: одна запись с code равным LIMIT_ZERO_IGNORED

Показаны основные поля. Полный список из 25 полей, включая priceAccount и measureCode, — Поля товаров.

Пример ответа

JSON
{
  "success": true,
  "data": [
    {
      "id": 1669,
      "ownerId": 741,
      "ownerType": "SI",
      "productId": 1,
      "productName": "Серверное оборудование",
      "price": 1000,
      "quantity": 2,
      "discount": 0,
      "taxRate": null,
      "taxIncluded": false,
      "storeId": null
    }
  ],
  "meta": {
    "total": 1,
    "hasMore": false
  }
}

Пример ответа при ошибке

403 — счёта с таким id нет либо он закрыт правами сотрудника:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ACCESS_DENIED",
    "message": "Доступ запрещен"
  }
}

Ошибки

HTTP Код Описание
403 BITRIX_ACCESS_DENIED Счёта с таким id нет либо он закрыт правами сотрудника. Несуществующий счёт приходит сюда, а не в 404
422 BITRIX_ERROR id в адресе не число — сообщение Argument '=ownerId' is required
403 SCOPE_DENIED API-ключ не имеет скоупа crm
401 TOKEN_MISSING API-ключ не имеет настроенных токенов

Полный список общих ошибок API — Ошибки.

Смотрите также