[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Ffiles":3,"docs-tabs-entities\u002Ffiles":6},{"content":4,"lastmod":5},"\n# Файлы\n\nУправление файлами на диске Битрикс24: получение списка, загрузка, скачивание, переименование, перемещение, копирование и удаление. Файлы хранятся в папках внутри хранилищ.\n\nБитрикс24 API: `disk.file.*`\nСкоуп: `disk`\n\n## Операции\n\n- [Список файлов папки](.\u002Ffiles\u002Flist.md) — `GET \u002Fv1\u002Ffiles`\n- [Поиск файлов](.\u002Ffiles\u002Fsearch.md) — `POST \u002Fv1\u002Ffiles\u002Fsearch`\n- [Получить файл](.\u002Ffiles\u002Fget.md) — `GET \u002Fv1\u002Ffiles\u002F:id`\n- [Переименовать файл](.\u002Ffiles\u002Fupdate.md) — `PATCH \u002Fv1\u002Ffiles\u002F:id`\n- [Удалить файл](.\u002Ffiles\u002Fdelete.md) — `DELETE \u002Fv1\u002Ffiles\u002F:id`\n- [Поля файла](.\u002Ffiles\u002Ffields.md) — `GET \u002Fv1\u002Ffiles\u002Ffields`\n- [Загрузить файл](.\u002Ffiles\u002Fupload.md) — `POST \u002Fv1\u002Ffiles\u002Fupload`\n- [Скачать файл](.\u002Ffiles\u002Fdownload.md) — `GET \u002Fv1\u002Ffiles\u002F:id\u002Fdownload`\n- [Переместить файл](.\u002Ffiles\u002Fmoveto.md) — `POST \u002Fv1\u002Ffiles\u002F:id\u002Fmoveto`\n- [Скопировать файл](.\u002Ffiles\u002Fcopyto.md) — `POST \u002Fv1\u002Ffiles\u002F:id\u002Fcopyto`\n\n## Ключевые поля\n\n| Поле | Описание |\n|------|---------|\n| `id` | Числовой идентификатор файла |\n| `name` | Имя файла с расширением |\n| `size` | Размер файла в байтах. Приходит у записей-файлов |\n| `folderId` | Идентификатор родительской папки (из [`GET \u002Fv1\u002Ffolders`](\u002Fdocs\u002Fentities\u002Ffolders)) |\n| `storageId` | Идентификатор хранилища (из [`GET \u002Fv1\u002Fstorages`](\u002Fdocs\u002Fentities\u002Fstorages)) |\n| `type` | Тип объекта — для файлов всегда `\"file\"` |\n| `downloadUrl` | Временная ссылка для скачивания. Для программного скачивания используйте [`GET \u002Fv1\u002Ffiles\u002F:id\u002Fdownload`](.\u002Ffiles\u002Fdownload.md) |\n| `createdAt` | Дата и время создания в формате ISO 8601 |\n| `updatedAt` | Дата и время последнего изменения в формате ISO 8601 |\n\nПолный список полей — [`GET \u002Fv1\u002Ffiles\u002Ffields`](.\u002Ffiles\u002Ffields.md).\n\n## Что нужно знать перед работой\n\n1. **Для получения списка файлов требуется `folderId`.** `GET \u002Fv1\u002Ffiles` возвращает содержимое конкретной папки. Чтобы получить идентификатор папки, сначала запросите список хранилищ через `GET \u002Fv1\u002Fstorages`, затем список папок через `GET \u002Fv1\u002Ffolders` с нужным `storageId`.\n2. **`GET \u002Fv1\u002Ffiles` возвращает смешанный список.** В ответе одновременно присутствуют файлы (`type: \"file\"`) и подпапки (`type: \"folder\"`). Для фильтрации по типу используйте поле `type`.\n3. **Удаление — мягкое.** `DELETE \u002Fv1\u002Ffiles\u002F:id` помечает файл как удалённый, физически файл не стирается. Удалённый файл остаётся в Битрикс24 до окончательной очистки.\n4. **Изменить можно только имя.** `PATCH \u002Fv1\u002Ffiles\u002F:id` принимает только поле `name`. Прочие поля доступны только для чтения.\n5. **Перемещение работает только внутри одного хранилища.** `POST \u002Fv1\u002Ffiles\u002F:id\u002Fmoveto` не перемещает файлы между хранилищами. Для переноса между хранилищами используйте `POST \u002Fv1\u002Ffiles\u002F:id\u002Fcopyto`, затем `DELETE \u002Fv1\u002Ffiles\u002F:id`.\n\n## Типичный сценарий\n\n1. Получить идентификатор хранилища: [`GET \u002Fv1\u002Fstorages`](\u002Fdocs\u002Fentities\u002Fstorages).\n2. Найти нужную папку: [`GET \u002Fv1\u002Ffolders`](\u002Fdocs\u002Fentities\u002Ffolders) с параметром `storageId`.\n3. Загрузить файл в папку: [`POST \u002Fv1\u002Ffiles\u002Fupload`](.\u002Ffiles\u002Fupload.md) с `folderId` — в ответе придёт `id` нового файла.\n4. Скачать содержимое файла: [`GET \u002Fv1\u002Ffiles\u002F:id\u002Fdownload`](.\u002Ffiles\u002Fdownload.md).\n\n## Лимиты\n\n| Лимит | Значение |\n|-------|----------|\n| Максимум записей на запрос | 5000 (при `limit > 50` Вайбкод выполняет несколько запросов автоматически, смещение через `offset`) |\n| Максимальный размер загружаемого файла | определяется настройками портала Битрикс24 |\n| Batch-запросы | до 50 операций в [`POST \u002Fv1\u002Fbatch`](\u002Fdocs\u002Fbatch) |\n| Rate limit | общий для Vibe API — см. [Лимиты и оптимизация](\u002Fdocs\u002Foptimization) |\n\n## Смотрите также\n\n- [Папки](\u002Fdocs\u002Fentities\u002Ffolders)\n- [Хранилища](\u002Fdocs\u002Fentities\u002Fstorages)\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n- [API-ключи](\u002Fdocs\u002Fkeys-auth)\n- [Коды ошибок](\u002Fdocs\u002Ferrors)\n","2026-07-07",{"files\u002Flist.md":7,"files\u002Fsearch.md":8,"files\u002Fget.md":9,"files\u002Fupdate.md":10,"files\u002Fdelete.md":11,"files\u002Ffields.md":12,"files\u002Fupload.md":13,"files\u002Fdownload.md":14,"files\u002Fmoveto.md":15,"files\u002Fcopyto.md":16},"\n## Список файлов папки\n\n`GET \u002Fv1\u002Ffiles`\n\nВозвращает список объектов в указанной папке: папки и файлы вместе.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | По умолч. | Описание |\n|----------|-----|:-----:|-----------|---------|\n| `folderId` (query) | number | да | — | ID папки, содержимое которой нужно получить. Список папок: `GET \u002Fv1\u002Ffolders` |\n| `limit` (query) | number | нет | `50` | Количество записей (до 5000) |\n| `offset` (query) | number | нет | `0` | Пропустить N записей |\n| `sort` (query) | string | нет | — | Поле для сортировки |\n| `filter` (query) | object | нет | — | Фильтрация по полям `GET \u002Fv1\u002Ffiles\u002Ffields`.\u003Cbr>[Синтаксис фильтрации](\u002Fdocs\u002Ffiltering). Пример: `?filter[type]=file` |\n\n**Пагинация.** При `limit > 50` Вайбкод автоматически выполняет несколько запросов к Битрикс24 и возвращает все записи в одном ответе. Максимум — 5000 записей за вызов.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles?folderId=27&limit=10\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles?folderId=27&limit=10\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles?folderId=27&limit=10', {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data, meta } = await res.json()\nconsole.log(`Объектов в папке: ${meta.total}`)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles?folderId=27&limit=10', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data, meta } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив объектов папки (папки и файлы). Полный список полей элемента — ниже |\n| `data[].id` | number | Идентификатор объекта |\n| `data[].name` | string | Имя объекта |\n| `data[].code` | string\\|null | Символьный код; `null`, если не задан |\n| `data[].storageId` | number | ID хранилища. Список хранилищ: `GET \u002Fv1\u002Fstorages` |\n| `data[].type` | string | Тип: `\"file\"` или `\"folder\"` |\n| `data[].folderId` | number | ID родительской папки |\n| `data[].deletedType` | number | Статус удаления: `0` — активен, `3` — в корзине, `4` — удалён вместе с папкой |\n| `data[].realObjectId` | number | Внутренний ID объекта. Присутствует только у папок |\n| `data[].createdBy` | number | ID создателя. Список пользователей: `GET \u002Fv1\u002Fusers` |\n| `data[].updatedBy` | number | ID автора последнего изменения. Список пользователей: `GET \u002Fv1\u002Fusers` |\n| `data[].deletedBy` | number\\|null | ID пользователя, удалившего объект; `null` — не удалён |\n| `data[].createdAt` | datetime | Дата создания (ISO 8601) |\n| `data[].updatedAt` | datetime | Дата последнего изменения (ISO 8601) |\n| `data[].deletedAt` | datetime\\|null | Дата удаления (ISO 8601); `null` — не удалён |\n| `data[].detailUrl` | string | Ссылка на объект в интерфейсе Битрикс24 |\n| `data[].size` | number | Размер файла в байтах. Приходит у записей-файлов |\n| `data[].fileId` | number | Внутренний ID файла. Приходит у записей-файлов |\n| `data[].globalContentVersion` | number | Счётчик версий файла. Приходит у записей-файлов |\n| `data[].downloadUrl` | string | Временная ссылка для скачивания. Приходит у записей-файлов. Для программного скачивания — [`GET \u002Fv1\u002Ffiles\u002F:id\u002Fdownload`](.\u002Fdownload.md) |\n| `data[].contentProvider` | string | Провайдер контента. Возвращается только у файлов из внешних провайдеров контента — у файлов на Диске Битрикс24 не возвращается |\n| `meta.total` | number | Общее количество объектов в папке |\n| `meta.hasMore` | boolean | Есть ли ещё объекты за пределами `limit` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": 1275,\n      \"name\": \"Архив проекта\",\n      \"code\": \"ARCHIVE_PROJECT\",\n      \"storageId\": 1,\n      \"type\": \"folder\",\n      \"folderId\": 27,\n      \"deletedType\": 0,\n      \"realObjectId\": 1275,\n      \"createdBy\": 5,\n      \"updatedBy\": 5,\n      \"deletedBy\": null,\n      \"createdAt\": \"2023-04-12T08:30:00.000Z\",\n      \"updatedAt\": \"2023-04-12T08:30:01.000Z\",\n      \"deletedAt\": null,\n      \"detailUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fdocs\u002Fpath\u002Fto\u002Ffolder\u002F\"\n    },\n    {\n      \"id\": 205,\n      \"name\": \"presentation_q1.pdf\",\n      \"code\": null,\n      \"storageId\": 1,\n      \"type\": \"file\",\n      \"folderId\": 27,\n      \"size\": 31232,\n      \"fileId\": 363,\n      \"globalContentVersion\": 1,\n      \"downloadUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Frest\u002F1\u002FXXXXXX\u002Fdownload\u002F?token=PLACEHOLDER\",\n      \"deletedType\": 0,\n      \"createdBy\": 5,\n      \"updatedBy\": 5,\n      \"deletedBy\": null,\n      \"createdAt\": \"2023-03-15T09:29:09.000Z\",\n      \"updatedAt\": \"2023-03-15T09:29:09.000Z\",\n      \"deletedAt\": null,\n      \"detailUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fdocs\u002Fpath\u002Fto\u002Ffile\u002F\"\n    }\n  ],\n  \"meta\": { \"total\": 40, \"hasMore\": true }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — не передан `folderId`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"MISSING_REQUIRED_PARAMS\",\n    \"message\": \"GET \u002Fv1\u002Ffiles requires query parameters: folderId. Example: GET \u002Fv1\u002Ffiles?folderId=...\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `MISSING_REQUIRED_PARAMS` | Не передан обязательный параметр `folderId` |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `disk` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов портала |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Смешанный список.** Ответ содержит одновременно папки (`type: \"folder\"`) и файлы (`type: \"file\"`). Разграничить объекты можно по полю `type`. Поля `size`, `fileId`, `globalContentVersion` и `downloadUrl` приходят у записей-файлов. Поле `contentProvider` у файлов на Диске Битрикс24 не возвращается, поле `realObjectId` — только у папок.\n\n## Смотрите также\n\n- [Файлы — обзор](\u002Fdocs\u002Fentities\u002Ffiles)\n- [Папки](\u002Fdocs\u002Fentities\u002Ffolders)\n- [Хранилища](\u002Fdocs\u002Fentities\u002Fstorages)\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n- [Entity API](\u002Fdocs\u002Fentity-api)\n","## Поиск файлов\n\n`POST \u002Fv1\u002Ffiles\u002Fsearch`\n\nВозвращает содержимое папки — то же, что [`GET \u002Fv1\u002Ffiles`](.\u002Flist.md), только условия передаются в теле запроса, а не в строке. Фильтр обязан содержать `folderId`.\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `filter` | object | да | Условия отбора. Должен содержать `folderId` — ID папки, содержимое которой возвращается.\u003Cbr>[Синтаксис фильтрации](\u002Fdocs\u002Ffiltering). Пример: `{\"folderId\":27,\"type\":\"file\"}` |\n| `select` | array | нет | Список возвращаемых полей. Пример: `[\"id\",\"name\"]` |\n| `order` | object | нет | Сортировка по полю. Пример: `{\"name\":\"asc\"}` |\n| `limit` | number | нет | Сколько записей вернуть. По умолчанию 50, максимум 5000 |\n| `offset` | number | нет | Смещение для постраничной выборки |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fsearch\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"filter\":{\"folderId\":27,\"type\":\"file\"},\"limit\":10}'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fsearch\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"filter\":{\"folderId\":27,\"type\":\"file\"},\"limit\":10}'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fsearch', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ filter: { folderId: 27, type: 'file' }, limit: 10 }),\n})\n\nconst { success, data, meta } = await res.json()\nconsole.log('Найдено:', data.length)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fsearch', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ filter: { folderId: 27, type: 'file' }, limit: 10 }),\n})\n\nconst { success, data, meta } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив записей — подпапки и файлы. Все поля — см. [Поля файла](.\u002Ffields.md) |\n| `data[].type` | string | Тип записи: `\"folder\"` или `\"file\"` |\n| `meta.total` | number | Общее количество записей |\n| `meta.hasMore` | boolean | Есть ли ещё записи за пределами `limit` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": 205,\n      \"name\": \"presentation_q1.pdf\",\n      \"code\": null,\n      \"storageId\": 1,\n      \"type\": \"file\",\n      \"folderId\": 27,\n      \"size\": 31232,\n      \"fileId\": 363,\n      \"globalContentVersion\": 1,\n      \"downloadUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Frest\u002F1\u002FXXXXXX\u002Fdownload\u002F?token=PLACEHOLDER\",\n      \"deletedType\": 0,\n      \"createdBy\": 5,\n      \"updatedBy\": 5,\n      \"deletedBy\": null,\n      \"createdAt\": \"2023-03-15T09:29:09.000Z\",\n      \"updatedAt\": \"2023-03-15T09:29:09.000Z\",\n      \"deletedAt\": null,\n      \"detailUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fdocs\u002Fpath\u002Fto\u002Ffile\u002F\"\n    }\n  ],\n  \"meta\": { \"total\": 1, \"hasMore\": false }\n}\n```\n\n## Пример ответа при ошибке\n\n403 — нет скоупа `disk`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"SCOPE_DENIED\",\n    \"message\": \"This endpoint requires 'disk' scope\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 422 | `BITRIX_ERROR` | Фильтр не содержит обязательный `folderId` |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `disk` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов портала |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\nПоиск ограничен одной папкой, заданной в `folderId`, и не охватывает всё хранилище. Тот же результат даёт [`GET \u002Fv1\u002Ffiles`](.\u002Flist.md) с параметрами в строке запроса.\n\nОтвет содержит одновременно папки (`type: \"folder\"`) и файлы (`type: \"file\"`) — различать их можно по полю `type`. У папок поле `realObjectId` присутствует, у файлов — нет. Поле `contentProvider` у файлов на Диске Битрикс24 не возвращается.\n\n## Смотрите также\n\n- [Список файлов папки](\u002Fdocs\u002Fentities\u002Ffiles\u002Flist)\n- [Поля файла](\u002Fdocs\u002Fentities\u002Ffiles\u002Ffields)\n- [Файлы](\u002Fdocs\u002Fentities\u002Ffiles)\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n","## Получить файл\n\n`GET \u002Fv1\u002Ffiles\u002F:id`\n\nВозвращает файл по ID со всеми полями, включая ссылку для скачивания и прямой URL в интерфейсе Битрикс24.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `id` (path) | number | да | ID файла. Получить: `GET \u002Fv1\u002Ffiles?folderId=X` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205', {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log('Файл:', data.name, '—', data.size, 'байт')\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Только чтение | Описание |\n|------|-----|:---:|---------|\n| `success` | boolean | | Всегда `true` при успехе |\n| `data.id` | number | ✓ | Идентификатор файла |\n| `data.name` | string | | Имя файла |\n| `data.code` | string\\|null | | Символьный код файла |\n| `data.storageId` | number | ✓ | ID хранилища. Список: `GET \u002Fv1\u002Fstorages` |\n| `data.type` | string | ✓ | Тип объекта: всегда `\"file\"` |\n| `data.folderId` | number | | ID родительской папки. Список: `GET \u002Fv1\u002Ffolders` |\n| `data.deletedType` | number | ✓ | Статус удаления: `0` — активен, `3` — в корзине, `4` — удалён вместе с папкой |\n| `data.globalContentVersion` | number | ✓ | Счётчик версий файла |\n| `data.fileId` | number | ✓ | Внутренний идентификатор файла в Битрикс24 |\n| `data.size` | number | ✓ | Размер файла в байтах |\n| `data.createdBy` | number | ✓ | ID пользователя-создателя. Список: `GET \u002Fv1\u002Fusers` |\n| `data.updatedBy` | number | ✓ | ID автора последнего изменения. Список: `GET \u002Fv1\u002Fusers` |\n| `data.deletedBy` | number\\|null | ✓ | ID пользователя, удалившего файл; `null` — файл не удалён |\n| `data.createdAt` | datetime | ✓ | Дата и время создания (ISO 8601) |\n| `data.updatedAt` | datetime | ✓ | Дата и время последнего изменения (ISO 8601) |\n| `data.deletedAt` | datetime\\|null | ✓ | Дата и время перемещения в корзину; `null` — файл не удалён |\n| `data.downloadUrl` | string | ✓ | Ссылка для скачивания файла |\n| `data.detailUrl` | string | ✓ | Ссылка на файл в интерфейсе Битрикс24 |\n| `data.contentProvider` | string | ✓ | Поставщик контента (может отсутствовать) |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": 205,\n    \"name\": \"project-report.pdf\",\n    \"code\": null,\n    \"storageId\": 1,\n    \"type\": \"file\",\n    \"folderId\": 27,\n    \"deletedType\": 0,\n    \"globalContentVersion\": 1,\n    \"fileId\": 363,\n    \"size\": 31232,\n    \"createdBy\": 1,\n    \"updatedBy\": 1,\n    \"deletedBy\": null,\n    \"createdAt\": \"2020-05-15T09:29:09.000Z\",\n    \"updatedAt\": \"2020-05-15T09:29:09.000Z\",\n    \"deletedAt\": null,\n    \"downloadUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fdisk\u002FdownloadFile\u002F363\u002F?...\",\n    \"detailUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fdisk\u002Ffile\u002Fproject-report.pdf\u002F\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — файл не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ENTITY_NOT_FOUND\",\n    \"message\": \"Could not find entity with id '99999999'.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 404 | `ENTITY_NOT_FOUND` | Файл с указанным ID не существует |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `disk` |\n| 401 | `TOKEN_MISSING` | Ключ не имеет настроенных токенов авторизации |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n`downloadUrl` содержит токен авторизации и действует ограниченное время. Для программного скачивания используйте `GET \u002Fv1\u002Ffiles\u002F:id\u002Fdownload` — он возвращает перенаправление на актуальную ссылку без встроенного токена.\n\nМетод возвращает только объекты типа `\"file\"`. Чтобы получить данные папки, используйте `GET \u002Fv1\u002Ffolders\u002F:id`.\n\n## Смотрите также\n\n- [Список файлов](\u002Fdocs\u002Fentities\u002Ffiles\u002Flist)\n- [Переименовать файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fupdate)\n- [Удалить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fdelete)\n- [Получить папку](\u002Fdocs\u002Fentities\u002Ffolders)\n","## Переименовать файл\n\n`PATCH \u002Fv1\u002Ffiles\u002F:id`\n\nПереименовывает файл на диске. Принимает только поле `name` — остальные поля файла остаются без изменений, расположение файла не меняется.\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `name` | string | ✓ | Новое имя файла с расширением |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X PATCH \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9251\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"doc-renamed.txt\"\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X PATCH \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9251\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"doc-renamed.txt\"\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9251', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    name: 'doc-renamed.txt',\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9251', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    name: 'doc-renamed.txt',\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\nВозвращается полный объект файла с обновлённым именем. Набор полей совпадает с ответом `GET \u002Fv1\u002Ffiles\u002F:id`.\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.id` | number | Идентификатор файла |\n| `data.name` | string | Новое имя файла |\n| `data.code` | string\\|null | Символьный код файла |\n| `data.storageId` | number | ID хранилища |\n| `data.type` | string | Тип объекта — всегда `\"file\"` |\n| `data.folderId` | number | ID родительской папки |\n| `data.deletedType` | number | Статус удаления: `0` — активен |\n| `data.globalContentVersion` | number | Счётчик версий файла |\n| `data.fileId` | number | Внутренний ID файла в Битрикс24 |\n| `data.size` | number | Размер файла в байтах |\n| `data.createdBy` | number | ID пользователя-создателя |\n| `data.updatedBy` | number | ID пользователя, выполнившего переименование |\n| `data.deletedBy` | number\\|null | ID пользователя, удалившего файл; `null` — не удалён |\n| `data.createdAt` | string | Дата и время создания (ISO 8601) |\n| `data.updatedAt` | string | Дата и время переименования (ISO 8601) |\n| `data.deletedAt` | string\\|null | Дата удаления; `null` — файл не удалён |\n| `data.contentProvider` | string | Поставщик контента (может отсутствовать) |\n| `data.realObjectId` | number | Внутренний ID объекта |\n| `data.downloadUrl` | string | Ссылка для скачивания файла |\n| `data.detailUrl` | string | Ссылка на файл в интерфейсе Битрикс24 |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": 9251,\n    \"name\": \"doc-renamed.txt\",\n    \"code\": null,\n    \"storageId\": 1,\n    \"type\": \"file\",\n    \"folderId\": 27,\n    \"deletedType\": 0,\n    \"globalContentVersion\": 1,\n    \"fileId\": 34867,\n    \"size\": 11,\n    \"createdBy\": 1,\n    \"updatedBy\": 1,\n    \"deletedBy\": null,\n    \"createdAt\": \"2026-05-06T09:32:39.000Z\",\n    \"updatedAt\": \"2026-05-26T07:08:50.000Z\",\n    \"deletedAt\": null,\n    \"downloadUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fdisk\u002FdownloadFile\u002F34867\u002F?...\",\n    \"detailUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fcompany\u002Fpersonal\u002Fuser\u002F1\u002Fdisk\u002Ffile\u002Fdoc-renamed.txt\u002F\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — файл не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ENTITY_NOT_FOUND\",\n    \"message\": \"diskFile 9251 not found\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 404 | `ENTITY_NOT_FOUND` | Файл с указанным `id` не существует |\n| 400 | `MISSING_FIELDS` | Тело запроса не содержит поля `name` |\n| 403 | `SCOPE_DENIED` | Ключ не имеет скоупа `disk` |\n| 401 | `TOKEN_MISSING` | Ключ не имеет настроенных токенов авторизации |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Получить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fget)\n- [Поля файла](\u002Fdocs\u002Fentities\u002Ffiles\u002Ffields)\n- [Переместить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fmoveto)\n- [Удалить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fdelete)\n- [Файлы](\u002Fdocs\u002Fentities\u002Ffiles)\n","## Удалить файл\n\n`DELETE \u002Fv1\u002Ffiles\u002F:id`\n\nПеремещает файл в корзину Битрикс24. Файл не удаляется навсегда — его можно восстановить средствами Битрикс24 вручную.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|----------|\n| `id` (path) | number | да | ID файла. Целое число больше нуля |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X DELETE \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F3291\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X DELETE \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F3291\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F3291', {\n  method: 'DELETE',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nif (res.status === 204) {\n  console.log('Файл перемещён в корзину')\n}\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F3291', {\n  method: 'DELETE',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nif (res.status === 204) {\n  console.log('Файл перемещён в корзину')\n}\n```\n\n## Ответ\n\nПри успешном перемещении в корзину возвращается HTTP-статус `204 No Content` с пустым телом. Признак успеха — код ответа, не содержимое.\n\n## Пример ответа\n\n```\nHTTP\u002F1.1 204 No Content\n```\n\n## Пример ответа при ошибке\n\n404 — файл не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ENTITY_NOT_FOUND\",\n    \"message\": \"Could not find entity with id '99999999'.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 404 | `ENTITY_NOT_FOUND` | Файл с указанным ID не найден |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `disk` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов авторизации |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\nОперация перемещает файл в корзину Битрикс24 — мягкое удаление. Файл сохраняется в корзине и может быть восстановлен администратором портала через интерфейс Битрикс24. Безвозвратное удаление через API Вайбкода недоступно.\n\n## Смотрите также\n\n- [Список файлов](\u002Fdocs\u002Fentities\u002Ffiles\u002Flist)\n- [Получить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fget)\n- [Переименовать файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fupdate)\n- [Загрузить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fupload)\n","\n## Поля файла\n\n`GET \u002Fv1\u002Ffiles\u002Ffields`\n\nВозвращает схему доступных полей сущности: типы данных и признак доступности для записи.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Ffields\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Ffields\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Ffields', {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log('Полей:', Object.keys(data.fields).length)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Ffields', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Битрикс24 | Тип | RO | Описание |\n|------|----------|-----|:--:|---------|\n| `id` | `ID` | number | да | Идентификатор объекта |\n| `name` | `NAME` | string | | Имя файла или папки |\n| `size` | `SIZE` | number | да | Размер файла в байтах. Приходит у записей-файлов |\n| `folderId` | `PARENT_ID` | number | | ID родительской папки. Список папок: `GET \u002Fv1\u002Ffolders` |\n| `storageId` | `STORAGE_ID` | number | да | ID хранилища. Список: `GET \u002Fv1\u002Fstorages` |\n| `type` | `TYPE` | string | да | Тип объекта: `\"file\"` или `\"folder\"` |\n| `code` | `CODE` | string | | Символьный код объекта |\n| `fileId` | `FILE_ID` | number | да | Внутренний ID файла. Приходит у записей-файлов |\n| `downloadUrl` | `DOWNLOAD_URL` | string | да | Временная ссылка для скачивания. Приходит у записей-файлов. Для программного скачивания — `GET \u002Fv1\u002Ffiles\u002F:id\u002Fdownload` |\n| `detailUrl` | `DETAIL_URL` | string | да | Ссылка на объект в интерфейсе |\n| `contentProvider` | `CONTENT_PROVIDER` | string | да | Провайдер контента. Возвращается только у файлов из внешних провайдеров контента — у файлов на Диске Битрикс24 не возвращается |\n| `globalContentVersion` | `GLOBAL_CONTENT_VERSION` | number | да | Счётчик версий файла. Приходит у записей-файлов |\n| `deletedType` | `DELETED_TYPE` | number | да | Статус удаления: `0` — не удалён, `3` — в корзине, `4` — удалён вместе с папкой |\n| `realObjectId` | `REAL_OBJECT_ID` | number | да | Внутренний ID объекта |\n| `createdBy` | `CREATED_BY` | number | да | ID пользователя-создателя. Поиск: `GET \u002Fv1\u002Fusers` |\n| `updatedBy` | `UPDATED_BY` | number | да | ID автора последнего изменения. Поиск: `GET \u002Fv1\u002Fusers` |\n| `deletedBy` | `DELETED_BY` | number | да | ID пользователя, удалившего объект. Поиск: `GET \u002Fv1\u002Fusers` |\n| `createdAt` | `CREATE_TIME` | datetime | да | Дата и время создания (ISO 8601 UTC) |\n| `updatedAt` | `UPDATE_TIME` | datetime | да | Дата и время последнего изменения |\n| `deletedAt` | `DELETE_TIME` | datetime | да | Дата и время удаления; `null` — объект не удалён |\n\nПоля `name`, `folderId` и `code` доступны при создании и обновлении объекта. Через `PATCH \u002Fv1\u002Ffiles\u002F:id` обновляется только поле `name`.\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"fields\": {\n      \"id\": { \"type\": \"number\", \"readonly\": true },\n      \"name\": { \"type\": \"string\", \"readonly\": false },\n      \"size\": { \"type\": \"number\", \"readonly\": true },\n      \"folderId\": { \"type\": \"number\", \"readonly\": false },\n      \"storageId\": { \"type\": \"number\", \"readonly\": true },\n      \"type\": { \"type\": \"string\", \"readonly\": true },\n      \"code\": { \"type\": \"string\", \"readonly\": false },\n      \"fileId\": { \"type\": \"number\", \"readonly\": true },\n      \"downloadUrl\": { \"type\": \"string\", \"readonly\": true },\n      \"detailUrl\": { \"type\": \"string\", \"readonly\": true },\n      \"contentProvider\": { \"type\": \"string\", \"readonly\": true },\n      \"globalContentVersion\": { \"type\": \"number\", \"readonly\": true },\n      \"deletedType\": { \"type\": \"number\", \"readonly\": true },\n      \"createdBy\": { \"type\": \"number\", \"readonly\": true },\n      \"updatedBy\": { \"type\": \"number\", \"readonly\": true },\n      \"createdAt\": { \"type\": \"datetime\", \"readonly\": true },\n      \"updatedAt\": { \"type\": \"datetime\", \"readonly\": true },\n      \"deletedAt\": { \"type\": \"datetime\", \"readonly\": true },\n      \"realObjectId\": { \"type\": \"number\", \"readonly\": true },\n      \"deletedBy\": { \"type\": \"number\", \"readonly\": true }\n    }\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n403 — нет скоупа `disk`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"SCOPE_DENIED\",\n    \"message\": \"This endpoint requires 'disk' scope\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `disk` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов портала |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Список файлов](\u002Fdocs\u002Fentities\u002Ffiles\u002Flist)\n- [Получить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fget)\n- [Обновить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fupdate)\n- [Файлы](\u002Fdocs\u002Fentities\u002Ffiles)\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n","## Загрузить файл\n\n`POST \u002Fv1\u002Ffiles\u002Fupload`\n\nЗагружает файл на Диск Битрикс24. Содержимое передаётся в кодировке Base64 в теле JSON-запроса. Для загрузки необходимо указать папку (`folderId`) или хранилище (`storageId`).\n\n## Поля запроса\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `filename` | string | да | Имя файла с расширением, например `report.pdf` |\n| `content` | string | да | Содержимое файла в кодировке Base64 |\n| `folderId` | number | условно | ID папки-назначения. Список папок: `GET \u002Fv1\u002Ffolders`. Обязателен, если не указан `storageId` |\n| `storageId` | number | условно | ID хранилища (загрузка в корень). Список хранилищ: `GET \u002Fv1\u002Fstorages`. Обязателен, если не указан `folderId` |\n\nНеобходимо указать один из двух параметров: `folderId` или `storageId`.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"folderId\":27,\"filename\":\"report.txt\",\"content\":\"SGVsbG8gV29ybGQ=\"}' \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fupload\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"folderId\":27,\"filename\":\"report.txt\",\"content\":\"SGVsbG8gV29ybGQ=\"}' \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fupload\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst content = Buffer.from('Hello World').toString('base64')\n\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fupload', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    folderId: 27,\n    filename: 'report.txt',\n    content,\n  }),\n})\nconst body = await res.json()\nconsole.log(body.data.id, body.data.downloadUrl)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst content = Buffer.from('Hello World').toString('base64')\n\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fupload', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    folderId: 27,\n    filename: 'report.txt',\n    content,\n  }),\n})\nconst body = await res.json()\nconsole.log(body.data.id, body.data.downloadUrl)\n```\n\n### Загрузка в корень хранилища\n\nЕсли нужно загрузить файл в корень хранилища, а не в папку, передайте `storageId` вместо `folderId`. ID хранилища доступен в поле `id` из `GET \u002Fv1\u002Fstorages`, корневая папка — в поле `rootFolderId`.\n\n```bash\ncurl -X POST \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"storageId\":1,\"filename\":\"backup.txt\",\"content\":\"SGVsbG8gV29ybGQ=\"}' \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002Fupload\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.id` | number | ID созданного файла |\n| `data.name` | string | Имя файла |\n| `data.code` | string \\| null | Символьный код файла |\n| `data.storageId` | number | ID хранилища, в котором находится файл |\n| `data.type` | string | Тип объекта — всегда `\"file\"` |\n| `data.folderId` | number | ID папки, в которой находится файл |\n| `data.deletedType` | number | Тип удаления: `0` — не удалён |\n| `data.globalContentVersion` | number | Версия содержимого файла |\n| `data.fileId` | number | ID файла во внутреннем хранилище Битрикс24 |\n| `data.size` | number | Размер файла в байтах |\n| `data.createdBy` | number | ID пользователя, создавшего файл. Список: `GET \u002Fv1\u002Fusers` |\n| `data.updatedBy` | number | ID пользователя, изменившего файл последним |\n| `data.deletedBy` | number \\| null | ID удалившего файл или `null`, если файл не удалён |\n| `data.createdAt` | string | Дата и время создания (ISO 8601) |\n| `data.updatedAt` | string | Дата и время последнего изменения (ISO 8601) |\n| `data.deletedAt` | string \\| null | Дата и время удаления или `null`, если файл не удалён |\n| `data.downloadUrl` | string | URL для скачивания файла |\n| `data.detailUrl` | string | URL карточки файла в Битрикс24 |\n\n## Пример ответа\n\nПри успешной загрузке возвращается HTTP-статус `201 Created`.\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": 9251,\n    \"name\": \"report.txt\",\n    \"code\": null,\n    \"storageId\": 1,\n    \"type\": \"file\",\n    \"folderId\": 27,\n    \"deletedType\": 0,\n    \"globalContentVersion\": 1,\n    \"fileId\": 34867,\n    \"size\": 11,\n    \"createdBy\": 1,\n    \"updatedBy\": 1,\n    \"deletedBy\": null,\n    \"createdAt\": \"2026-05-06T09:32:39.000Z\",\n    \"updatedAt\": \"2026-05-06T09:32:39.000Z\",\n    \"deletedAt\": null,\n    \"downloadUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fdisk\u002FdownloadFile\u002F...\",\n    \"detailUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fcompany\u002Fpersonal\u002Fuser\u002F1\u002Fdisk\u002Ffile\u002Freport.txt\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — не указаны `filename` и `content`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"MISSING_PARAMS\",\n    \"message\": \"filename and content (base64) are required.\"\n  }\n}\n```\n\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `MISSING_PARAMS` | Не переданы `filename` и `content`, либо не указан ни `folderId`, ни `storageId` |\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный API-ключ |\n| 401 | `TOKEN_MISSING` | Токены доступа к порталу Битрикс24 недоступны |\n| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `disk` |\n| 404 | `ENTITY_NOT_FOUND` | Папка или хранилище с указанным ID не найдены |\n| 422 | `BITRIX_ERROR` | Битрикс24 вернул ошибку при загрузке файла |\n| 429 | `RATE_LIMITED` | Превышен лимит запросов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Содержимое передаётся в Base64.** Файл кодируется в Base64 и передаётся как строка в поле `content`. Передача файла через `multipart\u002Fform-data` не поддерживается.\n\n**Максимальный размер.** Лимит тела запроса для этого маршрута — 70 МБ. С учётом того, что base64 увеличивает размер примерно на треть, это соответствует исходному файлу около 50 МБ — запись звонка, типовые вложения. Битрикс24 дополнительно применяет собственное ограничение на размер файла Диска: при его превышении возвращается `422 BITRIX_ERROR`. Файлы в сотни МБ загружать через этот эндпоинт не предназначено.\n\n## Смотрите также\n\n- [Файлы](\u002Fdocs\u002Fentities\u002Ffiles)\n- [Папки](\u002Fdocs\u002Fentities\u002Ffolders)\n- [Хранилища](\u002Fdocs\u002Fentities\u002Fstorages)\n- [Удалить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fdelete)\n","## Скачать файл\n\n`GET \u002Fv1\u002Ffiles\u002F:id\u002Fdownload`\n\nСкачивает содержимое файла через прокси Вайбкода с автоматической авторизацией. В отличие от поля `downloadUrl` в ответе `GET \u002Fv1\u002Ffiles\u002F:id`, этот эндпоинт добавляет авторизацию при каждом вызове — токен не нужно извлекать и подставлять вручную. Ответ — бинарный поток с заголовком `Content-Disposition`, браузеры предлагают сохранить файл автоматически.\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|----------|\n| `id` | path | number | да | ID файла. Получить: `GET \u002Fv1\u002Ffiles` или `GET \u002Fv1\u002Ffiles\u002F:id` |\n\nТело запроса пустое.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\n# Сохранить в файл с исходным именем из заголовка Content-Disposition\ncurl -OJ -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205\u002Fdownload\n\n# Указать имя файла явно\ncurl -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205\u002Fdownload \\\n  -o myfile.pdf\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -OJ \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F205\u002Fdownload\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst fileId = 205\n\nconst res = await fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F${fileId}\u002Fdownload`,\n  { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }\n)\n\nif (!res.ok) {\n  const body = await res.json()\n  throw new Error(body.error?.code ?? String(res.status))\n}\n\n\u002F\u002F Сохранить blob в браузере\nconst blob = await res.blob()\nconst url = URL.createObjectURL(blob)\nconst a = document.createElement('a')\na.href = url\na.download = res.headers.get('Content-Disposition')?.match(\u002Ffilename=\"(.+?)\"\u002F)?.[1] ?? 'file'\na.click()\nURL.revokeObjectURL(url)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst fileId = 205\n\nconst res = await fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F${fileId}\u002Fdownload`,\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\n\nif (!res.ok) {\n  const body = await res.json()\n  throw new Error(body.error?.code ?? String(res.status))\n}\n\nconst blob = await res.blob()\n```\n\n## Заголовки ответа\n\nПри успехе возвращается бинарное содержимое файла (HTTP 200). Секции `## Поля ответа` нет — тело ответа не является JSON.\n\n| Заголовок | Пример значения | Описание |\n|-----------|-----------------|----------|\n| `Content-Type` | `application\u002Fpdf` | Тип содержимого. Зависит от типа файла: `text\u002Fplain`, `image\u002Fpng`, `application\u002Fvnd.openxmlformats-officedocument.spreadsheetml.sheet` и т. д. |\n| `Content-Disposition` | `attachment; filename=\"report.pdf\"` | Имя файла для сохранения. Браузеры используют его автоматически при скачивании |\n| `Content-Length` | `31232` | Размер файла в байтах. Передаётся, если известен из метаданных |\n\n## Пример ответа при ошибке\n\n404 — файл не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"ENTITY_NOT_FOUND\",\n    \"message\": \"Could not find entity with id '99999999'.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный или просроченный ключ |\n| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `disk` |\n| 404 | `ENTITY_NOT_FOUND` | Файла с таким `id` не существует или он недоступен ключу |\n| 404 | `DOWNLOAD_URL_NOT_FOUND` | У файла нет адреса для скачивания |\n| 502 | `DOWNLOAD_FAILED` | Битрикс24 вернул ошибку при проксировании (например, `403`) |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Авторизация добавляется автоматически.** Для ключей OAuth-приложений Вайбкод добавляет токен авторизации к запросу при каждом вызове. Для ключей типа вебхук токен уже встроен в адрес — Вайбкод использует адрес как есть.\n- **Поле `downloadUrl` из `GET \u002Fv1\u002Ffiles\u002F:id` — временное.** Этот эндпоинт (`\u002Fdownload`) — стабильный способ скачивания: он каждый раз получает актуальный адрес и добавляет авторизацию. Обращение напрямую по сохранённому `downloadUrl` может завершиться ошибкой, когда токен устареет.\n\n## Смотрите также\n\n- [Получить файл](\u002Fdocs\u002Fentities\u002Ffiles\u002Fget) — `GET \u002Fv1\u002Ffiles\u002F:id`\n- [Список файлов](\u002Fdocs\u002Fentities\u002Ffiles\u002Flist) — `GET \u002Fv1\u002Ffiles`\n- [Файлы](\u002Fdocs\u002Fentities\u002Ffiles)\n","\n## Переместить файл\n\n`POST \u002Fv1\u002Ffiles\u002F:id\u002Fmoveto`\n\nПеремещает файл в другую папку того же хранилища. После успеха поле `folderId` в ответе содержит ID целевой папки; `id`, `createdAt` и `createdBy` у файла не изменяются.\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|----------|\n| `id` | path | number | да | ID файла. Получить через `GET \u002Fv1\u002Ffiles` |\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|----------|\n| `targetFolderId` | number | да | ID папки-назначения. Получить через `GET \u002Fv1\u002Ffolders` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"targetFolderId\":649}' \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9251\u002Fmoveto\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"targetFolderId\":649}' \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9251\u002Fmoveto\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9251\u002Fmoveto',\n  {\n    method: 'POST',\n    headers: {\n      'X-Api-Key': 'YOUR_API_KEY',\n      'Content-Type': 'application\u002Fjson',\n    },\n    body: JSON.stringify({ targetFolderId: 649 }),\n  }\n)\nconst body = await res.json()\nif (!body.success) throw new Error(body.error.code)\nconsole.log('Файл перемещён, новая папка:', body.data.folderId)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9251\u002Fmoveto',\n  {\n    method: 'POST',\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n      'Content-Type': 'application\u002Fjson',\n    },\n    body: JSON.stringify({ targetFolderId: 649 }),\n  }\n)\nconst body = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|----------|\n| `success` | boolean | `true` при успешном перемещении |\n| `data.id` | number | ID файла (не изменяется после перемещения) |\n| `data.name` | string | Имя файла |\n| `data.code` | string \\| null | Символьный код файла |\n| `data.folderId` | number | ID папки-назначения — равен переданному `targetFolderId` |\n| `data.storageId` | number | ID хранилища |\n| `data.type` | string | Тип объекта — всегда `\"file\"` |\n| `data.deletedType` | number | Статус удаления: `0` — активен |\n| `data.globalContentVersion` | number | Счётчик версий файла |\n| `data.fileId` | number | Внутренний ID файла в Битрикс24 |\n| `data.size` | number | Размер файла в байтах |\n| `data.createdBy` | number | ID пользователя, создавшего файл |\n| `data.updatedBy` | number | ID пользователя, выполнившего перемещение |\n| `data.deletedBy` | number \\| null | ID пользователя, удалившего файл; `null` — не удалён |\n| `data.createdAt` | string | Дата создания файла (ISO 8601) — не изменяется |\n| `data.updatedAt` | string | Дата последнего изменения (ISO 8601) |\n| `data.deletedAt` | string \\| null | Дата удаления или `null` |\n| `data.downloadUrl` | string | URL для скачивания файла |\n| `data.detailUrl` | string | URL карточки файла в Битрикс24 |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": 9251,\n    \"name\": \"verify-move-test.txt\",\n    \"code\": null,\n    \"storageId\": 1,\n    \"type\": \"file\",\n    \"folderId\": 649,\n    \"deletedType\": 0,\n    \"globalContentVersion\": 1,\n    \"fileId\": 34867,\n    \"size\": 11,\n    \"createdBy\": 1,\n    \"updatedBy\": 1,\n    \"deletedBy\": null,\n    \"createdAt\": \"2026-05-06T09:32:39.000Z\",\n    \"updatedAt\": \"2026-05-06T09:34:16.000Z\",\n    \"deletedAt\": null,\n    \"downloadUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fdisk\u002FdownloadFile\u002F34867\u002F?...\",\n    \"detailUrl\": \"https:\u002F\u002Fexample.bitrix24.ru\u002Fcompany\u002Fpersonal\u002Fuser\u002F1\u002Fdisk\u002Ffile\u002Fverify-move-test.txt\u002F\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n422 — в целевой папке уже существует файл с таким именем:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ERROR\",\n    \"message\": \"Файл с таким именем уже есть (DISK_OBJ_22000).\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|----------|\n| 400 | `MISSING_PARAMS` | Не передан `targetFolderId` |\n| 400 | `INVALID_PARAMS` | `targetFolderId` не является положительным целым числом |\n| 400 | `INVALID_ID` | `id` файла не является положительным целым числом |\n| 400 | `OPERATION_FAILED` | Перемещение между разными хранилищами не поддерживается — используйте `POST \u002Fv1\u002Ffiles\u002F:id\u002Fcopyto` |\n| 401 | `TOKEN_MISSING` | Для портала нет токенов авторизации |\n| 403 | `SCOPE_DENIED` | Ключу не хватает скоупа `disk` |\n| 404 | `ENTITY_NOT_FOUND` | Файл с указанным `id` не найден |\n| 422 | `BITRIX_ERROR` | В целевой папке уже есть файл с таким именем — переименуйте файл через `PATCH \u002Fv1\u002Ffiles\u002F:id` перед перемещением |\n| 429 | `RATE_LIMITED` | Превышен лимит запросов — подождите 1-2 секунды и повторите |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Постоянство идентификатора.** После перемещения `id`, `createdAt` и `createdBy` файла не изменяются — все внешние ссылки на файл по ID остаются рабочими.\n\n## Смотрите также\n\n- [Скопировать файл](.\u002Fcopyto.md) — `POST \u002Fv1\u002Ffiles\u002F:id\u002Fcopyto`\n- [Получить файл](.\u002Fget.md) — `GET \u002Fv1\u002Ffiles\u002F:id`\n- [Список файлов](\u002Fdocs\u002Fentities\u002Ffiles) — `GET \u002Fv1\u002Ffiles`\n- [Список папок](\u002Fdocs\u002Fentities\u002Ffolders) — `GET \u002Fv1\u002Ffolders`\n","## Скопировать файл\n\n`POST \u002Fv1\u002Ffiles\u002F:id\u002Fcopyto`\n\nСоздаёт копию файла в указанной папке. Оригинал остаётся на месте, копия получает новый идентификатор.\n\n## Параметры\n\n| Параметр | В | Тип | Обяз. | Описание |\n|----------|---|-----|:-----:|---------|\n| `id` | path | number | да | ID файла, который нужно скопировать. Получить через `GET \u002Fv1\u002Ffiles` |\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `targetFolderId` | number | да | ID папки-назначения. Получить через `GET \u002Fv1\u002Ffolders` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"targetFolderId\": 649}' \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9250\u002Fcopyto\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"targetFolderId\": 649}' \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9250\u002Fcopyto\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9250\u002Fcopyto',\n  {\n    method: 'POST',\n    headers: {\n      'X-Api-Key': 'YOUR_API_KEY',\n      'Content-Type': 'application\u002Fjson',\n    },\n    body: JSON.stringify({ targetFolderId: 649 }),\n  }\n)\nconst body = await res.json()\nif (!body.success) {\n  console.error(body.error.code, body.error.message)\n} else {\n  console.log('Копия создана, ID:', body.data.id)\n}\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Ffiles\u002F9250\u002Fcopyto',\n  {\n    method: 'POST',\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n      'Content-Type': 'application\u002Fjson',\n    },\n    body: JSON.stringify({ targetFolderId: 649 }),\n  }\n)\nconst body = await res.json()\n```\n\n## Поля ответа\n\nВозвращается объект созданной копии.\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | `true` при успешном копировании |\n| `data.id` | number | ID созданной копии (отличается от ID оригинала) |\n| `data.name` | string | Имя файла |\n| `data.code` | string \\| null | Системный код файла |\n| `data.storageId` | number | ID хранилища |\n| `data.type` | string | Тип объекта — всегда `\"file\"` |\n| `data.folderId` | number | ID папки-назначения |\n| `data.deletedType` | number | Тип удаления: `0` — не удалён |\n| `data.globalContentVersion` | number | Глобальная версия содержимого |\n| `data.fileId` | number | Внутренний идентификатор содержимого файла |\n| `data.size` | number | Размер в байтах |\n| `data.createdBy` | number | ID пользователя, создавшего копию |\n| `data.updatedBy` | number | ID пользователя, обновившего копию |\n| `data.deletedBy` | number \\| null | ID удалившего. У новой копии всегда `null` |\n| `data.createdAt` | string (ISO 8601) | Дата создания копии |\n| `data.updatedAt` | string (ISO 8601) | Дата обновления копии |\n| `data.deletedAt` | string \\| null | Дата удаления. У новой копии всегда `null` |\n| `data.downloadUrl` | string | Прямой URL для скачивания файла |\n| `data.detailUrl` | string | URL карточки файла в Битрикс24 |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": 9253,\n    \"name\": \"doc-copy-test.txt\",\n    \"code\": null,\n    \"storageId\": 1,\n    \"type\": \"file\",\n    \"folderId\": 649,\n    \"deletedType\": 0,\n    \"globalContentVersion\": 1,\n    \"fileId\": 34869,\n    \"size\": 4,\n    \"createdBy\": 1,\n    \"updatedBy\": 1,\n    \"deletedBy\": null,\n    \"createdAt\": \"2026-05-06T09:35:13.000Z\",\n    \"updatedAt\": \"2026-05-06T09:35:13.000Z\",\n    \"deletedAt\": null,\n    \"downloadUrl\": \"https:\u002F\u002F...\",\n    \"detailUrl\": \"https:\u002F\u002F...\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — не передан `targetFolderId`:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"MISSING_PARAMS\",\n    \"message\": \"targetFolderId is required.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `MISSING_PARAMS` | Не передан обязательный параметр `targetFolderId` |\n| 400 | `INVALID_PARAMS` | `targetFolderId` не является положительным целым числом |\n| 400 | `INVALID_ID` | `id` в path не является положительным целым числом |\n| 400 | `OPERATION_FAILED` | Битрикс24 вернул пустой результат — копирование не выполнено |\n| 401 | `TOKEN_MISSING` | Для портала не найдены токены авторизации |\n| 403 | `SCOPE_DENIED` | У API-ключа отсутствует скоуп `disk` |\n| 422 | `BITRIX_ERROR` | В папке-назначении уже существует файл с таким именем |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Копия получает новый ID.** Оригинал остаётся в исходной папке без изменений. Идентификатор копии (поле `data.id`) не совпадает с идентификатором оригинала — используйте `data.id` для дальнейшей работы с копией.\n- **Копирование работает между хранилищами.** В отличие от операции перемещения (`POST \u002Fv1\u002Ffiles\u002F:id\u002Fmoveto`), копирование допустимо даже тогда, когда исходный файл и папка-назначение принадлежат разным хранилищам.\n- **Конфликт имён.** Если в папке-назначении уже есть файл с таким же именем, операция завершится ошибкой `422`. Переименуйте оригинал или выберите другую папку.\n\n## Смотрите также\n\n- [Переместить файл](.\u002Fmoveto.md)\n- [Загрузить файл](.\u002Fupload.md)\n- [Список файлов](.\u002Flist.md)\n- [Список папок](\u002Fdocs\u002Fentities\u002Ffolders)\n"]