Create a Chat-Bot imbot.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: an authorized user of the application that registers the chat-bot.
DEPRECATED
Development of this method has been halted. Please use imbot.v2.Bot.register.
The method imbot.register registers a chat-bot and binds event handlers of the application.
If the bot runs as part of an application, events will not be sent to the application until the installation is complete. Check the application installation
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
CODE* |
The string code of the bot, unique within Bitrix24 |
|
TYPE |
The type of the bot. Allowed values:
Default value: |
|
OPENLINE |
Operation mode with Open Channels. Allowed values:
For |
|
EVENT_HANDLER |
General URL for the event handler. If provided, its value is copied to If different handlers are needed, do not pass |
|
EVENT_MESSAGE_ADD* |
URL for the event handler ONIMBOTMESSAGEADD |
|
EVENT_MESSAGE_UPDATE |
URL for the event handler ONIMBOTMESSAGEUPDATE. This parameter is ignored only for bots with |
|
EVENT_MESSAGE_DELETE |
URL for the event handler ONIMBOTMESSAGEDELETE. This parameter is ignored only for bots with |
|
EVENT_WELCOME_MESSAGE* |
URL for the event handler ONIMBOTJOINCHAT |
|
EVENT_BOT_DELETE* |
URL for the event handler ONIMBOTDELETE |
|
CLIENT_ID |
This parameter is required only for webhooks. Provide a unique CLIENT_ID — this key will be linked to the chat-bot and will be needed for all subsequent calls to imbot* via webhook |
|
PROPERTIES* |
Properties of the chat-bot profile. The structure of the object is described in detail below |
Parameter PROPERTIES
|
Name |
Description |
|
NAME* |
The name of the chat-bot. You must provide either |
|
LAST_NAME* |
The last name of the chat-bot. You must provide either |
|
COLOR |
The color of the chat-bot for the mobile interface: |
|
EMAIL |
Email for contacting the chat-bot. The bot is created as a user, so the bot's email must not match the email of a real Bitrix24 user. This will help avoid account conflicts |
|
PERSONAL_BIRTHDAY |
Birthday in the format |
|
WORK_POSITION |
Position or description of the chat-bot |
|
PERSONAL_WWW |
Website link |
|
PERSONAL_GENDER |
Gender, allowed values: |
|
PERSONAL_PHOTO |
Avatar of the chat-bot in Base64 The image size must not exceed the limit of 5000x5000 |
If the application logic allows, send a response to the bot upon explicit mention. This can be checked via the TO_USER_ID field.
Only one set of event handler URLs can be used in a single application.
If registering a second bot, the parameters EVENT_MESSAGE_ADD, EVENT_WELCOME_MESSAGE, and EVENT_BOT_DELETE must match those of the first bot.
If there are multiple bots in the application, differentiate them within a single event handler. Pass an array of bots in the event.
The maximum number of bots for a single application: 5
Code Examples
How to Use Examples in Documentation
curl -X POST /
-H "Content-Type: application/json" /
-H "Accept: application/json" /
-d '{"CODE":"newbot","TYPE":"B","EVENT_HANDLER":"https://example.com/bot/events","OPENLINE":"N","PROPERTIES":{"NAME":"NewBot","WORK_POSITION":"Support bot"},"CLIENT_ID":"**put_your_client_id_here**"}' /
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/imbot.register
curl -X POST /
-H "Content-Type: application/json" /
-H "Accept: application/json" /
-d '{"CODE":"newbot","TYPE":"B","EVENT_HANDLER":"https://example.com/bot/events","OPENLINE":"N","PROPERTIES":{"NAME":"NewBot"},"auth":"**put_access_token_here**"}' /
https://**put_your_bitrix24_address**/rest/imbot.register
try {
const response = await $b24.callMethod('imbot.register', {
CODE: 'newbot',
TYPE: 'B',
EVENT_HANDLER: 'https://example.com/bot/events',
OPENLINE: 'N',
PROPERTIES: {
NAME: 'NewBot',
WORK_POSITION: 'Support bot',
},
});
const { result } = response.getData();
console.log('Created bot ID:', result);
} catch (error) {
console.error('Error registering bot:', error);
}
try {
$response = $b24Service
->core
->call(
'imbot.register',
[
'CODE' => 'newbot',
'TYPE' => 'B',
'EVENT_HANDLER' => 'https://example.com/bot/events',
'OPENLINE' => 'N',
'PROPERTIES' => [
'NAME' => 'NewBot',
'WORK_POSITION' => 'Support bot',
],
]
);
$result = $response
->getResponseData()
->getResult();
if ($result->error()) {
echo 'Error: ' . $result->error();
} else {
echo 'Created bot ID: ' . $result->data();
}
} catch (Throwable $exception) {
error_log($exception->getMessage());
echo 'Error registering bot: ' . $exception->getMessage();
}
BX24.callMethod(
'imbot.register',
{
CODE: 'newbot',
TYPE: 'B',
EVENT_HANDLER: 'https://example.com/bot/events',
OPENLINE: 'N',
PROPERTIES: {
NAME: 'NewBot',
WORK_POSITION: 'Support bot',
},
},
function(result) {
if (result.error()) {
console.error(result.error().ex);
} else {
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'imbot.register',
[
'CODE' => 'newbot',
'TYPE' => 'B',
'EVENT_HANDLER' => 'https://example.com/bot/events',
'OPENLINE' => 'N',
'PROPERTIES' => [
'NAME' => 'NewBot',
'WORK_POSITION' => 'Support bot',
],
]
);
if (!empty($result['error'])) {
echo 'Error: ' . $result['error_description'];
} else {
echo 'Created bot ID: ' . $result['result'];
}
// client and ctx are already created — see the Go SDK section
res, err := client.Core().Call(ctx, "imbot.register", b24.Params{
"CODE": "newbot",
"TYPE": "B",
"EVENT_HANDLER": "https://example.com/bot/events",
"OPENLINE": "N",
"PROPERTIES": b24.Params{
"NAME": "NewBot",
"WORK_POSITION": "Support bot",
},
"CLIENT_ID": "**put_your_client_id_here**",
})
if err != nil {
return fmt.Errorf("imbot.register: %w", err)
}
var value b24.ID
if err := json.Unmarshal(res.Result, &value); err != nil {
return fmt.Errorf("parse response: %w", err)
}
fmt.Println("result:", value)
Response Handling
HTTP Code: 200
{
"result": 39,
"time": {
"start": 1728626400.123,
"finish": 1728626400.234,
"duration": 0.111,
"processing": 0.045,
"date_start": "2024-10-11T10:00:00+02:00",
"date_finish": "2024-10-11T10:00:00+02:00",
"operating_reset_at": 1762349466,
"operating": 0
}
}
Returned Data
|
Name |
Description |
|
result |
Identifier of the created chat-bot |
|
time |
Information about the request execution time |
Error Handling
HTTP Status: 400, 403
{
"error": "CODE_ERROR",
"error_description": "Bot code isn't specified"
}
|
Name |
Description |
|
error |
String error code. It consists of digits, Latin letters, and underscores. It may arrive empty — in that case only |
|
error_description |
Error message for the developer. Do not show it to the end user without processing |
Possible Error Codes
|
Code |
Description |
Value |
|
|
Access for this method not allowed by session authorization |
The method was called with session authorization instead of OAuth or webhook |
|
|
Access denied! Client ID not specified |
Unable to determine the application: |
|
|
Handler for "Message add" event isn't specified |
The required event handler |
|
|
Wrong handler URL |
An invalid URL was provided for |
|
|
Wrong handler URL |
An invalid URL was provided for |
|
|
Wrong handler URL |
An invalid URL was provided for |
|
|
Handler for "Welcome message" event isn't specified |
The required event handler |
|
|
Wrong handler URL |
An invalid URL was provided for |
|
|
Handler for "Bot delete" event isn't specified |
The required event handler |
|
|
Wrong handler URL |
An invalid URL was provided for |
|
|
Bot code isn't specified |
The required bot code |
|
|
Bot name isn't specified |
One of the required fields in |
|
|
Has reached the maximum number of bots for application (max: N) |
The limit on the number of bots for the application has been reached |
|
|
Bot can't be created |
The bot cannot be created |
Statuses and System Error Codes
HTTP Status: 4xx, 5xx
The errors described below are returned by the REST API itself, not by the logic of a specific method. They can arrive in response to any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred. Retry the call, and if the error persists, contact the server administrator or Bitrix24 technical support |
|
|
|
The server returned an unexpected response. Retry the call, and if the error persists, contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The method is blocked because the request resource intensity limit has been exceeded. The block is lifted automatically once the accumulated execution time of the method no longer exceeds the limit |
|
|
|
The request contains no authorization data: neither an access token nor a webhook code was passed |
|
|
|
Methods are called over the HTTPS protocol only |
|
|
|
The REST API is blocked due to overload. This is a manual individual block. To have it lifted, contact Bitrix24 technical support |
|
|
|
The REST API is available only on commercial plans. A webhook receives a different error message — |
|
|
|
No active webhook with the specified user identifier and secret code was found |
|
|
|
No method with this name was found. The name is misspelled, the method does not exist in the REST API, or it is unavailable without the required scope |
|
|
|
The request requires broader permissions than the token has: for a webhook these are the permissions granted to it, for an application it is the scope. For an application, the error message ends with |
|
|
|
The access token has expired |
|
|
|
The application is installed, but the Bitrix24 administrator has granted access to it only to specific users |
|
|
|
The public part of the site is closed. To open it 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 |