Для AI-агентов: markdown этой страницы — /docs-content/chats/management/avatar.md индекс документации — /llms.txt
Изменить аватар чата
PUT /v1/chats/:dialogId/avatar
Ставит чату аватар: изображение из тела запроса или файл, который уже лежит на Диске. Режим выбирается полем тела.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
dialogId (path) |
string | да | ID диалога: chatXXX для группового чата, числовой ID пользователя для личных сообщений, me — личный диалог текущего пользователя. Чат сущности CRM находится через Найти чат CRM-сущности |
Query-параметров у эндпоинта нет: любой параметр в строке запроса отклоняется с 400 INVALID_PARAMS.
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
avatar |
string | нет | Изображение PNG, JPEG, GIF или WebP в base64, стороны не больше 5000 точек. Строка без пробелов и переносов. Префикс data:image/<тип>;base64, допустим, он отрезается. Тело запроса целиком — до 1 МиБ, это около 750 КиБ исходного файла |
avatarId |
number | нет | fileId файла на Диске — поле data.fileId ответа Получить файл, а не data.id |
Передайте ровно одно из двух полей. Тело без них или с обоими, а также с другими полями отклоняется с 400 INVALID_PARAMS.
Примеры
Примеры ставят аватар из локального файла logo.png.
curl — личный ключ
{ printf '{"avatar":"'; base64 < logo.png | tr -d '\r\n'; printf '"}'; } | \
curl -X PUT https://vibecode.bitrix24.tech/v1/chats/chat2741/avatar \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @-
curl — OAuth-приложение
{ printf '{"avatar":"'; base64 < logo.png | tr -d '\r\n'; printf '"}'; } | \
curl -X PUT https://vibecode.bitrix24.tech/v1/chats/chat2741/avatar \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @-
JavaScript — личный ключ
import { readFileSync } from 'node:fs'
const avatar = readFileSync('logo.png').toString('base64')
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/chat2741/avatar', {
method: 'PUT',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ avatar }),
})
const { data } = await res.json()
console.log('ID изображения:', data.avatarId)
JavaScript — OAuth-приложение
import { readFileSync } from 'node:fs'
const avatar = readFileSync('logo.png').toString('base64')
const res = await fetch('https://vibecode.bitrix24.tech/v1/chats/chat2741/avatar', {
method: 'PUT',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ avatar }),
})
const { data } = await res.json()
console.log('ID изображения:', data.avatarId)
Для файла с Диска тело запроса — {"avatarId": 830}, заголовки те же.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data.avatarId |
number | Только в режиме avatar: ID изображения, которое портал сохранил как аватар |
data.result |
boolean | Только в режиме avatarId: true — аватар поставлен |
Пример ответа
Изображение из тела запроса, поле avatar:
{
"success": true,
"data": {
"avatarId": 828
}
}
Файл с Диска, поле avatarId:
{
"success": true,
"data": {
"result": true
}
}
Пример ответа при ошибке
422 — в avatarId передан id файла на Диске вместо fileId:
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "Wrong file type",
"b24Code": "WRONG_PARAMETER"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_PARAMS |
Нет ни avatar, ни avatarId, или переданы оба |
| 400 | INVALID_PARAMS |
avatar не строка |
| 400 | INVALID_PARAMS |
avatar не base64: пустая строка, длина не кратна 4, символы вне алфавита base64, пробелы или переносы строк |
| 400 | INVALID_PARAMS |
avatar не читается как изображение PNG, JPEG, GIF или WebP |
| 400 | INVALID_PARAMS |
Сторона изображения больше 5000 точек |
| 400 | INVALID_PARAMS |
avatarId не положительное целое |
| 400 | INVALID_PARAMS |
В теле есть поле, кроме avatar и avatarId |
| 400 | INVALID_PARAMS |
Тело запроса не JSON-объект |
| 400 | INVALID_PARAMS |
В строке запроса есть параметр |
| 413 | PAYLOAD_TOO_LARGE |
Тело запроса больше 1 МиБ |
| 403 | BITRIX_ACCESS_DENIED |
Битрикс24 отказал: пользователь не участник чата или право ui не разрешает ему менять аватар |
| 422 | BITRIX_ERROR |
error.b24Code равен WRONG_PARAMETER, текст Wrong file type: avatarId не fileId файла на Диске — передан data.id файла или файла с таким fileId нет |
| 422 | BITRIX_ERROR |
Битрикс24 вернул другую ошибку, код портала — в error.b24Code. Чата нет — CHAT_NOT_FOUND |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа im |
| 403 | WRITE_BLOCKED_READONLY_KEY |
Ключ в режиме «только чтение» — смена аватара считается записью |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов Битрикс24 |
| 502 | ME_ALIAS_RESOLUTION_FAILED |
dialogId=me — не удалось определить ID текущего пользователя |
| 502 | BITRIX_UNAVAILABLE |
Битрикс24 недоступен или вернул ошибку сервера |
Все отказы 400 приходят до обращения к Битрикс24.
Полный список общих ошибок API — Ошибки.
Известные особенности
Изображение проверяется до записи. Строку, которая не читается как изображение, портал принял бы с ответом об успехе, но убрал бы у чата аватар. Поэтому формат и размер проверяются до обращения к Битрикс24: на ошибку приходит 400 INVALID_PARAMS, а прежний аватар остаётся.
Системное сообщение о смене аватара. Смена аватара в обоих режимах пишет в чат системное сообщение о том, что пользователь изменил иконку чата.
Текущий аватар. Поле avatar ответа Информация о диалоге, пустая строка — у чата нет аватара.