Manage your Waklio monitors from scripts, CI pipelines or infrastructure tools. All requests and responses are JSON.
Create an API key under Settings → API keys and send it as a bearer token:
curl https://www.waklio.com/api/v1/monitors \ -H "Authorization: Bearer upt_your_key"
Limit: 120 requests per minute per key. Errors return { "error": "…" } with a 4xx status.
GET /api/v1/monitors
{ "data": [ { "id": "…", "name": "Shop", "type": "http", "status": "up",
"url": "https://shop.example.com", "intervalSeconds": 60,
"uptime24h": 100, "lastResponseTimeMs": 182, … } ] }POST /api/v1/monitors
Content-Type: application/json
{ "name": "Shop", "type": "http", "url": "https://shop.example.com", "intervalSeconds": 60 }Fields by type:
http: url, optional method (GET/HEAD/POST), expectedStatus (e.g. "200-299"), timeoutSecondskeyword: like http plus keyword and keywordMode ("exists" = alert when missing, "not_exists" = alert when found)ssl: url (host), optional sslExpiryDaysheartbeat: optional graceSeconds; the response contains your heartbeatUrlport: url (host name) and port, optional timeoutSecondsdns: url (host name), optional dnsRecordType (A, AAAA, CNAME, MX, TXT, NS) and dnsExpectedAll types: name, intervalSeconds (30–86400, at least your plan's minimum) and optional channelIds (defaults to all alert channels). Returns 201 with the monitor.
GET /api/v1/monitors/:id # includes uptime24h / 7d / 30d PATCH /api/v1/monitors/:id # send only the fields to change DELETE /api/v1/monitors/:id # 204 POST /api/v1/monitors/:id/pause POST /api/v1/monitors/:id/resume GET /api/v1/monitors/:id/incidents?limit=50
GET /api/v1/alert-channels
{ "data": [ { "id": "…", "name": "On-call", "type": "slack", "createdAt": "…" } ] }curl -X POST https://www.waklio.com/api/v1/monitors/$MONITOR_ID/pause -H "Authorization: Bearer $KEY" ./deploy.sh curl -X POST https://www.waklio.com/api/v1/monitors/$MONITOR_ID/resume -H "Authorization: Bearer $KEY"