API

Read live status and history as JSON. Results come from stored checks, so requests are fast and cheap. You need a key: create one free.

Try it

curl https://deadoralive.site/api/v1/sites/x \
  -H "Authorization: Bearer dk_live_your_key"

You can also send the key as an X-API-Key header. The response looks like this:

{
  "slug": "x",
  "name": "X",
  "domain": "x.com",
  "group": "social",
  "status": "up",
  "status_label": "Up",
  "response_ms": 412,
  "http_status": 200,
  "last_checked": "2026-09-30T12:41:07.120Z",
  "state_since": "2026-09-29T08:02:11.400Z",
  "uptime": { "24h": 100, "7d": 99.94, "30d": 99.97, "90d": 99.96 }
}

Endpoints

GET /api/v1/sites
Every monitored site with its current status. Filter with ?group= or ?status=up|degraded|down|unverified.
GET /api/v1/sites/{slug}
One site, with uptime over 24 hours, 7, 30 and 90 days.
GET /api/v1/sites/{slug}/history
Response times and outages. ?range=24h (10 minute points), 7d (hourly) or 90d (daily uptime).
GET /api/v1/groups
The groups and which sites belong to each.
GET /api/v1/incidents
Recent outages, newest first.

The machine-readable spec is at /api/v1/openapi.json. It needs no key.

Adult sites are left out unless you add ?include_adult=true.

Statuses

up, degraded (slow), down, and unverified (the site blocked our check). Read how it works before building alerts on unverified.

Limits

Free keys: 30 requests a minute, 1,000 a day, 2 keys per account. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Over the limit you get 429 with a Retry-After header. Need more? Higher plans are coming.

Errors

Errors are JSON with an error code and a message: missing_api_key and invalid_api_key (401), not_found (404), rate_limited and quota_exceeded (429).