Endpoint
GET /api/healthOpen, no auth. Returns JSON with subsystem status:
{
"ok": true,
"version": "1.0.3",
"uptime_seconds": 86400,
"db": { "ok": true, "size_bytes": 12345678 },
"cron": { "ok": true, "last_tick_ms_ago": 22000 },
"queue": { "ok": true, "pending": 0, "running": 0 }
}Use cases
- Load balancer probe: the Docker image's healthcheck and Railway's deploy-readiness probe both hit this.
- Uptime monitor: hit it from BetterStack / Pingdom / UptimeRobot every minute. Alert on non-200 or
ok: false. - Self-diagnostic: the dashboard's diagnostics page renders this same data with timestamps.
What "ok" means
- db.ok — SQLite is reachable and a trivial SELECT succeeds.
- cron.ok — last cron tick was less than 90 seconds ago.
- queue.ok — no jobs stuck in
runningfor over 15 minutes.
Top-level ok is true only if all three subsystems are ok.
Don't use this on the public internet without rate limiting
Health endpoints are unauthenticated by design — but if exposed on a public URL with no rate limit, they can leak DB size hints to anyone curious. Front the host with a reverse proxy that rate-limits the path.