Alert24 exposes read-only healthcheck endpoints that return an HTTP status code based on your monitors' current state. Point any third-party monitoring tool at these URLs — no JSON parsing required.
- 200 OK — the check is up
- 503 Service Unavailable — the check is down or degraded
How it works
These endpoints read the last known status from your existing monitoring checks. They do not trigger a new check run and do not consume check credits. Freshness is surfaced via the X-Alert24-Checked-At response header.
Note: These endpoints depend on Alert24 being operational. If Alert24 is unreachable, a third-party monitor will report a failure — which could mask or conflate a real outage on your end. Use these as a convenience layer on top of Alert24's direct alerting, not as a replacement for it.
Authentication
The API key is embedded in the URL path so that dumb monitors that only accept a plain URL (no custom headers) work out of the box. Use the same API keys you generate under Settings → API Keys.
GET https://app.alert24.net/api/healthcheck/{apiKey}/{checkId}
GET https://app.alert24.net/api/healthcheck/{apiKey}
Single check
GET /api/healthcheck/{apiKey}/{checkId}
Returns 200 if the specified check is up, 503 if it is down or degraded. Checks in any other state (unknown, pending) return 200.
Example
curl -i https://app.alert24.net/api/healthcheck/ak_live_YOUR_KEY/chk_01abc123def456
Response — healthy (200 OK)
{
"status": "ok",
"check": {
"id": "chk_01abc123def456",
"name": "Production API",
"current_status": "up",
"last_check_at": "2026-05-28T14:32:00Z",
"last_response_time_ms": 142
},
"checked_at": "2026-05-28T14:33:01Z"
}
Response — unhealthy (503 Service Unavailable)
{
"status": "down",
"check": {
"id": "chk_01abc123def456",
"name": "Production API",
"current_status": "down",
"last_check_at": "2026-05-28T14:32:00Z",
"last_response_time_ms": null
},
"checked_at": "2026-05-28T14:33:01Z"
}
Find your check ID
You can find a check's ID via Monitoring → [check name] in the app, or via the Monitoring Checks API:
curl https://app.alert24.net/api/v1/monitoring \
-H "Authorization: Bearer ak_live_YOUR_KEY"
Org-wide healthcheck
GET /api/healthcheck/{apiKey}
Returns 200 if all active checks are up, 503 if any are down or degraded. Paused or disabled checks are excluded from evaluation.
Example
curl -i https://app.alert24.net/api/healthcheck/ak_live_YOUR_KEY
Response — all healthy (200 OK)
{
"status": "ok",
"summary": {
"total": 8,
"up": 8,
"down": 0,
"degraded": 0,
"unknown": 0
},
"checked_at": "2026-05-28T14:33:01Z"
}
Response — one or more unhealthy (503 Service Unavailable)
{
"status": "degraded",
"summary": {
"total": 8,
"up": 6,
"down": 1,
"degraded": 1,
"unknown": 0
},
"unhealthy": [
{
"id": "chk_01abc123def456",
"name": "Production API",
"current_status": "down",
"last_check_at": "2026-05-28T14:32:00Z"
},
{
"id": "chk_02xyz789ghi012",
"name": "Checkout Service",
"current_status": "degraded",
"last_check_at": "2026-05-28T14:31:45Z"
}
],
"checked_at": "2026-05-28T14:33:01Z"
}
Response headers
| Header | Description |
|---|---|
X-Alert24-Checked-At |
ISO 8601 timestamp of the last actual check run |
Cache-Control |
Always no-store |
Third-party monitor setup
UptimeRobot
- Create a new monitor → HTTP(s)
- Set the URL to
https://app.alert24.net/api/healthcheck/ak_live_YOUR_KEY/YOUR_CHECK_ID - Leave keyword matching off — UptimeRobot evaluates the HTTP status code automatically
Freshping
- Add a check → Website
- Paste the healthcheck URL
- Leave alert threshold at default (non-2xx = alert)
Datadog Synthetics
- Create an API test
- Set the URL and add an assertion: Status code → is →
200
Grafana / Prometheus Blackbox Exporter
- job_name: alert24_healthcheck
metrics_path: /probe
params:
module: [http_2xx]
static_configs:
- targets:
- https://app.alert24.net/api/healthcheck/ak_live_YOUR_KEY/YOUR_CHECK_ID
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: blackbox-exporter:9115
Rate limits
Healthcheck endpoints share the same rate limit as read API requests: 60 requests per minute per API key. For monitors polling more frequently than once per minute, create a dedicated API key scoped to read.
Status codes
| HTTP status | Meaning |
|---|---|
200 |
Check is up (or in unknown/pending state) |
401 |
API key is invalid, expired, or revoked |
404 |
Check ID not found or does not belong to your organization |
429 |
Rate limit exceeded |
503 |
Check is down or degraded |