REST API
JSON over HTTPS. Available on Starter and above.
Authentication
Create a key under Settings → API keys. It is shown once. Send it as a bearer token:
curl https://voltping.com/api/v1/monitors \ -H "Authorization: Bearer wp_your_key_here"
Keys are scoped to one workspace. Revoking a key takes effect immediately.
Endpoints
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/status | Workspace summary: counts, uptime, open incidents. |
| GET | /api/v1/monitors | List monitors. Filter with ?state=down or ?client=12. |
| POST | /api/v1/monitors | Create a monitor. |
| GET | /api/v1/monitors/{id} | Fetch one monitor. |
| PATCH | /api/v1/monitors/{id} | Update fields. Send only what changes. |
| DELETE | /api/v1/monitors/{id} | Delete a monitor and its history. |
| GET | /api/v1/monitors/{id}/checks | Recent raw checks. |
| GET | /api/v1/monitors/{id}/uptime | Daily uptime. ?days=90. |
| GET | /api/v1/incidents | Incidents. ?open=1 for current ones. |
| GET | /api/v1/clients | List clients. |
Creating a monitor
curl -X POST https://voltping.com/api/v1/monitors \
-H "Authorization: Bearer wp_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Northgate Dental",
"url": "https://northgatedental.co.uk",
"kind": "http",
"client_id": 12,
"interval_seconds": 60,
"keyword": "Book an appointment"
}'
Only url is required. name defaults to the hostname, kind to http, and interval_seconds to the fastest your plan allows.
confirm_regions sets how many checking locations must agree before the
monitor is called down. It defaults to 1, and never asks for more
locations than are currently reporting.
Errors
Errors return the matching HTTP status and a body of the shape:
{ "error": { "code": "plan_required", "message": "..." } }
| 401 | Missing or invalid key. |
| 402 | Your plan doesn't include this. Upgrade or reduce usage. |
| 404 | No such resource in this workspace. |
| 422 | The request was understood but a field was invalid. The message says which. |