=, <=, !, in) в сти"> =, <=, !, in) в сти"> =, <=, !, in) в сти">

Поиск страниц

POST /v1/pages/search

Возвращает список страниц по фильтру в теле запроса. По сравнению с `GET /v1/pages` удобнее для сложных условий: параметры передаются в JSON, можно использовать вложенные операторы (>=, <=, !, in) в стиле MongoDB.

Поля запроса (body)

Поле Тип По умолч. Описание
filter object Фильтр по ключевым полям страницы.
Синтаксис фильтрации. Пример: {"filter": {"siteId": 3}}
select string[] Список полей для возврата. Без select ответ содержит полный набор полей страницы в camelCase (как в карточке)
limit number 50 Количество записей (до 5000). При limit > 50 Вайбкод запрашивает несколько страниц у Битрикс24 и собирает результат
scope string Внутренняя область лендингов: KNOWLEDGE / GROUP / MAINPAGE. Без параметра возвращаются страницы обычных сайтов-лендингов. Принимается на верхнем уровне тела ("scope": "KNOWLEDGE") или внутри filter.scope — обе формы дают одинаковый запрос к Битрикс24

Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/pages/search" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "siteId": 3 },
    "select": ["id", "title", "code", "siteId", "active", "dateModify"],
    "limit": 10
  }'

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/pages/search" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { "siteId": 3 },
    "select": ["id", "title", "code", "siteId", "active", "dateModify"],
    "limit": 10
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/pages/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    filter: { siteId: 3 },
    select: ['id', 'title', 'code', 'siteId', 'active', 'dateModify'],
    limit: 10,
  }),
})

const { success, data, meta } = await res.json()
console.log(`Найдено ${meta.total} страниц за ${meta.durationMs} мс`)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/pages/search', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    filter: { siteId: 3 },
    select: ['id', 'title', 'code', 'siteId', 'active', 'dateModify'],
    limit: 10,
  }),
})

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

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data array Массив найденных страниц
data[].id number Идентификатор страницы
data[].title string Название страницы
data[].code string Символьный код страницы
data[].siteId number Идентификатор сайта
data[].active boolean Активна ли страница
data[].description string | null Произвольное описание
data[].createdById number Идентификатор создавшего сотрудника
data[].dateCreate datetime Дата создания
data[].dateModify datetime Дата последнего изменения
meta.total number Общее количество записей, соответствующих фильтру
meta.hasMore boolean Есть ли ещё записи за пределами limit
meta.durationMs number Время выполнения запроса (мс)

URL любой страницы из массива data строится из её id и siteId:

https://<portal>.bitrix24.ru/sites/site/<siteId>/view/<id>/

<siteId> — ID сайта, которому принадлежит страница (поле siteId каждого элемента). <portal> — домен портала. Доступ ограничен правами сотрудника в Битрикс24.

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

JSON
{
  "success": true,
  "data": [
    {
      "id": 3,
      "title": "Смена названия",
      "code": "promo-page",
      "siteId": 3,
      "active": true,
      "description": null,
      "createdById": 1,
      "dateCreate": "22.04.2020 14:39:17",
      "dateModify": "06.05.2024 15:43:27"
    },
    {
      "id": 7,
      "title": "Test page",
      "code": "test",
      "siteId": 3,
      "active": true,
      "description": null,
      "createdById": 1,
      "dateCreate": "25.05.2020 17:34:17",
      "dateModify": "10.10.2022 15:25:30"
    }
  ],
  "meta": {
    "total": 13,
    "hasMore": true,
    "durationMs": 171
  }
}

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

422 — несуществующее поле в фильтре:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Unknown field definition `nonsense` (nonsense) for \\Bitrix\\Landing\\Internals\\Landing Entity."
  }
}

Ошибки

HTTP Код Описание
422 BITRIX_ERROR Передан неизвестный филд в filter или иной параметр, не поддерживаемый Битрикс24
403 SCOPE_DENIED API-ключ не имеет скоупа landing
401 TOKEN_MISSING API-ключ не имеет настроенных токенов

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

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

Когда выбирать search, а когда list. Оба эндпоинта возвращают одинаковый набор страниц по фильтру. Используйте POST /v1/pages/search, когда фильтр сложнее равенства (например, id in [3, 7, 9]) — JSON-тело удобнее экранирует вложенные операторы. Для простых filter[field]=value достаточно GET /v1/pages.

Формат дат в фильтре. Даты в фильтре принимаются только в формате Битрикс24 ДД.ММ.ГГГГ ЧЧ:ММ:СС, не ISO 8601. {">=dateModify": "06.06.2026 00:00:00"} работает. ISO-значение {">=dateModify": "2026-06-06"} принимается без ошибки, но даёт неверный результат — Битрикс24 его не распознаёт. Тот же формат ДД.ММ.ГГГГ ЧЧ:ММ:СС возвращается и в ответе, см. поля dateCreate/dateModify.

meta.durationMs. В отличие от list, search всегда возвращает длительность запроса в миллисекундах — полезно при отладке производительности.

Постраничный переход через offset поддерживается. Вайбкод применяет окно [offset, offset+limit) на своей стороне (метод Битрикс24 отдаёт весь список за один вызов), а meta.total / meta.hasMore считает по числу строк.

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