[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-bots\u002Ffiles":3,"docs-tabs-bots\u002Ffiles":6},{"content":4,"lastmod":5},"# Файлы\n\nЗагружайте файлы в чат от имени бота и скачивайте файлы, которые присылают пользователи.\n\n**Скоуп:** `imbot` | **Базовый URL:** `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1` | **Авторизация:** `X-Api-Key`\n\n## Операции\n\n- [Загрузить файл](.\u002Ffiles\u002Fupload.md) — `POST \u002Fv1\u002Fbots\u002F:botId\u002Ffiles`\n- [Скачать файл](.\u002Ffiles\u002Fdownload.md) — `GET \u002Fv1\u002Fbots\u002F:botId\u002Ffiles\u002F:fileId`\n","2026-06-16",{"files\u002Fupload.md":7,"files\u002Fdownload.md":8},"\n## Загрузить файл\n\n`POST \u002Fv1\u002Fbots\u002F:botId\u002Ffiles`\n\nЗагружает файл в чат от имени бота. Содержимое передаётся в base64. Максимальный размер — 100 МБ.\n\n## Поля запроса (body)\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `dialogId` | string | да | ID диалога: числовой ID пользователя для личных, `chatXXX` для групповых |\n| `file.name` | string | да | Имя файла с расширением |\n| `file.content` | string | да | Содержимое файла в base64 |\n| `message` | string | нет | Текст сообщения, прикреплённый к файлу |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ffiles \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"dialogId\": \"chat123\",\n    \"file\": {\n      \"name\": \"report.pdf\",\n      \"content\": \"JVBERi0xLjQKJcOkw7zDtsOfCjEgMCBv...\"\n    },\n    \"message\": \"Вот запрошенный отчёт\"\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ffiles \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"dialogId\": \"chat123\",\n    \"file\": {\n      \"name\": \"report.pdf\",\n      \"content\": \"JVBERi0xLjQKJcOkw7zDtsOfCjEgMCBv...\"\n    },\n    \"message\": \"Вот запрошенный отчёт\"\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nimport { readFileSync } from 'fs'\n\nconst base64 = readFileSync('.\u002Freport.pdf').toString('base64')\n\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ffiles', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    dialogId: 'chat123',\n    file: { name: 'report.pdf', content: base64 },\n    message: 'Вот запрошенный отчёт',\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('File ID:', data.file.id)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nimport { readFileSync } from 'fs'\n\nconst base64 = readFileSync('.\u002Freport.pdf').toString('base64')\n\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ffiles', {\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    dialogId: 'chat123',\n    file: { name: 'report.pdf', content: base64 },\n    message: 'Вот запрошенный отчёт',\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `file` | object | Данные загруженного файла |\n| `file.id` | number | ID загруженного файла (используйте его для `GET \u002Fv1\u002Fbots\u002F:botId\u002Ffiles\u002F:fileId`) |\n| `file.chatId` | number | Числовой ID чата |\n| `file.name` | string | Имя файла |\n| `file.extension` | string | Расширение файла |\n| `file.size` | number | Размер файла в байтах |\n| `messageId` | number | ID созданного сообщения с файлом |\n| `chatId` | number | Числовой ID чата |\n| `dialogId` | string | ID диалога |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"file\": {\n      \"id\": 789,\n      \"chatId\": 5,\n      \"name\": \"report.pdf\",\n      \"extension\": \"pdf\",\n      \"size\": 35341\n    },\n    \"messageId\": 1520,\n    \"chatId\": 5,\n    \"dialogId\": \"chat123\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n502 — ошибка Битрикс24:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BITRIX_ERROR\",\n    \"message\": \"File size exceeds limit\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_BOT_ID` | `botId` не является числом |\n| 404 | `BOT_NOT_FOUND` | Бот с таким ID не найден |\n| 403 | `BOT_ACCESS_DENIED` | Бот принадлежит другому API-ключу |\n| 502 | `BITRIX_ERROR` | Ошибка Битрикс24 при загрузке |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `imbot` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Base64:** содержимое файла передаётся целиком в base64. Для больших файлов это увеличивает размер body на ~33%.\n\n**Сообщение с файлом:** параметр `message` прикрепляет текст к тому же сообщению, что и файл — отдельного вызова для отправки текста не нужно.\n\n## Смотрите также\n\n- [Скачать файл](\u002Fdocs\u002Fbots\u002Ffiles\u002Fdownload)\n- [Отправить сообщение](\u002Fdocs\u002Fbots\u002Fmessages\u002Fsend)\n- [Бот-платформа](\u002Fdocs\u002Fbots)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n","\n## Скачать файл\n\n`GET \u002Fv1\u002Fbots\u002F:botId\u002Ffiles\u002F:fileId`\n\nВозвращает информацию о файле и одноразовую ссылку для скачивания.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `botId` (path) | number | да | ID бота |\n| `fileId` (path) | number | да | ID файла |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ffiles\u002F789 \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ffiles\u002F789 \\\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\u002Fbots\u002F42\u002Ffiles\u002F789', {\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log('Download URL:', data.downloadUrl)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbots\u002F42\u002Ffiles\u002F789', {\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| `id` | number | ID файла |\n| `name` | string | Имя файла |\n| `size` | number | Размер в байтах |\n| `downloadUrl` | string | Одноразовая ссылка для скачивания |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": 789,\n    \"name\": \"report.pdf\",\n    \"size\": 2048576,\n    \"downloadUrl\": \"https:\u002F\u002Fportal.bitrix24.ru\u002Frest\u002Fdownload.json?token=abc123...\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — бот не найден:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"BOT_NOT_FOUND\",\n    \"message\": \"Bot 999 not found. Register it first via POST \u002Fv1\u002Fbots.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_BOT_ID` | `botId` не является числом |\n| 404 | `BOT_NOT_FOUND` | Бот с таким ID не найден |\n| 403 | `BOT_ACCESS_DENIED` | Бот принадлежит другому API-ключу |\n| 502 | `BITRIX_ERROR` | Ошибка Битрикс24 (текст ошибки в `message`) |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `imbot` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Одноразовая ссылка:** `downloadUrl` — временная ссылка. Для повторного скачивания нужен новый вызов метода.\n\n## Смотрите также\n\n- [Загрузить файл](\u002Fdocs\u002Fbots\u002Ffiles\u002Fupload)\n- [Отправить сообщение](\u002Fdocs\u002Fbots\u002Fmessages\u002Fsend)\n- [Бот-платформа](\u002Fdocs\u002Fbots)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n"]