Документация

REST API

HTTP API для чтения статуса и управления проектами. Для Cursor и AI-редакторов есть отдельный MCP.

См. также: Подключение MCP

Публичный API

Вы узнаете, как читать публичный JSON статуса без ключа и вызывать приватный REST API v1 с Bearer-токеном.

Чтение статуса открытой страницы — без авторизации. Приватные страницы возвращают 404.

GET/v1/public/status/{slug}без ключа

Публичный JSON статуса

Текущий статус открытой status page без API-ключа. В path подойдёт slug страницы или id проекта из кабинета.

Параметры

  • slug (path) · обяз.Slug status page или id проекта (cuid).

Ответы

  • 200Общий статус, компоненты, uptime за 7 дней, активный инцидент (если есть).
  • 404Страница не найдена или visibility = private.
  • 429Лимит: 60 запросов в минуту с IP (заголовок Retry-After).
пример
{
  "slug": "demo",
  "status": "operational",
  "updated_at": "2026-05-27T12:00:00.000Z",
  "components": [
    {
      "name": "Website",
      "url": "https://example.com",
      "status": "operational",
      "uptime_7d": 99.9
    }
  ],
  "active_incident": null
}

status / статус компонента: "operational" | "degraded" | "down" | "probe_limited" | "unknown". Ответ кэшируется ~60 с (Cache-Control).

HTTP
GET https://api.stillonline.tech/v1/public/status/{slug}

Приватный REST API

Тариф Pro или Ultimate. Создайте API-ключ в кабинете.

HTTP
Authorization: Bearer sk_live_…
Base: https://api.stillonline.tech/v1

Ошибки: 401 — неверный или отозванный ключ, Free без API; 403 — лимит плана (код в теле: PLAN_LIMIT_*); 400 — невалидный JSON; 429 — слишком много запросов (код RATE_LIMIT, заголовок Retry-After).

Лимиты запросов (приватный API)

Считаются отдельно для каждого API-ключа, окно 60 секунд. Публичный GET /v1/public/status/{slug} — 60 запросов/мин с IP (без ключа).

  • Чтение (GET): 120 запросов/мин на ключ
  • Изменения (POST, PATCH, DELETE): 30 запросов/мин на ключ
  • GET /v1/health — без ключа и без лимита по ключу (для smoke-тестов)

Пауза одной URL-проверки

Чтобы временно не мониторить один адрес, оставив остальные проверки проекта активными, используйте PATCH /v1/checks/{id} с телом {"enabled": false}. В кабинете у строки появится бейдж «Пауза»; включить снова — только через API (enabled: true). Кнопки «Запустить» / «Пауза» на странице проекта относятся ко всем URL сразу.

  • Пробы по этому URL прекращаются; last_probed_at больше не обновляется.
  • last_status может остаться OPERATIONAL — это последний результат до паузы.
  • Id проверки: GET /v1/projects/{project_id}/checks или карточка в кабинете.
curl (Linux / macOS)
# Pause one check (replace CHECK_ID and your key)
curl -sS -X PATCH https://api.stillonline.tech/v1/checks/CHECK_ID \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'

Примеры для Windows (PowerShell)

В PowerShell curl.exe с -d '{"enabled":false}' часто отправляет битый JSON (Invalid JSON). Имена на кириллице в Invoke-RestMethod -Body без UTF-8 байтов могут сохраниться как «???????» — используйте функцию ниже.

PowerShell
$uri = "https://api.stillonline.tech/v1/checks/CHECK_ID"
$headers = @{ Authorization = "Bearer sk_live_…" }

