Управление мониторингами через код
Мониторинг доступности без задержек — создавайте, обновляйте и удаляйте мониторы через 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.
/monitors
Возвращает список всех мониторов аккаунта. Поддерживает пагинацию через параметры ?page=1&limit=50.
Доступные фильтры: ?status=up, ?type=http, ?tag=production. По умолчанию возвращается до 20 записей.
/monitors
Создаёт новый монитор. Обязательные поля: name, url, type, interval.
Типы мониторов: http, ping, dns, tcp. Интервал проверки задаётся в секундах (минимум 30, максимум 86400).
/monitors/:id
Обновляет параметры существующего монитора. Передайте только те поля, которые необходимо изменить — остальные сохранятся без изменений.
ID монитора имеет формат mon_3f8a1c7e9d2b. При изменении interval следующая проверка начнётся с новым интервалом.
/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 запросов в минуту на ключ. Повторите запрос после задержки.