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

Поиск записей справочника

POST /v1/statuses/search

Поиск записей справочников CRM с фильтрацией. Аналогичен GET /v1/statuses, но условия передаются в теле запроса — это позволяет задать несколько условий сразу. Фильтр работает только по точному совпадению.

Поля запроса (тело)

Параметр Тип По умолч. Описание
filter object — Фильтрация по полям GET /v1/statuses/fields. Только точное совпадение. Поля: id, entityId, statusId, name, sort, semantics, categoryId.
Синтаксис фильтрации. Пример: { "entityId": "DEAL_STAGE" }
limit number 50 Количество записей, до 5000
select string[] — Выборка полей: ["id", "statusId", "name", "sort"]
order object — Сортировка: { "sort": "asc" }

Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/statuses/search" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "entityId": "DEAL_STAGE" },
    "select": ["id", "statusId", "name", "sort", "semantics"],
    "order": { "sort": "asc" }
  }'

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/statuses/search" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "entityId": "DEAL_STAGE" },
    "select": ["id", "statusId", "name", "sort", "semantics"],
    "order": { "sort": "asc" }
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/statuses/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    filter: { entityId: 'DEAL_STAGE' },
    select: ['id', 'statusId', 'name', 'sort', 'semantics'],
    order: { sort: 'asc' },
  }),
})

const { success, data, meta } = await res.json()
console.log('Стадий в воронке:', meta.total)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/statuses/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    filter: { entityId: 'DEAL_STAGE' },
    select: ['id', 'statusId', 'name', 'sort', 'semantics'],
    order: { sort: 'asc' },
  }),
})

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

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data array Массив записей справочника. Без select элемент содержит все поля — см. Поля справочника
meta.total number Общее количество записей, соответствующих фильтру
meta.hasMore boolean Есть ли ещё записи за пределами limit
meta.durationMs number Длительность запроса в миллисекундах

Поля meta лежат рядом с data, а не внутри него. Обходить страницы нужно по meta.hasMore: длина data, равная limit, последней страницы не исключает.

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

JSON
{
  "success": true,
  "data": [
    { "id": 101, "statusId": "NEW", "name": "Новая", "sort": 10, "semantics": null },
    { "id": 111, "statusId": "WON", "name": "Сделка успешна", "sort": 60, "semantics": "S" },
    { "id": 113, "statusId": "LOSE", "name": "Сделка провалена", "sort": 70, "semantics": "F" }
  ],
  "meta": {
    "total": 8,
    "hasMore": false,
    "durationMs": 2243
  }
}

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

400 — фильтр по неподдерживаемому полю:

JSON
{
  "success": false,
  "error": {
    "code": "UNSUPPORTED_FILTER",
    "message": "'foo' is not filterable on 'statuses'. Filters by exact match only. Filterable: id, entityId, statusId, name, sort, semantics, categoryId."
  }
}

Ошибки

HTTP Код Описание
400 UNSUPPORTED_FILTER Фильтр по полю вне списка фильтруемых или с неточным условием
403 SCOPE_DENIED API-ключ не имеет скоупа crm
401 TOKEN_MISSING Не передан API-ключ
429 RATE_LIMITED Превышен лимит запросов: 300 в минуту на портал, все API-ключи портала делят один лимит. Точное значение — в заголовке x-ratelimit-limit (потолок делится на реплики). Повторите после срока из заголовка Retry-After

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

Известные особенности

Фильтр — точное совпадение по одному значению. Фильтр отбирает записи, у которых поле точно равно заданному значению. Операторы сравнения $gte, $lt и подобные возвращают 400 UNSUPPORTED_FILTER. Список значений ($in или массив) метод справочника не поддерживает ни по одному полю — такой фильтр отклоняется с 400 UNSUPPORTED_FILTER. Передавайте одно значение, а несколько значений запрашивайте отдельными вызовами или через POST /v1/batch.

select ограничивает поля ответа. С select каждый элемент data содержит только перечисленные поля. Без select возвращаются все поля записи, включая вложенный объект extra у справочников STATUS, DEAL_STAGE, DEAL_STAGE_N, QUOTE_STATUS.

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