← StillOnline

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

REST API

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

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

Публичный API

Чтение статуса открытой страницы — без авторизации. Приватные страницы возвращают 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" | "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_*); 429 — rate limit на публичном endpoint.

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

Проверка API

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

Ответы

  • 200Сервис отвечает.
пример
{
  "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-ключ.
пример
{
  "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
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 или interval_seconds.

Параметры

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

Тело запроса

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

JSON
{
  "enabled": false,
  "interval_seconds": 300
}

Ответы

  • 200Обновлённая check.
  • 403PLAN_LIMIT_INTERVAL.
  • 404Проверка не найдена.
  • 401Не авторизован.
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 (те же пути и краткие описания на английском).