# UTF-8 JSON body (Cyrillic-safe on Windows)
function Invoke-StillOnlineJson($Method, $Uri, $Headers, $JsonObject) {
  $utf8 = New-Object System.Text.UTF8Encoding $false
  $json = $JsonObject | ConvertTo-Json -Compress
  $bytes = $utf8.GetBytes($json)
  Invoke-RestMethod -Method $Method -Uri $Uri -Headers $Headers `
    -ContentType "application/json; charset=utf-8" -Body $bytes
}

# Pause / resume
Invoke-StillOnlineJson PATCH $uri $headers @{ enabled = $false }
Invoke-StillOnlineJson PATCH $uri $headers @{ enabled = $true }

# Rename (Cyrillic)
Invoke-StillOnlineJson PATCH $uri $headers @{ name = "Главная" }

# List checks
(Invoke-RestMethod -Uri "https://api.stillonline.tech/v1/projects/PROJECT_ID/checks" -Headers $headers).checks |
  Select-Object name, enabled, last_probed_at

Кабинет и браузер всегда UTF-8. Linux/macOS curl с -d и UTF-8 терминалом — тоже. API принимает charset=utf-8 и UTF-16 (BOM) в теле запроса.

GET/v1/healthбез ключа

Проверка API

Простая проверка доступности API для мониторинга и smoke-тестов.

Ответы

  • 200Сервис отвечает. Без API-ключа; лимиты по ключу не применяются.
пример
{
  "status": "ok",
  "service": "stillonline-api",
  "version": "v1"
}
HTTP
GET https://api.stillonline.tech/v1/health
GET/v1/projectsBearer sk_live_…

Список проектов

Все неудалённые проекты владельца ключа, сначала новые.

Ответы

  • 200Массив projects со status_page_id.
  • 401Нет или неверный Bearer-ключ.
  • 429RATE_LIMIT — более 120 GET/мин на API-ключ (Retry-After).
пример
{
  "projects": [
    {
      "id": "clx…",
      "name": "Acme",
      "description": null,
      "slug": "acme",
      "timezone": "UTC",
      "status_page_id": "clx…",
      "created_at": "2026-05-27T10:00:00.000Z"
    }
  ]
}
HTTP
GET https://api.stillonline.tech/v1/projects
POST/v1/projectsBearer sk_live_…

Создать проект

Создаёт проект, status page и первую HTTP-проверку одним запросом.

Тело запроса

JSON. Обязательны name и url.

JSON
{
  "name": "Acme API",
  "url": "https://api.example.com/health",
  "description": "Optional note"
}

Ответы

  • 201Объект project.
  • 400Невалидный JSON или нет name/url.
  • 403Лимит плана (код PLAN_LIMIT_PROJECTS) или Free без API.
  • 401Не авторизован.
HTTP
POST https://api.stillonline.tech/v1/projects
DELETE/v1/projects/{id}Bearer sk_live_…

Удалить проект

Мягкое удаление проекта (исчезает из кабинета; проверки отключены). Публичная страница может показывать последний статус.

Параметры

  • id (path) · обяз.Id проекта.

Ответы

  • 200Удалено.
  • 404Проект не найден.
  • 401Не авторизован.
  • 429RATE_LIMIT — лимит записи (Retry-After).
пример
{ "deleted": true, "project_id": "clx…" }
HTTP
DELETE https://api.stillonline.tech/v1/projects/{id}
GET/v1/projects/{id}/checksBearer sk_live_…

Список проверок

Все uptime-проверки проекта, принадлежащего вам.

Параметры

  • id (path) · обяз.Id проекта.

Ответы

  • 200Массив checks.
  • 404Проект не найден.
  • 401Не авторизован.
пример
{
  "checks": [
    {
      "id": "clx…",
      "project_id": "clx…",
      "name": "API",
      "url": "https://api.example.com/health",
      "method": "GET",
      "interval_seconds": 300,
      "enabled": true,
      "last_status": "OPERATIONAL",
      "last_probed_at": "2026-05-27T12:00:00.000Z"
    }
  ]
}
HTTP
GET https://api.stillonline.tech/v1/projects/{id}/checks
POST/v1/projects/{id}/checksBearer sk_live_…

Создать проверку

Добавляет HTTP-проверку. interval_seconds должен соответствовать тарифу (Pro/Ultimate).

Параметры

  • id (path) · обяз.Id проекта.

Тело запроса

url обязателен; name по умолчанию = url; interval_seconds опционален.

JSON
{
  "name": "API",
  "url": "https://api.example.com/health",
  "interval_seconds": 300
}

Ответы

  • 201Созданная check.
  • 403PLAN_LIMIT_CHECKS или PLAN_LIMIT_INTERVAL.
  • 404Проект не найден.
  • 401Не авторизован.
HTTP
POST https://api.stillonline.tech/v1/projects/{id}/checks
PATCH/v1/checks/{id}Bearer sk_live_…

Обновить проверку

Частичное обновление: name, enabled (пауза/возобновление одной URL-проверки), interval_seconds. Кнопки «Запустить»/«Пауза» в кабинете — для всего проекта; пауза одного URL — только через API.

Параметры

  • id (path) · обяз.Id проверки.

Тело запроса

Передавайте только изменяемые поля.

JSON
{
  "enabled": false
}

Ответы

  • 200Обновлённая check (см. enabled и last_status).
  • 400Невалидный JSON (часто из-за кавычек curl -d в Windows PowerShell).
  • 403PLAN_LIMIT_INTERVAL.
  • 404Проверка не найдена.
  • 401Не авторизован.
пример
{
  "check": {
    "id": "clx…",
    "project_id": "clx…",
    "name": "API",
    "url": "https://api.example.com/health",
    "method": "GET",
    "interval_seconds": 300,
    "enabled": false,
    "last_status": "OPERATIONAL",
    "last_probed_at": "2026-05-29T09:57:10.362Z"
  }
}

enabled: false останавливает пробы только по этому URL; остальные проверки проекта работают. В кабинете — бейдж «Пауза» (отдельной кнопки для URL нет).

last_status может остаться OPERATIONAL после паузы — это последний результат до остановки проб, а не текущее «всё ок».

Возобновление: PATCH с {"enabled": true}. Пауза всего проекта — кнопки в кабинете (enabled на всех checks).

Тело запроса — UTF-8 (Content-Type: application/json; charset=utf-8). В PowerShell для кириллицы отправляйте UTF-8 байты — см. /docs/api#windows-powershell.

HTTP
PATCH https://api.stillonline.tech/v1/checks/{id}
DELETE/v1/checks/{id}Bearer sk_live_…

Удалить проверку

Безвозвратно удаляет вашу проверку.

Параметры

  • id (path) · обяз.Id проверки.

Ответы

  • 200Удалено.
  • 404Проверка не найдена.
  • 401Не авторизован.
пример
{ "deleted": true }
HTTP
DELETE https://api.stillonline.tech/v1/checks/{id}
GET/v1/status-pages/{id}Bearer sk_live_…

Получить status page

Метаданные status page: slug, visibility (public/private), связанный проект.

Параметры

  • id (path) · обяз.Id status page.

Ответы

  • 200Объект status_page.
  • 404Не найдено.
  • 401Не авторизован.
пример
{
  "status_page": {
    "id": "clx…",
    "project_id": "clx…",
    "slug": "acme",
    "visibility": "public",
    "project_name": "Acme"
  }
}
HTTP
GET https://api.stillonline.tech/v1/status-pages/{id}
POST/v1/status-pages/{id}/incidentsBearer sk_live_…

Создать инцидент

Открывает ручной инцидент на status page (виден на публичной странице, пока open).

Параметры

  • id (path) · обяз.Id status page.

Тело запроса

Обязателен title.

JSON
{ "title": "Investigating API errors" }

Ответы

  • 201Созданный incident.
  • 404Status page не найдена.
  • 401Не авторизован.
HTTP
POST https://api.stillonline.tech/v1/status-pages/{id}/incidents
GET/v1/incidents/{id}Bearer sk_live_…

Получить инцидент

Один инцидент по id (open или resolved).

Параметры

  • id (path) · обяз.Id инцидента.

Ответы

  • 200Объект incident.
  • 404Не найдено.
  • 401Не авторизован.
пример
{
  "incident": {
    "id": "clx…",
    "status_page_id": "clx…",
    "title": "Investigating API errors",
    "status": "open",
    "started_at": "2026-05-27T12:00:00.000Z",
    "resolved_at": null
  }
}
HTTP
GET https://api.stillonline.tech/v1/incidents/{id}

Машиночитаемая спецификация: openapi.json (те же пути и краткие описания на английском).