[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Ffiles\u002Fupload":3,"docs-tabs-entities\u002Ffiles\u002Fupload":6},{"content":4,"lastmod":5},"## Загрузить файл\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","2026-07-01",{}]