Skip to content

Latest commit

 

History

History
330 lines (270 loc) · 9.77 KB

File metadata and controls

330 lines (270 loc) · 9.77 KB

Send Notification im.notify

{% note tip "" %}

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.

{% endnote %}

Scope: im

Who can execute the method: any user

The im.notify method sends a notification to a user.

{% note info "" %}

The method cannot be called with session authorization — it returns the WRONG_AUTH_TYPE error. Call it via a webhook or with an application token.

{% endnote %}

Method Parameters

{% include Note on required parameters %}

#| || Name Type | Description || || USER_ID* integer | The identifier of the user receiving the notification.

You can obtain the user ID using the user.get or user.search methods. || || TYPE string | The type of notification.

Allowed values:

  • USER — personal notification
  • SYSTEM — system notification

Default value — USER || || MESSAGE* string | The text of the notification. The method trims whitespace from the ends of the string before sending. || || MESSAGE_OUT string | The text of the notification for external channels, such as email. || || TAG string | A unique tag for the notification within the application. When adding a notification with an existing tag, other notifications will be removed. Pass it with CLIENT_ID when calling via webhook. || || SUB_TAG string | An additional notification tag without uniqueness checks. Pass it with CLIENT_ID when calling via webhook. || || ATTACH object string | An attachment for the notification in object format or JSON string. For more details, see the Attachments section. || || CLIENT_ID string | The application identifier. The parameter is required only when calling via a webhook: pass it together with TAG and SUB_TAG || |#

Code Examples

{% include Footnote on examples %}

