Site Detection API
A token-authenticated REST API to manage your website monitors and read uptime, incidents, and check history. Included on every paid plan.
Base URL
https://sitedetection.com/api/v1
Authentication
Create a key under Profile → API keys in your Site Detection account. Send it as a bearer token on every request. Keys are read-only or read & write; the plaintext is shown once at creation, so store it securely. Use keys server-side only.
curl https://sitedetection.com/api/v1/monitors \
-H "Authorization: Bearer sd_live_your_token_here"
GET. Creating, changing, or deleting monitors requires a read & write key.Rate limits
Requests are limited per key, per minute, based on your plan. Over the limit returns 429 with a Retry-After header.
| Plan | Requests / minute |
|---|---|
| Trial | 30 |
| Starter | 60 |
| Growth | 120 |
| Pro | 300 |
| Enterprise | 1000 |
Endpoints
List your monitors (active, paused and archived).
Create a monitor. Body: url (required), name, interval_seconds (clamped to your plan's minimum). Respects your plan's monitor limit.
curl -X POST https://sitedetection.com/api/v1/monitors \
-H "Authorization: Bearer sd_live_..." \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","name":"Example"}'
Get one monitor.
Update a monitor. Body may include name, interval_seconds, paused (bool), archived (bool).
curl -X PATCH https://sitedetection.com/api/v1/monitors/{id} \
-H "Authorization: Bearer sd_live_..." \
-H "Content-Type: application/json" \
-d '{"paused":true}'
Delete a monitor and its history permanently.
List detected incidents for a monitor (most recent first).
Recent check results (up/down, status code, response time). limit up to 500.
Your plan, monitor usage/limit, and API rate limit.
Responses & errors
All responses are JSON. Errors use standard HTTP status codes with an error message:
| Code | Meaning |
|---|---|
| 200 / 201 | Success |
| 401 | Missing / invalid / revoked token |
| 403 | Read-only key used for a write, or plan limit reached |
| 404 | Monitor not found (or not yours) |
| 422 | Invalid request body |
| 429 | Rate limit exceeded |