Register a bot imbot.v2.Bot.register
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
Scope:
imbotWho can execute the method: authorized user
The method imbot.v2.Bot.register registers a new chat bot.
The method is idempotent: a repeated call with the same fields.code from the same application returns the existing bot without updating the data. To update, use imbot.v2.Bot.update.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
fields* |
An object with bot parameters. Parameter descriptions are provided below |
Parameter fields
|
Name |
Description |
|
code* |
Unique code for the bot within the application |
|
botToken |
Unique authorization token for the bot. Required for authorization via webhook, not needed for OAuth. Pass the unique botToken — this key will be tied to the chat bot and will be required for all subsequent calls to imbot.v2* via webhook |
|
properties* |
Properties of the bot's profile. Parameter descriptions are provided below |
|
type |
Type of the bot. Descriptions of types and their behaviors can be found in Bot Types. Default value: |
|
eventMode |
Event delivery mode. Allowed values:
Default value: |
|
webhookUrl |
URL of the bot's event handler. Required when |
|
isHidden |
Hidden bot. Allowed values: |
|
isReactionsEnabled |
Enable support for reactions. Allowed values: |
|
isSupportOpenline |
Enable support for Open Channels. Allowed values: |
|
backgroundId |
Background of the bot's chat. Default is |
Parameter properties
|
Name |
Description |
|
name* |
Name of the bot. Displayed in the chat list and dialog header |
|
lastName |
Last name of the bot |
|
workPosition |
Position of the bot (displayed in the profile) |
|
color |
Avatar color, available colors. |
|
gender |
Gender. Allowed values: |
|
avatar |
Avatar. Pass a Base64 string without the prefix How to prepare the data: How to upload files |
Available Backgrounds
|
ID |
Theme |
Color |
|
|
dark |
Blue |
|
|
dark |
Mint |
|
|
dark |
Steel |
|
|
dark |
Slate |
|
|
dark |
Teal |
|
|
dark |
Cornflower |
|
|
light |
Sky |
|
|
light |
Peach |
|
|
light |
Frost |
Code Examples
How to Use Examples in Documentation
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"fields": {
"code": "support_bot",
"botToken": "my_bot_token",
"properties": {"name": "Support Bot", "workPosition": "AI Assistant"},
"type": "bot",
"eventMode": "fetch"
}
}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/imbot.v2.Bot.register
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"fields": {
"code": "support_bot",
"properties": {"name": "Support Bot", "workPosition": "AI Assistant"},
"type": "bot",
"eventMode": "fetch"
},
"auth": "**put_access_token_here**"
}' \
https://**put_your_bitrix24_address**/rest/imbot.v2.Bot.register
try {
const response = await $b24.callMethod('imbot.v2.Bot.register', {
fields: {
code: 'support_bot',
properties: {
name: 'Support Bot',
workPosition: 'AI Assistant',
},
type: 'bot',
eventMode: 'fetch',
},
});
const { result } = response.getData();
console.log('result:', result);
} catch (error) {
console.error('Error:', error);
}
try {
$response = $b24Service
->core
->call(
'imbot.v2.Bot.register',
[
'fields' => [
'code' => 'support_bot',
'properties' => [
'name' => 'Support Bot',
'workPosition' => 'AI Assistant',
],
'type' => 'bot',
'eventMode' => 'fetch',
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'result: ' . print_r($result, true);
} catch (Throwable $exception) {
error_log($exception->getMessage());
echo 'Error: ' . $exception->getMessage();
}
BX24.callMethod(
'imbot.v2.Bot.register',
{
fields: {
code: 'support_bot',
properties: {
name: 'Support Bot',
workPosition: 'AI Assistant',
},
type: 'bot',
eventMode: 'fetch',
},
},
function(result) {
if (result.error()) {
console.error(result.error().ex);
} else {
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'imbot.v2.Bot.register',
[
'fields' => [
'code' => 'support_bot',
'properties' => [
'name' => 'Support Bot',
'workPosition' => 'AI Assistant',
],
'type' => 'bot',
'eventMode' => 'fetch',
],
]
);
if (!empty($result['error'])) {
echo 'Error: ' . $result['error_description'];
} else {
echo 'Bot ID: ' . $result['result']['bot']['id'];
}
Response Handling
HTTP Code: 200
{
"result": {
"bot": {
"id": 456,
"code": "support_bot",
"type": "bot",
"isHidden": false,
"isSupportOpenline": false,
"isReactionsEnabled": true,
"backgroundId": null,
"language": "en",
"moduleId": "rest",
"appId": "local.67890abcdef12.34567890",
"eventMode": "fetch",
"countMessage": 0,
"countCommand": 0,
"countChat": 0,
"countUser": 0
},
"users": [
{
"id": 456,
"active": true,
"name": "Support Bot",
"firstName": "Support",
"lastName": "Bot",
"workPosition": "AI Assistant",
"color": "#df532d",
"avatar": "",
"gender": "M",
"birthday": "",
"extranet": false,
"bot": true,
"connector": false,
"externalAuthId": "bot",
"status": "online",
"idle": false,
"lastActivityDate": "2025-01-15T10:30:00+01:00",
"absent": false,
"departments": [1],
"phones": false,
"type": "bot"
}
]
},
"time": {
"start": 1728626400.123,
"finish": 1728626400.234,
"duration": 0.111,
"processing": 0.045,
"date_start": "2024-10-11T10:00:00+01:00",
"date_finish": "2024-10-11T10:00:00+01:00"
}
}
Returned Data
|
Name |
Description |
|
result |
Result of bot registration |
|
result.bot |
Bot object in extended format (available only to the owner) (detailed description) |
|
result.users |
Array of associated users (detailed description) |
|
time |
Information about the request execution time |
Fields of the Bot Object
|
Field |
Description |
|
|
id |
Identifier of the bot |
|
|
code |
Symbolic code of the bot |
|
|
type |
Type of the bot |
|
|
isHidden |
Bot is hidden from the contact list |
|
|
isSupportOpenline |
Bot supports open lines |
|
|
isReactionsEnabled |
Reactions are enabled for bot messages |
|
|
backgroundId |
null`](../../../../data-types.md) |
ID of the chat background or |
|
language |
Language of the bot |
|
|
moduleId |
Module identifier |
|
|
appId |
ID of the application that registered the bot |
|
|
eventMode |
Event delivery mode: |
|
|
countMessage |
Number of messages sent by the bot |
|
|
countCommand |
Number of registered commands |
|
|
countChat |
Number of bot chats |
|
|
countUser |
Number of users who interacted with the bot |
Fields of the User Object
|
Field |
Description |
|
id |
Identifier of the user |
|
active |
User is active |
|
name |
User's full name |
|
firstName |
User's first name |
|
lastName |
User's last name |
|
workPosition |
Position |
|
color |
User's color |
|
avatar |
Avatar URL |
|
gender |
User's gender |
|
birthday |
Date of birth |
|
extranet |
User is an extranet user |
|
bot |
Indicates if the user is a bot |
|
connector |
User is connected via a connector |
|
externalAuthId |
External type of authorization |
|
status |
User's status |
|
idle |
User is inactive |
|
lastActivityDate |
Date of last activity |
|
absent |
User is absent |
|
departments |
List of departments |
|
phones |
List of phones |
|
type |
Type of user |
Complete descriptions of all object fields can be found on the Objects and Fields page.
Error Handling
HTTP Status: 400, 403
{
"error": "BOT_CODE_REQUIRED",
"error_description": "Bot code is required"
}
|
Name |
Description |
|
error |
String error code. It may consist of digits, Latin letters, and underscores |
|
error_description |
Textual description of the error. The description is not intended to be shown to the end user in its raw form |
Possible Error Codes
|
Code |
Description |
Value |
|
|
Bot token is not specified |
|
|
|
Bot code is required |
Bot code ( |
|
|
Bot properties are required |
Bot properties (name) are not specified |
|
|
Bot code is already taken |
Bot code is already taken by another application |
|
|
Invalid bot type |
Invalid bot type. Allowed values: |
|
|
Invalid event mode |
Invalid event delivery mode. Allowed values: |
|
|
Webhook URL is required |
|
|
|
Bot registration failed |
Bot registration error |
|
|
Invalid callback URL |
Invalid handler URL |
|
|
Bot limit exceeded |
Application bot limit exceeded (100 bots) |
|
|
Avatar must be an image |
Avatar must be an image ( |
|
|
Avatar exceeds maximum size |
Avatar size exceeds maximum (5000×5000 px) |
Statuses and System Error Codes
HTTP Status: 20x, 40x, 50x
The errors described below may occur when calling any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred. Please contact the server administrator or Bitrix24 technical support |
|
|
|
An internal server error has occurred. Please contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The current method is not permitted for calls using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The HTTPS protocol is required for method calls |
|
|
|
The REST API is blocked due to overload. This is a manual individual block; please contact Bitrix24 technical support to lift it |
|
|
|
The REST API is only available on commercial plans |
|
|
|
The user associated with the access token or webhook used to call the method lacks the necessary permissions |
|
|
|
The manifest is not available |
|
|
|
The request requires higher privileges than those provided by the webhook token |
|
|
|
The provided access token has expired |
|
|
|
The user does not have access to the application. This means that the application is installed, but the portal administrator has restricted access to this application to specific users only |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the "Temporary closure of the public part of the site" option. Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |
Continue Learning
- API imbot.v2 Change Log
- Update the Automation rule imbot.v2.Bot.update
- Get Information About the Bot imbot.v2.Bot.get
- List of Bots for the imbot.v2.Bot.list Application
- Remove the Automation rule imbot.v2.Bot.unregister
- Get Events from imbot.v2.Event.get