Webhook API

Webhook API — это основной способ отправки уведомлений в Notix из вашего бэкенда. Один POST-запрос с токеном — и уведомление появляется в личном кабинете.

Эндпоинт

POST /api/v1/webhook

Аутентификация

Токен передаётся в заголовке Authorization в формате Bearer:

Authorization: Bearer ntx_xxxxxxxxxxxxxxxxxxxxxxxx

Токен можно получить в личном кабинете → раздел «API Токены». Формат токена всегда начинается с префикса ntx_.

Заголовки запроса

ЗаголовокОбязательноОписание
AuthorizationДаBearer-токен: Bearer ntx_...
Content-TypeДаapplication/json
OriginРекомендуетсяДомен вашего сайта. Токен работает только с указанного домена

Тело запроса

ПолеТипОбязательноОписание
titlestringДаЗаголовок уведомления (макс. 255 символов)
bodystringНетТекст уведомления
notification_typestringНетSlug типа: lead, order, metric, error_batch. Подробнее о типах
prioritystringНетПриоритет: low, normal, high, urgent
tagstringНетОдиночный тег. Если нет — создастся автоматически
tagsstring[] | object[]НетМассив: строки или {name, color?}. Цвет только при создании
payloadobjectНетПроизвольный JSON

Примеры

curl -X POST https://notix-hub.ru/api/v1/webhook \
  -H "Authorization: Bearer ntx_live_x8k2jp9mQr5vLwY3aN6bHc1d" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Новый заказ #1247",
    "body": "Клиент: Иванов И.И.\nСумма: 34 500 ₽",
    "notification_type": "order",
    "priority": "high",
    "tags": ["заказ", "оплата"]
  }'
<?php

$token = 'ntx_live_x8k2jp9mQr5vLwY3aN6bHc1d';
$data = [
    'title' => 'Новый заказ #1247',
    'body' => "Клиент: Иванов И.И.\nСумма: 34 500 ₽",
    'notification_type' => 'order',
    'priority' => 'high',
];

$ch = curl_init('https://notix-hub.ru/api/v1/webhook');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
import requests

token = "ntx_live_x8k2jp9mQr5vLwY3aN6bHc1d"
data = {
    "title": "Новый заказ #1247",
    "body": "Клиент: Иванов И.И.\nСумма: 34 500 ₽",
    "notification_type": "order",
    "priority": "high",
}
headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json",
}

response = requests.post(
    "https://notix-hub.ru/api/v1/webhook",
    json=data,
    headers=headers,
)

print(response.json())
const token = 'ntx_live_x8k2jp9mQr5vLwY3aN6bHc1d';

const response = await fetch('https://notix-hub.ru/api/v1/webhook', {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        title: 'Новый заказ #1247',
        body: 'Клиент: Иванов И.И.\nСумма: 34 500 ₽',
        notification_type: 'order',
        priority: 'high',
    }),
});

const result = await response.json();
console.log(result);
import java.net.URI;
import java.net.http.*;

var token = "ntx_live_x8k2jp9mQr5vLwY3aN6bHc1d";
var json = """
{
    "title": "Новый заказ #1247",
    "body": "Клиент: Иванов И.И.\\nСумма: 34 500 ₽",
    "notification_type": "order",
    "priority": "high"
}
""";

var request = HttpRequest.newBuilder()
    .uri(URI.create("https://notix-hub.ru/api/v1/webhook"))
    .header("Authorization", "Bearer " + token)
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(json))
    .build();

var response = HttpClient.newHttpClient()
    .send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.body());
var token = "ntx_live_x8k2jp9mQr5vLwY3aN6bHc1d";
var data = new
{
    title = "Новый заказ #1247",
    body = "Клиент: Иванов И.И.\nСумма: 34 500 ₽",
    notification_type = "order",
    priority = "high"
};

using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post,
    "https://notix-hub.ru/api/v1/webhook");
request.Headers.Add("Authorization", "Bearer " + token);
request.Content = new StringContent(
    System.Text.Json.JsonSerializer.Serialize(data),
    System.Text.Encoding.UTF8,
    "application/json"
);

var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);

Ответы

КодОписание
201 CreatedУведомление создано. {"message":"Notification received","id":"..."}
401 UnauthorizedТокен недействителен, истёк или домен не разрешён
422 UnprocessableОшибка валидации: нет title или неверный priority

Перегенерация токена

Если токен был скомпрометирован, его можно перегенерировать в личном кабинете. Старый токен перестаёт работать немедленно.