Для 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 — личный ключ

Terminal
{ 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-приложение

Terminal
{ 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 — личный ключ

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-приложение

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_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:

JSON
{
  "success": true,
  "data": {
    "avatarId": 828
  }
}

Файл с Диска, поле avatarId:

JSON
{
  "success": true,
  "data": {
    "result": true
  }
}

Пример ответа при ошибке

422 — в avatarId передан id файла на Диске вместо fileId:

JSON
{
  "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 ответа Информация о диалоге, пустая строка — у чата нет аватара.

Смотрите также