[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-bots\u002Ffiles\u002Fupload":3,"docs-tabs-bots\u002Ffiles\u002Fupload":6},{"content":4,"lastmod":5},"\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","2026-07-02",{}]