For AI agents: markdown of this page — /docs-content-en/bots/management/update.md documentation index — /llms.txt
Update a bot
PATCH /v1/bots/:botId
Updates a bot's properties. Pass only the fields you want to change.
Two body forms — both valid. The platform accepts both a flat record (the same one as
POST /v1/bots) and the Bitrix24 format with afieldswrapper. If the body containsfields, the request is forwarded to Bitrix24 unchanged. Otherwise the known top-level fields are automatically expanded intofields.properties.*/fields.*. The behavior of both forms is identical.
Request fields (body)
| Parameter (flat) | Parameter (Bitrix24 format) | Type | Description |
|---|---|---|---|
name |
fields.properties.name |
string | New bot name |
lastName |
fields.properties.lastName |
string | New last name |
workPosition |
fields.properties.workPosition |
string | New job title |
color |
fields.properties.color |
string | New avatar color |
gender |
fields.properties.gender |
string | Gender: M or F |
avatar |
fields.properties.avatar |
string | Bot avatar: PNG or JPEG as a base64 string without the data:image/...;base64, prefix, up to ~50 KB. See "Known specifics" |
eventMode |
fields.eventMode |
string | Event mode: fetch or webhook |
webhookUrl |
fields.webhookUrl |
string | URL for push notifications |
isHidden |
fields.isHidden |
boolean | Hide from the contact list |
isReactionsEnabled |
fields.isReactionsEnabled |
boolean | Allow reactions |
backgroundId |
fields.backgroundId |
string | Chat background: azure, mint, steel, slate, teal, cornflower, sky, peach, frost |
isSupportOpenline |
fields.isSupportOpenline |
boolean | Open Channels support (only for type: "openline") |
Examples
curl — personal key
curl -X PATCH https://vibecode.bitrix24.com/v1/bots/42 \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"fields": {
"properties": { "name": "New name", "color": "MINT" },
"eventMode": "fetch"
}
}'
curl — OAuth application
curl -X PATCH https://vibecode.bitrix24.com/v1/bots/42 \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fields": {
"properties": { "name": "New name", "color": "MINT" },
"eventMode": "fetch"
}
}'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/bots/42', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
fields: {
properties: { name: 'New name', color: 'MINT' },
eventMode: 'fetch',
},
}),
})
const { data } = await res.json()
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/bots/42', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
fields: {
properties: { name: 'New name', color: 'MINT' },
eventMode: 'fetch',
},
}),
})
Response fields
| Field | Type | Description |
|---|---|---|
data.bot |
object | The updated bot. The field set matches the registration response |
data.bot.id |
number | Bot ID in the Bitrix24 account |
data.bot.code |
string | System bot code |
data.bot.type |
string | Bot type: bot, personal, or supervisor |
data.bot.eventMode |
string | Event delivery mode: fetch or webhook |
data.users |
array | The bot's card as a Bitrix24 account user |
Response example
The main fields are shown. The full set of bot fields is in the registration response.
{
"success": true,
"data": {
"bot": {
"id": 42,
"code": "my_helper_bot",
"type": "bot",
"eventMode": "fetch",
"isHidden": false,
"isReactionsEnabled": true,
"language": "en"
},
"users": []
}
}
Error response example
403 — the bot belongs to a different key:
{
"success": false,
"error": {
"code": "BOT_ACCESS_DENIED",
"message": "This bot belongs to a different API key"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | INVALID_BOT_ID |
botId is not a number |
| 404 | BOT_NOT_FOUND |
Bot not found |
| 403 | BOT_ACCESS_DENIED |
The bot belongs to a different API key |
| 403 | SCOPE_DENIED |
The API key does not have the imbot scope |
| 401 | TOKEN_MISSING |
The API key has no configured tokens |
Full list of common API errors — Errors.
Known specifics
Symmetry with registration. PATCH accepts both a flat body ({ name, eventMode, ... }) and the Bitrix24 format with a fields wrapper — just like POST /v1/bots. If the body contains a fields key, the platform forwards it to Bitrix24 unchanged. Otherwise it normalizes the flat fields itself.
type cannot be changed: the type field is not accepted on update.
Avatar format. The avatar field accepts a PNG or JPEG image as a base64 string without the data:image/...;base64, prefix — pass only the base64 data itself. A string with the data: prefix results in a 422 response. Size — up to ~50 KB: on excess, the request completes successfully (success: true), but the avatar is not saved and the bot's avatar remains empty. The endpoint accepts JSON only — file upload via multipart/form-data is not supported (415 response). Pass the value as avatar (flat form) or as fields.properties.avatar (the fields form) — the result is the same.