API Reference

A simple read-only REST API for your monitors and their uptime. JSON over HTTPS.

Base URL

https://siteisonline.com/api/v1

Authentication

Create an API key in Integrations, then send it with every request — either as a Bearer token or an X-API-Key header:

curl -H "Authorization: Bearer YOUR_API_KEY" \
     https://siteisonline.com/api/v1/monitors

Requests without a valid key return 401. Keys are stored hashed; treat them like passwords.

Rate limits

Limits are per API key, per minute, and scale with your plan:

PlanRequests / minute
Free60
Pro120
Business300

Every response includes X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (unix time). Exceeding the limit returns 429 with a Retry-After header.

Endpoints

GET/api/v1/account

Your account summary (plan, monitor count).

GET/api/v1/monitors

List all your monitors.

GET/api/v1/monitors/{id}

A single monitor with stats and 30-day uptime.

GET/api/v1/monitors/{id}/checks

Recent check results for a monitor.

Write endpoints (require a read-write key)

API keys have a scope: read (default) or read-write. Choose read-write when generating a key in Integrations to use these. Read-only keys get 403.

POST/api/v1/monitors

Create a monitor. Body: name, url, check_type (http/https/ping/tcp/keyword/dns), optional check_interval, timeout, keyword. Plan limits + public-address checks apply.

PATCH/api/v1/monitors/{id}

Update name, url, check_interval, timeout, keyword or alert_email.

DELETE/api/v1/monitors/{id}

Delete a monitor.

POST/api/v1/monitors/{id}/pause · /resume

Pause or resume checks for a monitor.

Example: create a monitor

curl -X POST -H "Authorization: Bearer YOUR_RW_KEY" \
     -H "Content-Type: application/json" \
     -d '{"name":"My Site","url":"https://example.com","check_type":"https"}' \
     https://siteisonline.com/api/v1/monitors

Example response

{
  "data": [
    {
      "id": 123,
      "name": "My Website",
      "url": "https://example.com",
      "check_type": "https",
      "is_up": true,
      "uptime_percentage": 99.98,
      "average_response_time": 184,
      "last_check_at": "2026-06-11 09:15:00"
    }
  ]
}

Errors

Errors use a consistent shape and standard HTTP status codes:

{ "error": "Invalid or missing API key." }
StatusMeaning
200OK
401Missing or invalid API key
404Resource not found
429Rate limit exceeded (see Retry-After)

Questions or feedback on the API? Get in touch.