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

Terminal
curl "https://vibecode.bitrix24.com/v1/notifications/schema" \
  -H "X-Api-Key: YOUR_API_KEY"

curl — OAuth application

Terminal
curl "https://vibecode.bitrix24.com/v1/notifications/schema" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"

JavaScript — personal key

javascript
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

javascript
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:

JSON
{
  "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:

JSON
{
  "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 moduleId inside the entry. This endpoint unwraps that map into the modules array, 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 notifyModule or notifyEvent instead 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.

See also