API инцидентов
API инцидентов предоставляет программный доступ только на чтение к инцидентам, зарегистрированным для ваших мониторов и серверов. Используйте его, чтобы передавать текущее состояние инцидентов в дашборды, конвейеры оповещений или инструменты аудита.
Инциденты создаются и управляются тремя способами:
- Автоматически, когда монитор переходит в «down» или детектор аномалий отмечает сервер.
- Вручную из Dashboard → Incidents.
REST API предоставляет только операции list и get. Создание, обновление, подтверждение и разрешение инцидентов выполняются в дашборде (см. Управление инцидентами ниже).
Базовый URL и версия
Все эндпоинты находятся под префиксом /v1 на API-хосте:
https://api.statusradar.dev/v1
https://statusradar.dev/v1 является допустимым псевдонимом.
Аутентификация
API инцидентов является частью User API и аутентифицируется пользовательским API-токеном, отправляемым как Bearer-токен:
Authorization: Bearer YOUR_API_TOKEN
Сгенерируйте токен в Dashboard → Settings → API. Токены ограничены ресурсами, которыми владеют ваш аккаунт и команда — вы всегда видите только инциденты для сущностей, к которым у вас есть доступ. Клиенты, которые не могут установить заголовок Authorization, могут вместо этого использовать заголовок X-API-Token: YOUR_API_TOKEN.
Полные сведения см. в разделе Аутентификация API.
Ограничение частоты запросов
Запросы User API ограничены 60 запросами в минуту на каждый токен. При превышении лимита API отвечает HTTP 429 и заголовком Retry-After: 60. Сделайте паузу и повторите попытку.
Эндпоинты
| Метод | Путь | Описание |
|---|---|---|
GET |
/v1/incidents |
Список инцидентов |
GET |
/v1/incidents/{id} |
Получить отдельный инцидент с его обновлениями |
Список инцидентов
GET /v1/incidents
Возвращает инциденты, видимые для вашего токена, новейшие первыми.
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
status |
string | Фильтр по статусу. active возвращает всё, что ещё не разрешено. Принимает одно значение статуса (см. Статус). По умолчанию: все. |
severity |
string | Фильтр по серьёзности (см. Серьёзность). По умолчанию: все. |
entity_type |
string | Фильтр по затронутой сущности: monitor или server. По умолчанию: все. |
detection |
string | Фильтр по способу обнаружения инцидента: manual или anomaly. По умолчанию: все. |
search |
string | Поиск по заголовку инцидента или имени сущности. |
page |
integer | Номер страницы, начиная с 1. По умолчанию: 1. |
Пример запроса
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
"https://api.statusradar.dev/v1/incidents?status=active&severity=critical"
Пример ответа
{
"success": true,
"data": [
{
"id": 482,
"entity_type": "monitor",
"entity_id": 117,
"entity_name": "API Gateway",
"entity_target": "https://api.example.com/health",
"title": "API Gateway is down",
"description": "Health check returned 503 from all probe locations.",
"severity": "critical",
"status": "investigating",
"detection_source": "monitor",
"started_at": "2026-06-23T09:14:02Z",
"resolved_at": null,
"duration_minutes": 27
}
],
"page": 1,
"total": 1,
"total_pages": 1
}
Получение инцидента
GET /v1/incidents/{id}
Возвращает отдельный инцидент, включая его хронологические обновления. Для инцидентов мониторов ответ также включает результаты проверок, зарегистрированные в течение окна инцидента. Возвращает 404, если инцидент не существует или не виден вашему токену.
Пример запроса
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://api.statusradar.dev/v1/incidents/482
Пример ответа
{
"success": true,
"data": {
"id": 482,
"entity_type": "monitor",
"entity_id": 117,
"entity_name": "API Gateway",
"entity_target": "https://api.example.com/health",
"title": "API Gateway is down",
"description": "Health check returned 503 from all probe locations.",
"severity": "critical",
"status": "monitoring",
"detection_source": "monitor",
"started_at": "2026-06-23T09:14:02Z",
"resolved_at": null,
"duration_minutes": 41,
"updates": [
{
"id": 1204,
"status": "monitoring",
"message": "Rolled back the bad deploy; error rate is dropping.",
"user_name": "Jane Ops",
"created_at": "2026-06-23T09:48:00Z"
},
{
"id": 1201,
"status": "investigating",
"message": "Confirmed 503s across all locations, investigating.",
"user_name": "Jane Ops",
"created_at": "2026-06-23T09:16:00Z"
}
]
}
}
Поля инцидента
| Поле | Тип | Описание |
|---|---|---|
id |
integer | ID инцидента. |
entity_type |
string | Тип затронутой сущности: monitor или server. |
entity_id |
integer | ID затронутого монитора или сервера. |
entity_name |
string | Отображаемое имя затронутой сущности. |
entity_target |
string | URL цели монитора или имя хоста сервера. |
title |
string | Краткий заголовок инцидента. |
description |
string | Более подробное описание инцидента. |
severity |
string | Уровень воздействия (см. Серьёзность). |
status |
string | Текущий статус жизненного цикла (см. Статус). |
detection_source |
string | Как был открыт инцидент: manual (создан в дашборде) или anomaly (ML-обнаружение). События перехода монитора в «down» открываются автоматически конвейером мониторинга. |
started_at |
datetime | Когда начался инцидент. |
resolved_at |
datetime / null | Когда инцидент был разрешён, или null, пока он открыт. |
duration_minutes |
integer | Прошедшие минуты от started_at до resolved_at (или до текущего момента, если инцидент ещё открыт). |
updates |
array | Хронологические обновления статуса (новейшие первыми). Присутствует в ответе по отдельному инциденту. |
Объект обновления
| Поле | Тип | Описание |
|---|---|---|
id |
integer | ID обновления. |
status |
string | Статус инцидента, установленный этим обновлением. |
message |
string | Заметка, написанная человеком. |
user_name |
string / null | Автор обновления. |
created_at |
datetime | Когда было опубликовано обновление. |
Серьёзность
| Значение | Значение |
|---|---|
critical |
Полный сбой / серьёзное воздействие. |
major |
Значительная деградация. |
minor |
Ограниченное или частичное воздействие. |
warning |
Ранний сигнал, подтверждённого сбоя нет. |
info |
Информационный. |
Инциденты, созданные вручную, принимают minor, major и critical. warning и info используются автоматическими и обнаруженными по аномалии инцидентами.
Статус
Инциденты следуют такому жизненному циклу:
| Значение | Значение |
|---|---|
investigating |
Проблема подтверждена и расследуется. |
identified |
Первопричина определена. |
monitoring |
Исправление применено и наблюдается. |
resolved |
Инцидент закрыт. |
Фильтр статуса active соответствует каждому инциденту, чей статус не resolved.
Управление инцидентами
REST API доступен только на чтение. Чтобы создавать, обновлять, подтверждать или разрешать инциденты, используйте дашборд в Dashboard → Incidents (/dashboard/incidents):
- Создать — откройте инцидент вручную для одного из ваших мониторов с заголовком, описанием, серьёзностью и начальным статусом.
- Обновить — опубликуйте обновление статуса с сообщением; установка статуса
resolvedзакрывает инцидент. - Подтвердить — отметьте активный инцидент как обрабатываемый.
- Разрешить — закройте инцидент и верните сущность в исправное состояние.
Когда монитор восстанавливается, его открытый инцидент разрешается автоматически.
Ответы с ошибками
Ошибки возвращают статус не-2xx с телом в формате JSON:
{
"success": false,
"error": "Invalid token",
"message": "The provided API token is invalid or has been revoked"
}
| Статус | Значение |
|---|---|
401 |
Отсутствующий, недействительный или отозванный токен. |
404 |
Инцидент не найден или не виден вашему токену. |
429 |
Превышен лимит частоты запросов (60 запросов/минуту). |
500 |
Ошибка сервера. |
Дальнейшие шаги
- Аутентификация API — типы токенов и как их отправлять
- Обзор API — полная поверхность API
- Обзор оповещений — превращение инцидентов в уведомления
- Обнаружение аномалий — как обнаруживаются серверные инциденты