Для AI-агентов: markdown этой страницы — /docs-content/entities/files/fulltext-search.md индекс документации — /llms.txt
Полнотекстовый поиск на Диске
POST /v1/files/fulltext-search
Ищет по индексу во всём доступном Диске. Поиск в одной папке передаёт фильтры, а этот маршрут принимает поисковую строку. Скоуп disk. READONLY-ключ разрешён.
Поля запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
query |
string | да | Обязательное. Пробелы схлопываются, края обрезаются, затем длина 3..255 символов |
type |
string | нет | file, folder, all. По умолчанию file |
filter.storageId |
number | нет | Целое положительное ID из списка хранилищ |
filter.folderId |
number | нет | Целое положительное ID из списка папок |
filter.fileType |
string или array | нет | Только при type=file: document, image, video, audio, archive, pdf, vector_image, board, known, unknown. Массив непустой |
offset |
number | нет | Целое 0..1000, по умолчанию 0 |
Лишние поля отклоняются. limit не принимается: размер страницы Битрикс24 фиксирован, 50 записей.
Примеры
curl — личный ключ
curl -X POST 'https://vibecode.bitrix24.tech/v1/files/fulltext-search' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"query":"report","filter":{"fileType":"document"},"offset":0}'
curl — OAuth-приложение
curl -X POST 'https://vibecode.bitrix24.tech/v1/files/fulltext-search' \
-H 'X-Api-Key: YOUR_APP_KEY' \
-H 'Authorization: Bearer USER_SESSION_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"query":"report","filter":{"fileType":"document"},"offset":0}'
JavaScript — личный ключ
const response = await fetch('https://vibecode.bitrix24.tech/v1/files/fulltext-search', {
method: 'POST',
headers: {"X-Api-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
body: JSON.stringify({"query": "report", "filter": {"fileType": "document"}, "offset": 0}),
})
const result = await response.json()
console.log(result)
JavaScript — OAuth-приложение
const response = await fetch('https://vibecode.bitrix24.tech/v1/files/fulltext-search', {
method: 'POST',
headers: {"X-Api-Key": "YOUR_APP_KEY", "Authorization": "Bearer USER_SESSION_TOKEN", "Content-Type": "application/json"},
body: JSON.stringify({"query": "report", "filter": {"fileType": "document"}, "offset": 0}),
})
const result = await response.json()
console.log(result)
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Признак успешного запроса |
data.items |
array | Файлы и папки — поля как в Получить файл и Получить папку |
data.meta.nextOffset |
number | null | Следующее смещение; null в конце |
data.meta.maxOffset |
number | Максимальное смещение: 1000 |
{"success":true,"data":{"items":[{"id":42,"type":"file","name":"report.pdf","folderId":9,"downloadUrl":"https://vibecode.bitrix24.tech/v1/files/42/download"}],"meta":{"nextOffset":null,"maxOffset":1000}}}
data.items — файлы в проекции files, папки в проекции folders. Ссылку downloadUrl вызывайте с тем же API-ключом. data.meta.nextOffset — смещение следующей страницы или null, используйте его в следующем запросе. total отсутствует: Битрикс24 не возвращает число совпадений.
Корзина не ищется. Пустая выдача не доказывает отсутствие файла: индекс обновляется асинхронно, содержимое индексируется не у всех форматов. Поиск по имени надёжнее. После смещения 1000 продолжить нельзя, сужайте запрос.
Ошибки
Пример отказа (400):
{"success":false,"error":{"code":"INVALID_PARAMS","message":"query must contain 3..255 characters after whitespace normalization."}}
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_PARAMS |
Неверные query, type, filter или offset, лишние поля |
| 403 | SCOPE_DENIED |
Нет скоупа disk |
| 403 | BITRIX_ACCESS_DENIED |
Битрикс24 отказал в доступе |
| 404 | ENTITY_NOT_FOUND |
Хранилище или папка не найдены либо недоступны. Эти причины намеренно не различаются |
| 422 | BITRIX_ERROR |
Бизнес-отказ Битрикс24 или ответ без результата |
| 422 | OPERATION_FAILED |
Бизнес-отказ Битрикс24 или ответ без результата |
Общие отказы — Ошибки.