CheckBeacon API reference
Everything in the CheckBeacon dashboard is available over a REST API — checks, results, groups, and stats — secured with Bearer token authentication.
- Overview
- Introduction
- Authentication
- Resources
- Checks
- Results
- Groups
- Stats & Health
- Reference
- Errors
- Rate limits
Introduction
The CheckBeacon API lets you create and manage checks, read results, organize checks into groups, and pull dashboard stats — everything available in the web app.
The base URL for all requests is:
https://api.checkbeacon.com/api/v1
All requests and responses use application/json. Authenticated requests must include an Authorization: Bearer <token> header (see Authentication).
Authentication
Log in with your email and password to receive a session token. Include that token as a Bearer token on every subsequent request. Sessions last 8 hours; after that, log in again to get a new token.
Log in
| Method | Path | Description |
|---|---|---|
| POST | /auth/login | Exchange email + password for a session token. |
| POST | /auth/logout | Invalidate the current session token. |
| GET | /auth/me | Return the currently authenticated user. |
POST /auth/login request body:
{
"email": "you@example.com",
"password": "••••••••"
}
Response:
{
"token": "a1b2c3d4e5f6...",
"expires_at": "2026-06-10T18:30:00Z",
"user": {
"id": "usr_123",
"email": "you@example.com",
"role": "admin"
}
}
Use the returned token as a Bearer token on every other request:
Authorization: Bearer a1b2c3d4e5f6...
curl
# Log in and capture the token
curl -X POST https://api.checkbeacon.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "your-password"}'
# Use the token on a subsequent request
curl https://api.checkbeacon.com/api/v1/auth/me \
-H "Authorization: Bearer a1b2c3d4e5f6..."
JavaScript (fetch)
const res = await fetch("https://api.checkbeacon.com/api/v1/auth/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ email: "you@example.com", password: "your-password" })
});
const { token } = await res.json();
// Use the token on a subsequent request
const me = await fetch("https://api.checkbeacon.com/api/v1/auth/me", {
headers: { "Authorization": `Bearer ${token}` }
});
Python (requests)
import requests
base = "https://api.checkbeacon.com/api/v1"
resp = requests.post(f"{base}/auth/login", json={
"email": "you@example.com",
"password": "your-password",
})
token = resp.json()["token"]
headers = {"Authorization": f"Bearer {token}"}
me = requests.get(f"{base}/auth/me", headers=headers)
Checks
Checks are the core resource — each one represents a scheduled API or UI check.
| Method | Path | Description |
|---|---|---|
| GET | /checks | List all checks. |
| POST | /checks | Create a new check. |
| GET | /checks/{id} | Get a single check by ID. |
| PUT | /checks/{id} | Replace a check's configuration. |
| PATCH | /checks/{id} | Partially update a check. |
| DELETE | /checks/{id} | Delete a check. |
| POST | /checks/{id}/run | Run a check immediately, outside its schedule. |
Example: create a new API check.
curl -X POST https://api.checkbeacon.com/api/v1/checks \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Production API health",
"url": "https://api.example.com/health",
"method": "GET",
"expected_status_codes": [200],
"check_interval_minutes": 5
}'
The full payload also accepts optional fields: headers, auth (none / Basic / Bearer / API key header), a request body and content_type, body assertions, regions, and alert_after_consecutive_failures.
Sample response:
{
"id": "chk_8f2a1c",
"name": "Production API health",
"url": "https://api.example.com/health",
"method": "GET",
"expected_status_codes": [200],
"check_interval_minutes": 5,
"alert_after_consecutive_failures": 3,
"regions": ["us-east"],
"status": "healthy",
"created_at": "2026-06-10T12:00:00Z"
}
Results
Results are the recorded outcomes of each check run — status, response time, and timestamp.
| Method | Path | Description |
|---|---|---|
| GET | /checks/{id}/results | Paginated result history. Query params: limit, offset, status, from, to. |
| GET | /checks/{id}/results/latest | The most recent result for a check. |
| GET | /checks/{id}/results/summary | Time-bucketed aggregates. Query params: from, to. |
| GET | /checks/{id}/results/{result_id} | A single result by ID. |
Example: list the most recent unhealthy results for a check.
curl "https://api.checkbeacon.com/api/v1/checks/chk_8f2a1c/results?status=unhealthy&limit=20&offset=0" \
-H "Authorization: Bearer <token>"
Results endpoints return a paginated envelope:
{
"total": 134,
"limit": 20,
"offset": 0,
"items": [
{
"id": "res_91a3",
"check_id": "chk_8f2a1c",
"status": "unhealthy",
"response_time_ms": 842,
"status_code": 503,
"region": "us-east",
"created_at": "2026-06-10T11:55:00Z"
}
]
}
Use /results/summary?from=...&to=... to get time-bucketed response-time and status aggregates for charts.
Groups
Groups organize related checks — for example, all checks for a single service.
| Method | Path | Description |
|---|---|---|
| GET | /groups | List all groups. |
| POST | /groups | Create a new group. |
| GET | /groups/{id} | Get a single group by ID. |
| PUT | /groups/{id} | Update a group. |
| DELETE | /groups/{id} | Delete a group. |
Stats & Health
| Method | Path | Description |
|---|---|---|
| GET | /stats | Dashboard totals — check counts by status, overall uptime, etc. |
| GET | /health | API health/liveness check. |
Errors
The API uses standard HTTP status codes to indicate success or failure.
| Status | Meaning |
|---|---|
200 OK | Request succeeded. |
201 Created | Resource created successfully. |
204 No Content | Request succeeded, no body returned (e.g. after a delete). |
400 Bad Request | The request was malformed or invalid. |
401 Unauthorized | Missing, invalid, or expired Bearer token. |
403 Forbidden | Authenticated, but not allowed to perform this action (e.g. read-only role). |
404 Not Found | The resource doesn't exist or you don't have access to it. |
422 Unprocessable Entity | The request was well-formed but failed validation. |
429 Too Many Requests | You've exceeded the rate limit — back off and retry. |
500 Internal Server Error | Something went wrong on our end. Retry, and contact support if it persists. |
Rate limits
API requests are rate-limited per account to keep the service responsive for everyone. If you exceed the limit, you'll receive a 429 Too Many Requests response — wait and retry with backoff. If your integration needs a higher limit, contact support@checkbeacon.com.