Для AI-агентов: markdown этой страницы — /docs-content/chats/files/upload-publish.md индекс документации — /llms.txt
Опубликовать загруженные файлы
POST /v1/chats/:chatId/files/uploads/publish
Создаёт одно сообщение с ранее загруженными файлами. В uploadIds передаются ID из ответов маршрута загрузки. Повтор после неизвестного исхода может создать второе сообщение: клиенту нужен собственный реестр идемпотентности.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
chatId (path) |
number | да | ID чата |
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
uploadIds |
number[] | да | От 1 до 10 положительных ID загруженных файлов. Получить: data.file.id в ответе загрузки файла в папку чата |
message |
string | нет | Подпись |
replyId |
number | нет | ID сообщения для ответа |
asFile |
boolean | нет | Отправить как файл |
templateId |
string | нет | ID шаблона |
Нужен скоуп im и ключ с правом записи. Другие поля и параметры запроса отклоняются с 400 INVALID_PARAMS.
Примеры
curl — личный ключ
curl -X POST https://vibecode.bitrix24.tech/v1/chats/42/files/uploads/publish \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"uploadIds":[7701],"message":"Подпись"}'
curl — OAuth-приложение
curl -X POST https://vibecode.bitrix24.tech/v1/chats/42/files/uploads/publish \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"uploadIds":[7701],"message":"Подпись"}'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/42/files/uploads/publish', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({"uploadIds": [7701], "message": "Подпись"}),
})
const { success, data, error } = await res.json()
console.log(success ? data : error)
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/42/files/uploads/publish', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({"uploadIds": [7701], "message": "Подпись"}),
})
const { success, data, error } = await res.json()
console.log(success ? data : error)
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | true при успехе |
data.messageId |
number | ID созданного сообщения |
Пример ответа
{
"success": true,
"data": {
"messageId": 52601
}
}
Пример ответа при ошибке
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "`uploadIds` must be an array of 1 to 10 positive integers."
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_PARAMS |
uploadIds не массив из 1–10 положительных целых чисел, message, replyId, asFile или templateId неверного типа, передано другое поле тела или параметр строки запроса |
| 400 | INVALID_CHAT_ID |
chatId в пути не положительное целое число |
| 401 | TOKEN_MISSING |
Нет токенов портала |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа im |
| 403 | WRITE_BLOCKED_READONLY_KEY |
Ключ только для чтения |
| 403 | BITRIX_ACCESS_DENIED |
Нет доступа к чату или файлу на портале |
| 404 | ENTITY_NOT_FOUND |
Чат или файл не найден |
| 422 | BITRIX_ERROR |
Другой отказ портала |
| 429 | QUEUE_TIMEOUT |
Очередь портала перегружена |
Полный список общих ошибок API — Ошибки.
Известные особенности
Платформа не повторяет вызов. После неизвестного исхода проверьте своё состояние перед новым вызовом, чтобы не создать второе сообщение.
Код портала приходит не всегда. Именованный отказ портала может прийти как 400, 403 или 404. Поле error.b24Code в таком ответе не гарантировано.