# disk.file.search

URL: https://chugunov.pro/api-bitrix24/disk/file/disk-file-search/
Проверено на Битрикс24 REST API, обновлено 11.09.2026 (ревизия источника fb39d6c).
Источник: официальная документация Битрикс24 (bitrix-tools/b24-rest-docs, лицензия MIT, © Bitrix). Справочник независимый, официальной документацией не является.

Найти файлы и папки
Scope: `disk`
Кто может выполнять метод: любой пользователь

## Описание

Метод `disk.file.search` находит файлы и папки на Диске по текстовому запросу.

Поиск работает по индексу: в него попадают имена файлов и папок, а для документов — еще и текст внутри файла. Объекты в корзине метод не находит.

В результат попадают только объекты, которые доступны текущему пользователю на чтение. Объекты из хранилищ без внутренних прав доступа — например, из хранилищ других модулей — метод не возвращает. Папки чатов исключаются из выдачи.

Запрос короче трех символов метод отклоняет, поэтому для подсказки по первым введенным буквам он не подходит. Чтобы пройти по известной структуре, используйте методы [disk.storage.getChildren](https://chugunov.pro/api-bitrix24/disk/storage/disk-storage-get-children/) и [disk.folder.getChildren](https://chugunov.pro/api-bitrix24/disk/folder/disk-folder-get-children/), а если идентификатор файла уже известен — [disk.file.get](https://chugunov.pro/api-bitrix24/disk/file/disk-file-get/).

## Параметры

- `QUERY` `string` — обязательный. Текст поискового запроса.
  Длина — от 3 до 255 символов. Повторяющиеся пробелы схлопываются в один, пробелы по краям обрезаются, длина проверяется уже после этого
- `TYPE` `enum` — необязательный. Тип объектов в результате:
  - `file` — только файлы
  - `folder` — только папки
  - `all` — файлы и папки
  Значение по умолчанию — `file`
- `FILTER` `object` — необязательный. Область поиска [(подробное описание)](#filter).
  Без этого параметра метод ищет по всем доступным пользователю хранилищам
- `start` `integer` — необязательный. Смещение для постраничной навигации.
  За один запрос метод возвращает не более 50 объектов. Значение параметра — количество пропущенных объектов, а не номер страницы: при `start=10` выдача начнется с одиннадцатого объекта.
  Значение по умолчанию — 0. Максимальное значение — 1000, большее метод приводит к 1000.
  Имя параметра пишется строчными буквами, в отличие от остальных параметров метода

### Параметр FILTER

- `STORAGE_ID` `integer` — необязательный. Необязательный ключ. Идентификатор хранилища, внутри которого нужно искать.
  Идентификатор можно получить методом [disk.storage.getList](https://chugunov.pro/api-bitrix24/disk/storage/disk-storage-get-list/)
- `FOLDER_ID` `integer` — необязательный. Необязательный ключ. Идентификатор папки, внутри которой нужно искать. Поиск идет и по вложенным папкам, сама папка в результат не попадает.
  Идентификатор можно получить методом [disk.folder.getChildren](https://chugunov.pro/api-bitrix24/disk/folder/disk-folder-get-children/)

## Ответ

HTTP-статус: 200

```json
{
    "result": [
        {
            "ID": "1739",
            "NAME": "Новая папка для теста процесса",
            "CODE": null,
            "STORAGE_ID": "1",
            "TYPE": "folder",
            "REAL_OBJECT_ID": "1739",
            "PARENT_ID": "649",
            "DELETED_TYPE": "0",
            "CREATE_TIME": "2020-10-26T16:25:33+03:00",
            "UPDATE_TIME": "2024-11-26T09:23:03+03:00",
            "DELETE_TIME": null,
            "CREATED_BY": "0",
            "UPDATED_BY": "1",
            "DELETED_BY": "0",
            "DETAIL_URL": "https://test.bitrix24.ru/company/personal/user/1/disk/path/Созданные файлы/Новая папка для теста процесса"
        },
        {
            "ID": "1277",
            "NAME": "Роман Савин - Тестирование Дот Ком.pdf",
            "CODE": null,
            "STORAGE_ID": "1",
            "TYPE": "file",
            "PARENT_ID": "1275",
            "DELETED_TYPE": "0",
            "GLOBAL_CONTENT_VERSION": "1",
            "FILE_ID": "1983",
            "SIZE": "5517483",
            "CREATE_TIME": "2020-08-07T15:43:48+03:00",
            "UPDATE_TIME": "2020-08-07T15:43:48+03:00",
            "DELETE_TIME": null,
            "CREATED_BY": "1",
            "UPDATED_BY": "1",
            "DELETED_BY": "0",
            "DOWNLOAD_URL": "https://test.bitrix24.ru/rest/download.json?auth=**put_access_token_here**&token=disk%7CaWQ9MTI3NyZfPXVqVGJUMmxoclBOb0JmQjVLWmxyWnRISWFTQ2M5V2hT",
            "DETAIL_URL": "https://test.bitrix24.ru/company/personal/user/1/disk/file/Загруженные файлы/Файлы из Google Drive/Роман Савин - Тестирование Дот Ком.pdf"
        }
    ],
    "time": {
        "start": 1785494344,
        "finish": 1785494344.440217,
        "duration": 0.4402170181274414,
        "processing": 0,
        "date_start": "2026-07-31T13:39:04+03:00",
        "date_finish": "2026-07-31T13:39:04+03:00",
        "operating_reset_at": 1785494944,
        "operating": 0.13181495666503906
    }
}
```

### Возвращаемые данные

- `result` `array`. Массив найденных объектов [(подробное описание)](#result)
- `next` `integer`. Смещение для следующего запроса. Приходит только тогда, когда есть следующая страница [(пример)](#pagination)
- `time` `time`. Информация о времени выполнения запроса

## Ошибки

HTTP-статус: 400

```json
{
    "error": "INVALID_QUERY",
    "error_description": "Search query is invalid. (INVALID_QUERY)."
}
```

- `ERROR_ARGUMENT` — Invalid value of parameter { Parameter #0 [ `<required>` $QUERY ] }.. Не передан обязательный параметр `QUERY`
- `INVALID_QUERY` — Search query is invalid. (INVALID_QUERY).. Запрос короче 3 или длиннее 255 символов либо передан не строкой
- `INVALID_TYPE` — Search result type is invalid. (INVALID_TYPE).. Значение `TYPE` отличается от `file`, `folder` и `all`
- `INVALID_FILTER` — Search filter contains an unknown field. (INVALID_FILTER).. В `FILTER` передан ключ, кроме `STORAGE_ID` и `FOLDER_ID`
- `NOT_FOUND` — Search scope was not found. (NOT_FOUND).. Хранилище или папка из `FILTER` не существует, недоступна пользователю на чтение или папка не принадлежит указанному хранилищу. Та же ошибка приходит, если `FILTER` передан не объектом
- `UNSUPPORTED_STORAGE` — Search is not supported for this storage. (UNSUPPORTED_STORAGE).. В указанном хранилище не используются внутренние права доступа Диска

## Примеры запроса

### cURL (Webhook)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"QUERY":"тест","TYPE":"all","FILTER":{"STORAGE_ID":1}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/disk.file.search
```

### cURL (OAuth)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"QUERY":"тест","TYPE":"all","FILTER":{"STORAGE_ID":1},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/disk.file.search
```

### JS (TS)

```ts
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'

declare const $b24: B24Frame

// Shape of the payload returned in result (match the "response handling" section of the page)
// Fields marked optional come only for files or only for folders
type DiskFileSearchItem = {
  ID: string
  NAME: string
  CODE: string | null
  STORAGE_ID: string
  TYPE: 'file' | 'folder'
  REAL_OBJECT_ID?: string
  PARENT_ID: string
  DELETED_TYPE: string
  GLOBAL_CONTENT_VERSION?: string
  FILE_ID?: string
  SIZE?: string
  CREATE_TIME: ISODate
  UPDATE_TIME: ISODate
  DELETE_TIME: ISODate | null
  CREATED_BY: string
  UPDATED_BY: string
  DELETED_BY: string
  DOWNLOAD_URL?: string
  DETAIL_URL: string | null
}

try {
  const response = await $b24.actions.v2.call.make<DiskFileSearchItem[]>({
    method: 'disk.file.search',
    params: {
      QUERY: 'тест',
      TYPE: 'all',
      FILTER: {
        STORAGE_ID: 1,
      },
    },
    requestId: Text.getUuidRfc4122()
  })

  // The payload is available only on a successful response
  if (!response.isSuccess) {
    console.error(response.getErrorMessages().join('; '))
  } else {
    const result = response.getData()!.result
    result.forEach((item) => console.info(item.ID, item.TYPE, item.NAME))
  }
} catch (error) {
  // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
  console.error(error)
}
```

### JS (UMD)

```html
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
  async function searchDiskFiles() {
    try {
      // Initialize the SDK inside a Bitrix24 frame
      const $b24 = await B24Js.initializeB24Frame()

      const response = await $b24.actions.v2.call.make({
        method: 'disk.file.search',
        params: {
          QUERY: 'тест',
          TYPE: 'all',
          FILTER: {
            STORAGE_ID: 1
          }
        },
        requestId: B24Js.Text.getUuidRfc4122()
      })

      // The payload is available only on a successful response
      if (!response.isSuccess) {
        console.error(response.getErrorMessages().join('; '))
        return
      }

      const result = response.getData().result
      result.forEach(function (item) {
        console.info(item.ID, item.TYPE, item.NAME)
      })
    } catch (error) {
      // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
      console.error(error)
    }
  }

  document.addEventListener('DOMContentLoaded', searchDiskFiles)
</script>
```

### PHP

```php
try {
    $response = $b24Service
        ->core
        ->call(
            'disk.file.search',
            [
                'QUERY' => 'тест',
                'TYPE' => 'all',
                'FILTER' => [
                    'STORAGE_ID' => 1
                ]
            ]
        );

    $result = $response
        ->getResponseData()
        ->getResult();

    echo 'Success: ' . print_r($result, true);
    processData($result);

} catch (Throwable $e) {
    error_log($e->getMessage());
    echo 'Error searching files: ' . $e->getMessage();
}
```

### BX24.js

```js
BX24.callMethod(
    "disk.file.search",
    {
        QUERY: "тест",
        TYPE: "all",
        FILTER: {
            STORAGE_ID: 1
        }
    },
    function (result)
    {
        if (result.error())
            console.error(result.error());
        else
            console.dir(result.data());
    }
);
```

### PHP CRest

```php
require_once('crest.php');

$result = CRest::call(
    'disk.file.search',
    [
        'QUERY' => 'тест',
        'TYPE' => 'all',
        'FILTER' => [
            'STORAGE_ID' => 1
        ]
    ]
);

echo '<PRE>';
print_r($result);
echo '</PRE>';
```

### Go

```go
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "disk.file.search", b24.Params{
	"QUERY": "тест",
	"TYPE":  "all",
	"FILTER": b24.Params{
		"STORAGE_ID": 1,
	},
})
if err != nil {
	return fmt.Errorf("disk.file.search: %w", err)
}

var items []struct {
	ID           b24.ID `json:"ID"`
	Name         string `json:"NAME"`
	StorageID    b24.ID `json:"STORAGE_ID"`
	Type         string `json:"TYPE"`
	RealObjectID b24.ID `json:"REAL_OBJECT_ID"`
	ParentID     b24.ID `json:"PARENT_ID"`
}
if err := json.Unmarshal(res.Result, &items); err != nil {
	return fmt.Errorf("разбор ответа: %w", err)
}
for _, it := range items {
	fmt.Println(it.ID, it.Name)
}
```

Оригинал в официальной документации: https://apidocs.bitrix24.ru/api-reference/disk/file/disk-file-search.html
