For AI agents: markdown of this page — /docs-content-en/notifications/schema.md documentation index — /llms.txt
Notification type dictionary
GET /v1/notifications/schema
Returns the directory of Bitrix24 account modules and the notification types they send. The operation takes no parameters.
Parameters
The operation takes no parameters.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/notifications/schema" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/notifications/schema" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/notifications/schema', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { data } = await res.json()
const labels = new Map(
data.modules.flatMap((m) => m.list.map((t) => [`${m.moduleId}|${t.id}`, t.name])),
)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/notifications/schema', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { data } = await res.json()
console.log('Modules:', data.modules.length)
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata.modules |
Typearray | DescriptionBitrix24 account modules that send notifications |
Fielddata.modules[].moduleId |
Typestring | DescriptionModule identifier. Matches the notifyModule of a notification in the feed |
Fielddata.modules[].name |
Typestring | DescriptionModule name as Bitrix24 shows it |
Fielddata.modules[].list |
Typearray | DescriptionNotification types this module sends |
Fielddata.modules[].list[].id |
Typestring | DescriptionType identifier. Matches the notifyEvent of a notification in the feed |
Fielddata.modules[].list[].name |
Typestring | DescriptionType name |
Response example
HTTP 200:
{
"success": true,
"data": {
"modules": [
{
"moduleId": "crm",
"name": "CRM",
"list": [
{ "id": "crm_invoice_delivery", "name": "Invoice paid" },
{ "id": "crm_deal_stage", "name": "Deal stage changed" }
]
},
{
"moduleId": "tasks",
"name": "Tasks",
"list": [
{ "id": "task_update", "name": "Task updated" }
]
}
]
}
}
Error response example
403 — the key has no im scope:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'im' scope"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe key has no im scope |
| HTTP401 | CodeTOKEN_MISSING |
DescriptionThe key has no tokens configured |
| HTTP429 | CodeRATE_LIMITED |
DescriptionThe directory read rate was exceeded — up to 120 requests per minute per portal. The current limit is returned in the x-ratelimit-limit header |
| HTTP502 | CodeBITRIX_UNAVAILABLE |
DescriptionBitrix24 returned a response that could not be read |
| HTTP422 | CodeBITRIX_ERROR |
DescriptionThe method failed on the Bitrix24 side — the raw error code from Bitrix24 is in b24Code |
For the full list of common API errors, see Errors.
Known specifics
- Bitrix24 returns the directory as a map whose key repeats the
moduleIdinside the entry. This endpoint unwraps that map into themodulesarray, losing nothing. Elements appear in the order returned by Bitrix24; this order is not guaranteed, so do not rely on it. - The contents depend on the account: the set of modules differs between accounts, and the list of types inside a module changes as Bitrix24 is updated. Cache the response, but re-read it when you encounter an unfamiliar
notifyModuleornotifyEventinstead of treating the set as fixed. - Module and type names arrive in the language of the account — they are data, not interface constants.
- The directory belongs to the account and does not depend on whose token made the call, unlike the notification feed.
- The rate limit is lower than for the feed: this dictionary changes infrequently and is not intended for polling.