Переходите с UptimeRobot? Импортируйте мониторы одним кликом по ключу API только для чтения.Начать бесплатно →
  1. Главная
  2. Интеграции
  3. Webhook

Подписанные webhook: полный инцидент в JSON

Tenium отправляет на ваш адрес JSON, когда инцидент открывается, подтверждается или закрывается, а также когда внимания требует SSL-сертификат или heartbeat. Каждый запрос подписан HMAC-SHA256, так что ваш endpoint может убедиться, что он от нас.

Простой

POST /tenium-hookJSON
POST https://example.com/tenium-hook
Content-Type: application/json
X-Tenium-Signature: t=1737279554,v1=5f3a9c1e07b2…
{
  "event": "down",
  "sentAt": "2026-01-19T09:39:14Z",
  "account": {
    "id": "0f8e…",
    "name": "Your Studio"
  },
  "clientWorkspace": {
    "id": "9a8b…",
    "name": "Client A"
  },
  "monitor": {
    "id": "a3f1…",
    "name": "Client A shop",
    "type": "http",
    "url": "https://shop.clienta.com"
  },
  "incident": {
    "id": "e5b4…",
    "status": "open",
    "startedAt": "2026-01-19T09:35:02Z",
    "resolvedAt": null,
    "durationSec": null,
    "summary": "HTTP 503 Service Unavailable",
    "confirmedBy": [
      "fra",
      "lon",
      "nyc"
    ],
    "url": "https://app.tenium.app/incidents/e5b4…"
  }
}

Восстановлено

POST /tenium-hookJSON
POST https://example.com/tenium-hook
Content-Type: application/json
X-Tenium-Signature: t=1737279554,v1=5f3a9c1e07b2…
{
  "event": "up",
  "sentAt": "2026-01-19T09:39:14Z",
  "account": {
    "id": "0f8e…",
    "name": "Your Studio"
  },
  "clientWorkspace": {
    "id": "9a8b…",
    "name": "Client A"
  },
  "monitor": {
    "id": "a3f1…",
    "name": "Client A shop",
    "type": "http",
    "url": "https://shop.clienta.com"
  },
  "incident": {
    "id": "e5b4…",
    "status": "resolved",
    "startedAt": "2026-01-19T09:35:02Z",
    "resolvedAt": "2026-01-19T09:39:14Z",
    "durationSec": 252,
    "summary": "4m 12s",
    "confirmedBy": [
      "fra",
      "lon",
      "nyc"
    ],
    "url": "https://app.tenium.app/incidents/e5b4…"
  }
}

Срок SSL

POST /tenium-hookJSON
POST https://example.com/tenium-hook
Content-Type: application/json
X-Tenium-Signature: t=1737279554,v1=5f3a9c1e07b2…
{
  "event": "ssl_expiry",
  "sentAt": "2026-01-19T09:39:14Z",
  "account": {
    "id": "0f8e…",
    "name": "Your Studio"
  },
  "clientWorkspace": {
    "id": "9a8b…",
    "name": "Client A"
  },
  "monitor": {
    "id": "a3f1…",
    "name": "Client A shop",
    "type": "http",
    "url": "https://shop.clienta.com"
  },
  "expiry": {
    "kind": "ssl",
    "daysLeft": 7,
    "expiresAt": "2026-01-26T00:00:00Z"
  }
}

Пропущенный heartbeat

POST /tenium-hookJSON
POST https://example.com/tenium-hook
Content-Type: application/json
X-Tenium-Signature: t=1737279554,v1=5f3a9c1e07b2…
{
  "event": "heartbeat_missed",
  "sentAt": "2026-01-19T09:39:14Z",
  "account": {
    "id": "0f8e…",
    "name": "Your Studio"
  },
  "clientWorkspace": {
    "id": "9a8b…",
    "name": "Client A"
  },
  "monitor": {
    "id": "a3f1…",
    "name": "Nightly backup",
    "type": "heartbeat",
    "url": "https://shop.clienta.com"
  },
  "incident": {
    "id": "e5b4…",
    "status": "open",
    "startedAt": "2026-01-19T09:35:02Z",
    "resolvedAt": null,
    "durationSec": null,
    "summary": "No ping received for 26 min",
    "confirmedBy": [
      "fra",
      "lon",
      "nyc"
    ],
    "url": "https://app.tenium.app/incidents/e5b4…"
  }
}

