For AI agents: markdown of this page — /docs-content-en/entities/bizproc-robots.md documentation index — /llms.txt
Automation rules
Register your own automation rules to automate Bitrix24. An automation rule is an external handler that appears both in the automation designer and in the business process designer. It is invoked when automation runs: it receives input parameters, runs its logic on the application side, and returns a result. Bitrix24 recommends automation rules over activities.
Automation rules can be read, registered, updated, and deleted only with an authorization key vibe_app_… — an API key vibe_api_… cannot be used for these methods. Only a Bitrix24 account administrator can manage automation rules.
Bitrix24 API: bizproc.robot.*
Scope: bizproc
Register an automation rule
POST /v1/bizproc-robots
Registers a new automation rule in Bitrix24. Fields are passed flat at the JSON root — without a fields wrapper.
Request fields (body)
| Field | Type | Req. | Description |
|---|---|---|---|
code |
string | yes | Unique automation rule code. Allowed characters: a-z, A-Z, 0-9, ., -, _. Becomes the automation rule identifier in update and delete paths |
name |
string | object | yes | Automation rule name. A string or a localized object like {"en": "...", "de": "..."} |
handler |
string | yes | Handler URL. The domain must match the application domain |
documentType |
array | no | Document type [module, object, type]. Values:["crm", "CCrmDocumentLead", "LEAD"] — leads["crm", "CCrmDocumentDeal", "DEAL"] — deals["crm", "Bitrix\\Crm\\Integration\\BizProc\\Document\\Quote", "QUOTE"] — quotes["crm", "Bitrix\\Crm\\Integration\\BizProc\\Document\\SmartInvoice", "SMART_INVOICE"] — invoices["crm", "Bitrix\\Crm\\Integration\\BizProc\\Document\\Dynamic", "DYNAMIC_<entityTypeId>"] — smart processes, <entityTypeId> from the entityTypeId field in GET /v1/smart-processes |
description |
string | object | no | Automation rule description. A string or a localized object |
authUserId |
number | no | The user whose token is passed to the application when the automation rule is invoked. List: GET /v1/users |
useSubscription |
string | no | Whether to wait for a response from the application before continuing the rule: Y or N |
properties |
object | no | Automation rule input parameters — fields that are filled in when configuring the automation rule |
returnProperties |
object | no | Automation rule output parameters — the values the automation rule returns |
filter |
object | no | INCLUDE / EXCLUDE rules by document type |
usePlacement |
string | no | Whether to open automation rule settings in a slider panel: Y or N |
placementHandler |
string | no | URL of the settings slider panel. Required when usePlacement: "Y" |
Examples
Only an authorization key can register an automation rule — both examples send the authorization key and the Authorization: Bearer header. The session token is issued by OAuth authorization, is valid for 24 hours, and cannot be renewed — Passing the key.
curl — authorization key
curl -X POST "https://vibecode.bitrix24.com/v1/bizproc-robots" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"code": "deal_notify",
"name": { "en": "Deal notification", "de": "Deal-Benachrichtigung" },
"handler": "https://app.example.com/robots/deal-notify",
"documentType": ["crm", "CCrmDocumentDeal", "DEAL"],
"useSubscription": "N"
}'
JavaScript — authorization key
const res = await fetch('https://vibecode.bitrix24.com/v1/bizproc-robots', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
code: 'deal_notify',
name: { en: 'Deal notification', de: 'Deal-Benachrichtigung' },
handler: 'https://app.example.com/robots/deal-notify',
documentType: ['crm', 'CCrmDocumentDeal', 'DEAL'],
useSubscription: 'N',
}),
})
const { success, data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
id |
boolean | true — Bitrix24 confirmed the automation rule registration. This is a success flag, not a numeric identifier. The automation rule identifier is the code you set |
Response example
{
"success": true,
"data": {
"id": true
}
}
Error response example
403 — the request was sent with an API key:
{
"success": false,
"error": {
"code": "OAUTH_REQUIRED",
"message": "bizproc-robots require an OAuth app key (vibe_app_*) with an Authorization: Bearer session — a personal vibe_api_* key lacks the per-user OAuth context Bitrix24 needs for these methods. Create an OAuth app (POST /v1/apps) and retry with its key. On this 403 switch keys — do NOT delete or recreate the app (that discards anything already registered under it, e.g. a bizproc robot you just registered)."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 403 | OAUTH_REQUIRED |
The request was sent with an API key. Only an authorization key can register automation rules |
| 401 | TOKEN_MISSING |
Authorization key without the Authorization: Bearer header |
| 401 | WRONG_AUTH_SCHEME |
The authorization key was sent in the Authorization: Bearer header. The key goes in X-Api-Key, while Authorization: Bearer carries the session token |
| 401 | INVALID_SESSION |
The session token has expired or is invalid — authorize again |
| 403 | SCOPE_DENIED |
The key lacks the bizproc scope |
| 400 | EMPTY_CREATE_BODY |
The request body is empty — pass at least one field |
| 422 | BITRIX_ERROR |
Bitrix24 validation error — text in error.message |
The full list of common API errors — Errors.