System: Operational Start Free
API Reference

Управление мониторингами через код

Мониторинг доступности без задержек — создавайте, обновляйте и удаляйте мониторы через REST API

Аутентификация

Все запросы к API PingKit требуют аутентификацию через API-ключ. Ключ передаётся в заголовке X-PingKit-Key каждого запроса.

Получите ваш API-ключ в личном кабинете на странице Settings → API Access. Ключи имеют формат pk_live_8xK2mN9vQr4wLpYz для production-окружения и pk_test_ для sandbox.

Каждый ключ привязан к одному аккаунту и не поддерживает кросс-аккаунтный доступ. При компрометации ключа немедленно деактивируйте его в панели управления и сгенерируйте новый.

Endpoints

Базовый URL: https://api.pingkit.io/v1. Все ответы возвращаются в формате JSON.

GET

/monitors

Возвращает список всех мониторов аккаунта. Поддерживает пагинацию через параметры ?page=1&limit=50.

Доступные фильтры: ?status=up, ?type=http, ?tag=production. По умолчанию возвращается до 20 записей.

POST

/monitors

Создаёт новый монитор. Обязательные поля: name, url, type, interval.

Типы мониторов: http, ping, dns, tcp. Интервал проверки задаётся в секундах (минимум 30, максимум 86400).

PUT

/monitors/:id

Обновляет параметры существующего монитора. Передайте только те поля, которые необходимо изменить — остальные сохранятся без изменений.

ID монитора имеет формат mon_3f8a1c7e9d2b. При изменении interval следующая проверка начнётся с новым интервалом.

DELETE

/monitors/:id

Удаляет монитор и все связанные данные за последние 90 дней. Операция необратима — история статусов, алерты и уведомления удаляются полностью.

Перед удалением рекомендуется экспортировать историю через GET /monitors/:id/history.

Примеры запросов

Готовые примеры на cURL и Python для быстрого старта.

cURL — создать монитор

curl -X POST https://api.pingkit.io/v1/monitors \
  -H "Content-Type: application/json" \
  -H "X-PingKit-Key: pk_live_8xK2mN9vQr4wLpYz" \
  -d '{
    "name": "Production API Gateway",
    "url": "https://api.example.com/health",
    "type": "http",
    "interval": 60,
    "tags": ["production", "api"],
    "expected_status": 200,
    "alert_email": "ops@example.com"
  }'

Ответ: {"id": "mon_3f8a1c7e9d2b", "status": "active"}

cURL — получить список

curl -X GET "https://api.pingkit.io/v1/monitors?page=1&limit=10" \
  -H "X-PingKit-Key: pk_live_8xK2mN9vQr4wLpYz"

Ответ содержит массив мониторов с полями id, name, status, last_check, uptime_24h.

cURL — обновить интервал

curl -X PUT https://api.pingkit.io/v1/monitors/mon_3f8a1c7e9d2b \
  -H "Content-Type: application/json" \
  -H "X-PingKit-Key: pk_live_8xK2mN9vQr4wLpYz" \
  -d '{
    "interval": 30
  }'

cURL — удалить монитор

curl -X DELETE https://api.pingkit.io/v1/monitors/mon_3f8a1c7e9d2b \
  -H "X-PingKit-Key: pk_live_8xK2mN9vQr4wLpYz"

Ответ: {"deleted": true, "id": "mon_3f8a1c7e9d2b"}

Python — создать монитор

import requests

API_KEY = "pk_live_8xK2mN9vQr4wLpYz"
BASE_URL = "https://api.pingkit.io/v1"

headers = {
    "Content-Type": "application/json",
    "X-PingKit-Key": API_KEY
}

payload = {
    "name": "Staging Database",
    "url": "tcp://db-staging.example.com:5432",
    "type": "tcp",
    "interval": 120,
    "tags": ["staging", "database"]
}

response = requests.post(
    f"{BASE_URL}/monitors",
    headers=headers,
    json=payload
)

monitor = response.json()
print(f"Created: {monitor['id']}")

Python — получить и отфильтровать

import requests

API_KEY = "pk_live_8xK2mN9vQr4wLpYz"
BASE_URL = "https://api.pingkit.io/v1"

headers = {"X-PingKit-Key": API_KEY}

params = {
    "page": 1,
    "limit": 50,
    "status": "down"
}

response = requests.get(
    f"{BASE_URL}/monitors",
    headers=headers,
    params=params
)

monitors = response.json()["data"]
for m in monitors:
    print(f"{m['name']}: {m['status']} "
          f"(uptime 24h: {m['uptime_24h']}%)")

Коды ответов

API возвращает стандартные HTTP-статусы. Ниже — основные коды и их значения.

200 OK

Запрос выполнен успешно. Для GET-запросов возвращается тело с данными.

201 Created

Ресурс создан. Тело ответа содержит ID нового монитора.

401 Unauthorized

API-ключ недействителен или отсутствует. Проверьте заголовок X-PingKit-Key.

429 Too Many Requests

Превышен лимит запросов: 100 запросов в минуту на ключ. Повторите запрос после задержки.