Для AI-агентов: markdown этой страницы — /docs-content/entities/files/search.md индекс документации — /llms.txt
Поиск файлов
POST /v1/files/search
Возвращает содержимое папки — то же, что GET /v1/files, только условия передаются в теле запроса, а не в строке. ID папки передаётся в filter.folderId или полем folderId на верхнем уровне тела.
Полнотекстовый поиск по всему доступному Диску — отдельный POST /v1/files/fulltext-search, он принимает query вместо фильтров одной папки.
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
filter |
object | нет | Условия отбора. folderId — ID папки, содержимое которой возвращается. Нужен здесь или на верхнем уровне тела.Синтаксис фильтрации. Пример: {"folderId":27,"type":"file"} |
folderId |
number | нет | ID папки на верхнем уровне тела — вместо filter.folderId. Если переданы оба, используется это значение. Только одиночное значение: массив, объект и null отклоняются |
select |
array | нет | Список возвращаемых полей. Пример: ["id","name"] |
order |
object | нет | Сортировка по полю. Пример: {"name":"asc"} |
limit |
number | нет | Сколько записей вернуть. По умолчанию 50, максимум 5000 |
offset |
number | нет | Смещение для постраничной выборки |
Примеры
curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/files/search" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filter":{"folderId":27,"type":"file"},"limit":10}'
curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/files/search" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filter":{"folderId":27,"type":"file"},"limit":10}'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/files/search', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ filter: { folderId: 27, type: 'file' }, limit: 10 }),
})
const { success, data, meta } = await res.json()
console.log('Найдено:', data.length)
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/files/search', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ filter: { folderId: 27, type: 'file' }, 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": 205,
"name": "presentation_q1.pdf",
"code": null,
"storageId": 1,
"type": "file",
"folderId": 27,
"size": 31232,
"fileId": 363,
"globalContentVersion": 1,
"downloadUrl": "https://vibecode.bitrix24.tech/v1/files/205/download",
"deletedType": 0,
"createdBy": 5,
"updatedBy": 5,
"deletedBy": null,
"createdAt": "2023-03-15T09:29:09.000Z",
"updatedAt": "2023-03-15T09:29:09.000Z",
"deletedAt": null,
"detailUrl": "https://example.bitrix24.ru/docs/path/to/file/"
}
],
"meta": { "total": 1, "hasMore": false, "durationMs": 206 }
}
Пример ответа при ошибке
403 — нет скоупа disk:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'disk' scope"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | MISSING_REQUIRED_PARAMS |
ID папки не передан ни в filter.folderId, ни в folderId. Массив, объект и null считаются непереданным значением. Тот же код приходит, если одно из полей — пустая строка, даже когда в другом передан ID. message перечисляет недостающие поля |
| 400 | INVALID_FILTER_OPERATOR |
В одном из полей folderId и filter.folderId одиночный ID, а в другом — массив, объект или null. Запрос отклоняется до обращения к Диску |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа disk |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов портала |
| 429 | RATE_LIMITED |
Превышен лимит запросов: 300 в минуту на портал, все API-ключи портала делят один лимит. Точное значение — в заголовке x-ratelimit-limit (потолок делится на реплики). Повторите после срока из заголовка Retry-After |
Полный список общих ошибок API — Ошибки.
Известные особенности
Поиск ограничен одной папкой, заданной в folderId, и не охватывает всё хранилище. Тот же результат даёт GET /v1/files с параметрами в строке запроса.
Ответ содержит одновременно папки (type: "folder") и файлы (type: "file") — различать их можно по полю type. У папок поле realObjectId присутствует, у файлов — нет. Поле contentProvider у файлов на Диске Битрикс24 не возвращается.