Симуляция: эта страница ничего не отправляет.

Как настроить

  1. 1

    Подготовьте endpoint

    Создайте https-endpoint, принимающий JSON POST и отвечающий кодом 2xx. Всё остальное считается неудачной доставкой.

  2. 2

    Вставьте адрес и сохраните секрет

    Откройте «Интеграции», выберите Webhook, вставьте адрес и при необходимости задайте секрет для подписанных запросов. Нажмите «Отправить тест» — вы получите событие test.

    Сначала сохраните контакт

  3. 3

    Проверьте подпись, затем привяжите

    Вычислите HMAC-SHA256 от сырого тела запроса с вашим секретом и сравните с заголовком. Затем привяжите контакт к мониторам.

    Сначала сохраните контакт

Интерактивный макет, ничего не сохраняется.

Что есть в сообщении

  • JSON с событием, монитором, учётной записью, клиентом и инцидентом
  • События: down, blocked, up, degraded, heartbeat_missed, ssl_expiry, domain_expiry, test
  • Заголовок X-Tenium-Signature, который можно проверить

Текст оповещений формирует Tenium, и пока он на английском.

Тариф и лимиты

  • Доступно с тарифа Pro ($29 в месяц)
  • Входит вPro, Agency
  • Исходящих оповещений в час на вашем тарифеFree 40 · Starter 300 · Pro 1 500 · Agency 6 000
  • Задержка перед отправкойДоступна на Pro и Agency

Стоит знать

  • Полный список полей и пример проверки на Node: документация, API webhook payloads.
  • Неудачные доставки (не 2xx, 429, сетевые ошибки или таймаут 10 с) повторяются до 3 попыток всего с интервалом 30 секунд.

Как работают оповещения и эскалация

Контакты, маршрутизация, задержки и подтверждение описаны в документации.

Читать документацию →

Вопросы о Webhook

Как проверить, что запрос пришёл от Tenium?

Прочитайте заголовок X-Tenium-Signature (t=время,v1=подпись), вычислите HMAC-SHA256 от времени, точки и сырого тела с вашим секретом, сравните за постоянное время и отклоняйте запросы старше пяти минут. В документации есть пример для Node.

Что будет, если мой endpoint недоступен?

Ответ не 2xx, 429, сетевая ошибка или таймаут 10 секунд считаются неудачной доставкой и повторяются, до 3 попыток всего с интервалом 30 секунд.

Можно ли открывать тикеты или перезапускать сервер?

Да, для этого он и нужен: в данных есть всё для создания тикета, сообщения во внутренний инструмент или запуска скрипта. Zapier (Agency) делает то же без кода.

Какой тариф включает Webhook?

Webhook доступен с тарифа Pro ($29 в месяц) и на всех более высоких.

Как проверить оповещения Webhook?

Откройте «Настройки», «Контакты» и нажмите «Отправить тест» у контакта. За несколько секунд придёт сообщение с пометкой TEST. Сначала добавьте хотя бы один монитор, потому что оповещения отправляет проверяющий сервер.

Можно ли отложить Webhook, пока никто не отреагировал?

Да, на Pro и Agency. Задайте контакту задержку в минутах: он сработает, только если инцидент ещё открыт, а подтверждение инцидента отменяет отправку.

Другие интеграции

Подключите первый канал за минуту

Начните бесплатно с e-mail, Discord и Google Chat. 30 мониторов, без карты.