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 | Рекомендуется | Домен вашего сайта. Токен работает только с указанного домена |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
| title | string | Да | Заголовок уведомления (макс. 255 символов) |
| body | string | Нет | Текст уведомления |
| notification_type | string | Нет | Slug типа: lead, order, metric, error_batch. Подробнее о типах |
| priority | string | Нет | Приоритет: low, normal, high, urgent |
| tag | string | Нет | Одиночный тег. Если нет — создастся автоматически |
| tags | string[] | object[] | Нет | Массив: строки или {name, color?}. Цвет только при создании |
| payload | object | Нет | Произвольный 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 |
Перегенерация токена
Если токен был скомпрометирован, его можно перегенерировать в личном кабинете. Старый токен перестаёт работать немедленно.