{% list tabs %}

  • cURL (Webhook)

    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Accept: application/json" \
      -d '{"USER_ID":5,"TYPE":"USER","MESSAGE":"Reminder","MESSAGE_OUT":"Reminder (email)","TAG":"TASK_42","SUB_TAG":"TASK|42"}' \
      https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/im.notify
  • cURL (OAuth)

    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Accept: application/json" \
      -d '{"USER_ID":5,"TYPE":"SYSTEM","MESSAGE":"System message","MESSAGE_OUT":"System message (email)","TAG":"SYSTEM_42","SUB_TAG":"SYSTEM|42","auth":"**put_access_token_here**"}' \
      https://**put_your_bitrix24_address**/rest/im.notify
  • JS (TS)

    // This snippet is an ES module: top-level await requires type="module" or a bundler.
    // $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
    import { Text } from '@bitrix24/b24jssdk'
    import type { B24Frame } from '@bitrix24/b24jssdk'
    
    declare const $b24: B24Frame
    
    try {
      const response = await $b24.actions.v2.call.make<number | false>({
        method: 'im.notify',
        params: {
          USER_ID: 5,
          TYPE: 'USER',
          MESSAGE: 'Reminder',
          MESSAGE_OUT: 'Reminder (email)',
          TAG: 'TASK_42',
          SUB_TAG: 'TASK|42',
        },
        requestId: Text.getUuidRfc4122()
      })
    
      // The payload is available only on a successful response
      if (!response.isSuccess) {
        console.error(response.getErrorMessages().join('; '))
      } else {
        const result = response.getData()!.result
        console.info('Notification ID:', result)
      }
    } catch (error) {
      // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
      console.error(error)
    }
  • JS (UMD)

    <!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
    <script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
    <script>
      async function sendNotification() {
        try {
          // Initialize the SDK inside a Bitrix24 frame
          const $b24 = await B24Js.initializeB24Frame()
    
          const response = await $b24.actions.v2.call.make({
            method: 'im.notify',
            params: {
              USER_ID: 5,
              TYPE: 'USER',
              MESSAGE: 'Reminder',
              MESSAGE_OUT: 'Reminder (email)',
              TAG: 'TASK_42',
              SUB_TAG: 'TASK|42',
            },
            requestId: B24Js.Text.getUuidRfc4122()
          })
    
          // The payload is available only on a successful response
          if (!response.isSuccess) {
            console.error(response.getErrorMessages().join('; '))
            return
          }
    
          const result = response.getData().result
          console.info('Notification ID:', result)
        } catch (error) {
          // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
          console.error(error)
        }
      }
    
      document.addEventListener('DOMContentLoaded', sendNotification)
    </script>
  • PHP

    try {
        $response = $b24Service->core->call(
            'im.notify',
            [
                'USER_ID' => 5,
                'TYPE' => 'USER',
                'MESSAGE' => 'Reminder',
                'MESSAGE_OUT' => 'Reminder (email)',
                'TAG' => 'TASK_42',
                'SUB_TAG' => 'TASK|42',
            ]
        );
    
        $result = $response->getResponseData()->getResult();
    
        if ($result->error()) {
            echo 'Error: ' . $result->error();
        } else {
            echo 'Notification ID: ' . $result->data();
        }
    } catch (Throwable $exception) {
        echo $exception->getMessage();
    }
  • BX24.js

    BX24.callMethod(
        'im.notify',
        {
            USER_ID: 5,
            TYPE: 'USER',
            MESSAGE: 'Reminder',
            MESSAGE_OUT: 'Reminder (email)',
            TAG: 'TASK_42',
            SUB_TAG: 'TASK|42',
        },
        function(result) {
            if (result.error()) {
                console.error(result.error().ex);
            } else {
                console.log(result.data());
            }
        }
    );
  • PHP CRest

    require_once('crest.php');
    
    $result = CRest::call(
        'im.notify',
        [
            'USER_ID' => 5,
            'TYPE' => 'USER',
            'MESSAGE' => 'Reminder',
            'MESSAGE_OUT' => 'Reminder (email)',
            'TAG' => 'TASK_42',
            'SUB_TAG' => 'TASK|42',
        ]
    );
    
    if (!empty($result['error'])) {
        echo 'Error: ' . $result['error_description'];
    } else {
        echo 'Notification ID: ' . $result['result'];
    }
  • Go

    // client and ctx are already created — see the Go SDK section
    res, err := client.Core().Call(ctx, "im.notify", b24.Params{
    	"USER_ID":     5,
    	"TYPE":        "USER",
    	"MESSAGE":     "Reminder",
    	"MESSAGE_OUT": "Reminder (email)",
    	"TAG":         "TASK_42",
    	"SUB_TAG":     "TASK|42",
    })
    if err != nil {
    	return fmt.Errorf("im.notify: %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)

{% endlist %}

Response Handling

HTTP Status: 200

{
    "result": 12345,
    "time": {
        "start": 1760000000.0,
        "finish": 1760000000.1,
        "duration": 0.1,
        "processing": 0.04,
        "date_start": "2026-03-03T10:00:00+01:00",
        "date_finish": "2026-03-03T10:00:00+01:00",
        "operating_reset_at": 1760030000,
        "operating": 0
    }
}

Returned Data

#| || Name Type | Description || || result integer boolean | The identifier of the created notification. If the notification was not created, it may return false. || || time time | Information about the request execution time. || |#

Error Handling

HTTP Status: 400, 403

{
    "error": "USER_ID_EMPTY",
    "error_description": "User ID can't be empty"
}

{% include notitle Error Handling %}

Possible Error Codes

#| || Code | Description | Value || || WRONG_AUTH_TYPE | Access for this method not allowed by session authorization. | The method was called with session authorization, which is prohibited. || || USER_ID_EMPTY | User ID can't be empty | The USER_ID parameter was not provided, or USER_ID <= 0. || || MESSAGE_EMPTY | Message can't be empty | The message text was not provided. || || ATTACH_OVERSIZE | You have exceeded the maximum allowable size of attach | The maximum allowable size for the ATTACH is exceeded — 60,000 characters. || || ATTACH_ERROR | Incorrect attach params | An incorrect format for the ATTACH was provided. || |#

{% include System Errors %}

Continue Learning