Help Center

Bots

Cloud Pyrus
Cloudless Pyrus

A bot is a technical Pyrus user that does not work through the web or mobile app but processes tasks automatically. When a task is routed to a bot, Pyrus sends a POST request to the handler URL specified in the bot settings and performs the actions returned by the handler. You can find more information about how bots work in the help section.

The methods in this section let you get a list of the organization's bots and create, update, and delete bots without opening the Pyrus web interface. For example, this is useful when you need to deploy identical bots in several organizations or manage bots from an external system.

Note: to call these methods, you need a token of a user with Configuration Manager rights. An existing bot can also be updated by its administrator.

All methods in this section return a bot object in the format described below.

Methods

GET /bots

This method returns a list of the organization's bots. Deleted bots are not included by default — to get them as well, pass the include_fired=true parameter.

GET https://api.pyrus.com/v4/bots?include_fired=false

Response body

{
  "bots": [
    {
      "id": 1234567,
      "name": "Support bot",
      "is_enabled": true,
      "hook_url": "https://example.com/pyrus-hook",
      "description": "Replies to customer requests",
      "bot_settings": "{\"mode\":\"prod\"}",
      "version": 4,
      "login": "bot@8f1b0c1e-3f7a-4d2b-9d7e-2b1f3a9c6e11",
      "external_id": "crm-42",
      "send_only_last_comment": false,
      "time_zone_offset": 180,
      "locale": "en-US",
      "avatar_id": 98765
    }
  ]
}

curl

curl -X GET \
  'https://api.pyrus.com/v4/bots?include_fired=false' \
  -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>'

Parameters

include_firedWhether to include deleted bots in the list: true — include, false — do not include. The default value is false.

Response fields

The bot object has the same format in all methods of this section. Empty fields are not returned.

idBot ID.
codeBot code. Returned only if set.
nameBot name.
is_enabledWhether the bot is enabled. A disabled bot does not receive events until it is enabled again.
hook_urlURL of the bot's event handler. Pyrus sends a POST request to this URL when a task is routed to the bot.
descriptionBot description.
bot_settingsBot settings — an arbitrary string, such as message text or a JSON object. Pyrus passes it to the handler with every event, so the same handler can behave differently depending on the settings.
versionVersion of the protocol Pyrus uses to communicate with the bot's handler.
loginBot login. Used for bot authorization in the API.
external_idExternal bot ID, for example, its ID in your system.
send_only_last_commentWhether to pass only the last task comment to the handler: true — only the last comment, false — all comments.
time_zone_offsetBot time zone — offset from UTC in minutes. Returned only if set.
localeBot locale, for example, en-US. Some date formats depend on it.
avatar_idBot avatar ID. Returned only if set.
external_avatar_idExternal bot avatar ID. Returned only if set.
firedWhether the bot is deleted. Returned only for deleted bots, with the value true.

POST /bots

This method creates a bot in the user's organization and returns it.

A new bot is enabled right away. The bot's locale matches the locale of the user who created it. The description, settings, time zone, locale, and other parameters can be set after creation with the PUT /bots/{id} method.

POST https://api.pyrus.com/v4/bots

Request body

{
  "name": "Support bot",
  "hook_url": "https://example.com/pyrus-hook",
  "external_id": "crm-42"
}

Response body

{
  "id": 1234567,
  "name": "Support bot",
  "is_enabled": true,
  "hook_url": "https://example.com/pyrus-hook",
  "version": 4,
  "login": "bot@8f1b0c1e-3f7a-4d2b-9d7e-2b1f3a9c6e11",
  "external_id": "crm-42",
  "send_only_last_comment": false,
  "locale": "en-US"
}

curl

curl -X POST \
  https://api.pyrus.com/v4/bots \
  -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Support bot",
    "hook_url": "https://example.com/pyrus-hook",
    "external_id": "crm-42"
  }'

Parameters

nameRequired. Bot name. It must not start or end with a space or contain special characters or links.
hook_urlURL of the bot's event handler. The URL must start with https://, and the handler must respond to POST requests. If the URL fails validation, the bot is still created, but without hook_url: you can set the URL later with the PUT /bots/{id} method.
external_idExternal bot ID, for example, its ID in your system.

PUT /bots/{id}

This method updates the bot settings and returns the updated bot. Pass only the parameters you want to change in the request — the rest remain unchanged.

A bot can be updated by users with Configuration Manager rights and by the administrators of this bot.

PUT https://api.pyrus.com/v4/bots/1234567

Request body

{
  "name": "Support bot v2",
  "hook_url": "https://example.com/pyrus-hook-v2",
  "is_enabled": true,
  "bot_settings": "{\"mode\":\"prod\"}",
  "description": "Replies to customer requests",
  "send_only_last_comment": true,
  "time_zone_offset": 180,
  "locale": "en"
}

Response body

{
  "id": 1234567,
  "name": "Support bot v2",
  "is_enabled": true,
  "hook_url": "https://example.com/pyrus-hook-v2",
  "description": "Replies to customer requests",
  "bot_settings": "{\"mode\":\"prod\"}",
  "version": 4,
  "login": "bot@8f1b0c1e-3f7a-4d2b-9d7e-2b1f3a9c6e11",
  "external_id": "crm-42",
  "send_only_last_comment": true,
  "time_zone_offset": 180,
  "locale": "en-US"
}

curl

curl -X PUT \
  https://api.pyrus.com/v4/bots/1234567 \
  -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "is_enabled": false,
    "description": "Temporarily disabled"
  }'

Parameters

idRequired. Bot ID, passed in the URL.
nameNew bot name. The same restrictions apply as when creating a bot.
hook_urlNew URL of the bot's event handler. Must start with https://.
is_enabledtrue — enable the bot, false — disable it.
bot_settingsBot settings — a string that Pyrus passes to the handler with every event.
descriptionBot description.
send_only_last_commentWhether to pass only the last task comment to the handler. This helps reduce the amount of transferred data when tasks have many comments.
time_zone_offsetBot time zone — offset from UTC in minutes, from -720 to 840. For example, 180 corresponds to UTC+3.
localeBot locale: a short (ru, en) or full (ru-RU, en-US) language code.

DELETE /bots/{id}

This method deletes the bot from the organization and returns it with the "fired": true field. The bot's tasks are transferred to the employee specified in the request.

DELETE https://api.pyrus.com/v4/bots/1234567

Request body

{
  "task_receiver_id": 7654321
}

Response body

{
  "id": 1234567,
  "name": "Support bot",
  "is_enabled": true,
  "hook_url": "https://example.com/pyrus-hook",
  "version": 4,
  "login": "bot@8f1b0c1e-3f7a-4d2b-9d7e-2b1f3a9c6e11",
  "external_id": "crm-42",
  "send_only_last_comment": false,
  "locale": "en-US",
  "fired": true
}

curl

curl -X DELETE \
  https://api.pyrus.com/v4/bots/1234567 \
  -H 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "task_receiver_id": 7654321
  }'

Parameters

idRequired. Bot ID, passed in the URL.
task_receiver_idRequired. ID of the employee who will receive the bot's tasks. You cannot specify a role or a deleted employee.

Was this article helpful?