← Back to Dashboard

API Documentation

Access your monitors and check results programmatically using the ProMonitor REST API.

Authentication

All API requests require authentication via a Bearer token. Create an API key from your Account → API Keys page.

Include your key in the Authorization header:

$ curl -H "Authorization: Bearer pm_your_key_here" https://promonitor.eu/api/v1/monitors

API keys start with pm_ and are shown only once at creation. Store them securely.

Base URL

https://promonitor.eu

All endpoints are prefixed with /api/v1.

Rate Limits

Requests are rate-limited per user based on your plan:

Plan Requests Window
Free2per minute
Pro50per minute
Team500per minute

Every response includes rate limit headers:

X-RateLimit-Limit: 50
X-RateLimit-Remaining: 48

When the limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header (in seconds).

Error Handling

The API uses standard HTTP status codes. Error responses include a JSON body:

Code Meaning
200Success
401Missing or invalid API key
404Monitor not found or not owned by you
429Rate limit exceeded
500Internal server error

Endpoints

GET /api/v1/monitors

List all monitors belonging to the authenticated user, ordered by creation date (newest first).

Example Request

$ curl -H "Authorization: Bearer pm_your_key" https://promonitor.eu/api/v1/monitors

Response 200 OK

[ { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Production API", "url": "https://api.example.com/health", "kind": "http", "status": "up", "interval_seconds": 60, "is_paused": false, "created_at": "2025-01-15T10:30:00Z" } ]
GET /api/v1/monitors/:id

Get details for a single monitor by its UUID.

Path Parameters

ParameterTypeDescription
idUUIDMonitor ID

Example Request

$ curl -H "Authorization: Bearer pm_your_key" \
  https://promonitor.eu/api/v1/monitors/a1b2c3d4-e5f6-7890-abcd-ef1234567890

Response 200 OK

{ "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Production API", "url": "https://api.example.com/health", "kind": "http", "status": "up", "interval_seconds": 60, "is_paused": false, "created_at": "2025-01-15T10:30:00Z" }
GET /api/v1/monitors/:id/checks

Get the most recent check results for a monitor (up to 100 results, newest first).

Path Parameters

ParameterTypeDescription
idUUIDMonitor ID

Example Request

$ curl -H "Authorization: Bearer pm_your_key" \
  https://promonitor.eu/api/v1/monitors/a1b2c3d4-e5f6-7890-abcd-ef1234567890/checks

Response 200 OK

[ { "id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321", "status_code": 200, "response_time_ms": 142, "is_up": true, "error_message": null, "checked_at": "2025-01-15T11:00:00Z" }, { "id": "e2d3c4b5-a6f7-8901-edcb-a09876543210", "status_code": null, "response_time_ms": 5000, "is_up": false, "error_message": "Connection timed out", "checked_at": "2025-01-15T10:55:00Z" } ]

Response Field Reference

Monitor Object

FieldTypeDescription
idUUIDUnique monitor identifier
namestringDisplay name
urlstringTarget URL or host
kindstringhttp, tcp, ping, or ssl
statusstringup, down, or pending
interval_secondsintegerCheck interval in seconds
is_pausedbooleanWhether monitoring is paused
created_atstringISO 8601 timestamp

Check Result Object

FieldTypeDescription
idUUIDUnique check identifier
status_codeinteger?HTTP status code (null for non-HTTP monitors)
response_time_msintegerResponse time in milliseconds
is_upbooleanWhether the check passed
error_messagestring?Error details (null when up)
checked_atstringISO 8601 timestamp