Для AI-агентов: markdown этой страницы — /docs-content/entities/folders/search.md индекс документации — /llms.txt
Поиск папок
POST /v1/folders/search
Перечисляет содержимое папки через POST-запрос с фильтром в теле. Поведение совпадает с GET /v1/folders — параметры передаются в теле, а не в строке запроса. ID папки передаётся в filter.parentId или полем parentId на верхнем уровне тела.
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
Полеfilter |
Типobject | Обяз.нет | ОписаниеУсловия отбора. parentId — ID папки, чьё содержимое перечисляется. Нужен здесь или на верхнем уровне тела.Синтаксис фильтрации. Пример: {"parentId":27,"type":"folder"} |
ПолеparentId |
Типnumber | Обяз.нет | ОписаниеID папки на верхнем уровне тела — вместо filter.parentId. Если переданы оба, используется это значение. Только одиночное значение: массив, объект и null отклоняются |
Полеselect |
Типarray | Обяз.нет | ОписаниеСписок возвращаемых полей. Пример: ["id","name"] |
Полеorder |
Типobject | Обяз.нет | ОписаниеСортировка по полю. Пример: {"name":"asc"} |
Полеlimit |
Типnumber | Обяз.нет | ОписаниеСколько записей вернуть. По умолчанию 50, максимум 5000 |
Полеoffset |
Типnumber | Обяз.нет | ОписаниеСмещение для постраничной выборки |
Примеры
curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/folders/search" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filter":{"parentId":27,"type":"folder"},"limit":10}'
curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/folders/search" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filter":{"parentId":27,"type":"folder"},"limit":10}'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/folders/search', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ filter: { parentId: 27, type: 'folder' }, limit: 10 }),
})
const { success, data, meta } = await res.json()
console.log('Найдено:', data.length)
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/folders/search', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ filter: { parentId: 27, type: 'folder' }, limit: 10 }),
})
const { success, data, meta } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
Полеsuccess |
Типboolean | ОписаниеВсегда true при успехе |
Полеdata |
Типarray | ОписаниеМассив записей — подпапки и файлы. Все поля — см. Поля папки |
Полеdata[].type |
Типstring | ОписаниеТип записи: "folder" или "file" |
Полеmeta.total |
Типnumber | ОписаниеСколько записей подошло под фильтр |
Полеmeta.hasMore |
Типboolean | ОписаниеЕсть ли ещё записи за пределами limit |
Полеmeta.durationMs |
Типnumber | ОписаниеДлительность запроса в миллисекундах |
Поля meta лежат рядом с data, а не внутри него. Обходить страницы нужно по meta.hasMore: длина data, равная limit, последней страницы не исключает.
Пример ответа
{
"success": true,
"data": [
{
"id": 9301,
"name": "Документы",
"code": null,
"storageId": 1,
"type": "folder",
"realObjectId": 9301,
"parentId": 27,
"deletedType": 0,
"createdAt": "2026-06-25T12:10:00.000Z",
"updatedAt": "2026-06-25T12:10:00.000Z",
"deletedAt": null,
"createdBy": 1,
"updatedBy": 1,
"deletedBy": null,
"detailUrl": "https://<portal>.bitrix24.ru/company/personal/user/1/disk/path/Документы"
}
],
"meta": { "total": 1, "hasMore": false, "durationMs": 125 }
}
Пример ответа при ошибке
403 — нет скоупа disk:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'disk' scope"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| HTTP400 | КодMISSING_REQUIRED_PARAMS |
ОписаниеID папки не передан ни в filter.parentId, ни в parentId. Массив, объект и null считаются непереданным значением. Тот же код приходит, если одно из полей — пустая строка, даже когда в другом передан ID. message перечисляет недостающие поля |
| HTTP400 | КодINVALID_FILTER_OPERATOR |
ОписаниеВ одном из полей parentId и filter.parentId одиночный ID, а в другом — массив, объект или null. Запрос отклоняется до обращения к Диску |
| HTTP403 | КодSCOPE_DENIED |
ОписаниеAPI-ключ не имеет скоупа disk |
| HTTP401 | КодTOKEN_MISSING |
ОписаниеAPI-ключ не имеет настроенных токенов портала |
| HTTP429 | КодRATE_LIMITED |
ОписаниеПревышен лимит запросов: 300 в минуту на портал, все API-ключи портала делят один лимит. Точное значение — в заголовке x-ratelimit-limit (потолок делится на реплики). Повторите после срока из заголовка Retry-After |
Полный список общих ошибок API — Ошибки.
Известные особенности
Поиск перечисляет содержимое одной папки, заданной через parentId, а не ищет по всему хранилищу. Для разовых выборок проще использовать GET /v1/folders с тем же набором параметров в строке запроса.