REST API

Healthcheck Endpoints

Use Alert24 as a healthcheck URL source for UptimeRobot, Freshping, Datadog, and other third-party monitoring tools.

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

  1. Create a new monitor → HTTP(s)
  2. Set the URL to https://app.alert24.net/api/healthcheck/ak_live_YOUR_KEY/YOUR_CHECK_ID
  3. Leave keyword matching off — UptimeRobot evaluates the HTTP status code automatically

Freshping

  1. Add a check → Website
  2. Paste the healthcheck URL
  3. Leave alert threshold at default (non-2xx = alert)

Datadog Synthetics

  1. Create an API test
  2. Set the URL and add an assertion: Status codeis200

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