Поиск страниц
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 — личный ключ
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-приложение
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 — личный ключ
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-приложение
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.
Пример ответа
{
"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 — несуществующее поле в фильтре:
{
"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 считает по числу строк.
Смотрите также
- Список страниц —
GET-аналог для простых фильтров - Получить страницу — данные одной страницы по ID
- Синтаксис фильтрации
- Лимиты и оптимизация