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

GET/status

Account 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
GET/monitors

List 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
POST/monitors

Create 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
GET/monitors/:id

Full 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
PATCH/monitors/:id

Update 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
DELETE/monitors/:id

Delete 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
POST/monitors/:id/check

Trigger 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:

CodeHTTPMeaning
unauthorized401Missing, malformed, or revoked API key.
validation_error400A field failed validation — the message says which.
not_found404No monitor with that id on your account.
limit_reached403Free plan allows 50 monitors.
rate_limited429Over 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:

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.