API documentation
Automate everything the dashboard can do — create monitors, pull status and uptime, trigger checks. REST, JSON, one header for auth.
Authentication
Generate a key at Dashboard → API. Send it on every request as a Bearer token. Keys are shown once at creation and can be revoked anytime. Rate limit: 600 requests per minute per key.
Authorization: Bearer upm_live_...
Base URL
https://uptime-monitor.simplebusinesssuite.com/api/v1
Endpoints
/statusAccount rollup — how many monitors are up, down, in warning, paused, or still pending their first check.
curl -H "Authorization: Bearer $KEY" \ https://uptime-monitor.simplebusinesssuite.com/api/v1/status
/monitorsList all your monitors with live status, 24-hour uptime, and the last check result.
curl -H "Authorization: Bearer $KEY" \ https://uptime-monitor.simplebusinesssuite.com/api/v1/monitors
/monitorsCreate a monitor. Same validation as the dashboard form — type is one of http, ping, port, heartbeat, ssl, domain, dns; SSL, domain and DNS accept only interval_min: 1440 (daily). Returns 201 with the new monitor.
curl -X POST -H "Authorization: Bearer $KEY" \ \
-H "Content-Type: application/json" \
-d '{"name":"Homepage","type":"http","url":"https://example.com","interval_min":5}' \
https://uptime-monitor.simplebusinesssuite.com/api/v1/monitors/monitors/:idFull detail for one monitor — status, uptime for 24h / 7d / 30d, the 50 most recent checks, and recent incidents.
curl -H "Authorization: Bearer $KEY" \ https://uptime-monitor.simplebusinesssuite.com/api/v1/monitors/123
/monitors/:idUpdate a monitor's name, interval_min, or active flag (false pauses it, true resumes it). Only the fields you send are changed.
curl -X PATCH -H "Authorization: Bearer $KEY" \ \
-H "Content-Type: application/json" \
-d '{"active":false}' \
https://uptime-monitor.simplebusinesssuite.com/api/v1/monitors/123/monitors/:idDelete a monitor and its history. Returns 204 with no body.
curl -X DELETE -H "Authorization: Bearer $KEY" \ https://uptime-monitor.simplebusinesssuite.com/api/v1/monitors/123
/monitors/:id/checkTrigger an immediate check outside the schedule — at most one per minute per account. Returns the fresh check result.
curl -X POST -H "Authorization: Bearer $KEY" \ https://uptime-monitor.simplebusinesssuite.com/api/v1/monitors/123/check
Example response
GET /monitors returns your monitors with their current state:
{
"monitors": [
{
"id": 12,
"name": "Homepage",
"type": "http",
"target": "https://example.com",
"interval_min": 5,
"active": true,
"status": "up",
"uptime_24h": 100,
"last_check_at": 1759612800000,
"last_response_ms": 184
}
]
}
status is one of up, down, warn (SSL/domain nearing expiry), paused, or pending (no checks yet).
Errors
Errors always come back as JSON with an error code and a human-readable message:
| Code | HTTP | Meaning |
|---|---|---|
unauthorized | 401 | Missing, malformed, or revoked API key. |
validation_error | 400 | A field failed validation — the message says which. |
not_found | 404 | No monitor with that id on your account. |
limit_reached | 403 | Free plan allows 50 monitors. |
rate_limited | 429 | Over the per-key rate limit, or a manual check inside the 1-minute throttle. |
{
"error": "validation_error",
"message": "Invalid check interval for this monitor type."
}
Model Context Protocol (MCP)
Prefer to just ask? Your AI assistant can manage monitors for you. The MCP server lives at POST /mcp (Streamable HTTP) and uses the same API keys as the REST API. Seven tools:
- list_monitors — all monitors with live status and 24h uptime
- get_status — account rollup: counts by status
- get_monitor — full detail: uptime 24h/7d/30d, 50 recent checks, incidents
- create_monitor — add a monitor ("ping 8.8.8.8 every 15 minutes")
- update_monitor — rename, change interval, pause / resume
- delete_monitor — remove a monitor and its history
- trigger_check — run an on-demand check
1. Get an API key
Generate one on the API keys page — copy it once, it is never shown again.
2. Connect your AI client
Claude Desktop (easiest) — open Settings → Connectors → Add custom connector, paste https://uptime-monitor.simplebusinesssuite.com/mcp, and enter your API key when prompted.
Claude Desktop (config file) — the config file only runs local servers, so it reaches ours through a small bridge called mcp-remote. Add this to claude_desktop_config.json under mcpServers, then fully quit and restart the app:
{
"mcpServers": {
"uptime-monitor": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://uptime-monitor.simplebusinesssuite.com/mcp",
"--header",
"Authorization: Bearer upm_live_..."
]
}
}
}
Windows note — if the server fails with 'C:Program' is not recognized, Node is installed in a path with spaces. Run it through cmd instead:
{
"mcpServers": {
"uptime-monitor": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"mcp-remote",
"https://uptime-monitor.simplebusinesssuite.com/mcp",
"--header",
"Authorization: Bearer upm_live_..."
]
}
}
}
Claude Code — run this in your terminal:
claude mcp add --transport http uptime-monitor \ https://uptime-monitor.simplebusinesssuite.com/mcp \ --header "Authorization: Bearer upm_live_..."
Cursor, VS Code & other MCP clients — these speak HTTP natively, so add it directly:
{
"mcpServers": {
"uptime-monitor": {
"url": "https://uptime-monitor.simplebusinesssuite.com/mcp",
"headers": { "Authorization": "Bearer upm_live_..." }
}
}
}
3. Ask away
“Which of my monitors are down?”, “Add a ping monitor for 8.8.8.8 every 15 minutes”, “Pause the staging monitor” — your assistant calls the tools directly.