Access your monitors and check results programmatically using the ProMonitor REST API.
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:
API keys start with pm_ and are shown only once at creation. Store them securely.
All endpoints are prefixed with /api/v1.
Requests are rate-limited per user based on your plan:
| Plan | Requests | Window |
|---|---|---|
| Free | 2 | per minute |
| Pro | 50 | per minute |
| Team | 500 | per minute |
Every response includes rate limit headers:
When the limit is exceeded, the API returns 429 Too Many Requests with a Retry-After header (in seconds).
The API uses standard HTTP status codes. Error responses include a JSON body:
| Code | Meaning |
|---|---|
200 | Success |
401 | Missing or invalid API key |
404 | Monitor not found or not owned by you |
429 | Rate limit exceeded |
500 | Internal server error |
/api/v1/monitors
List all monitors belonging to the authenticated user, ordered by creation date (newest first).
200 OK/api/v1/monitors/:id
Get details for a single monitor by its UUID.
| Parameter | Type | Description |
|---|---|---|
id | UUID | Monitor ID |
200 OK/api/v1/monitors/:id/checks
Get the most recent check results for a monitor (up to 100 results, newest first).
| Parameter | Type | Description |
|---|---|---|
id | UUID | Monitor ID |
200 OK| Field | Type | Description |
|---|---|---|
id | UUID | Unique monitor identifier |
name | string | Display name |
url | string | Target URL or host |
kind | string | http, tcp, ping, or ssl |
status | string | up, down, or pending |
interval_seconds | integer | Check interval in seconds |
is_paused | boolean | Whether monitoring is paused |
created_at | string | ISO 8601 timestamp |
| Field | Type | Description |
|---|---|---|
id | UUID | Unique check identifier |
status_code | integer? | HTTP status code (null for non-HTTP monitors) |
response_time_ms | integer | Response time in milliseconds |
is_up | boolean | Whether the check passed |
error_message | string? | Error details (null when up) |
checked_at | string | ISO 8601 timestamp |