Operational
Health Check
Liveness + readiness probes for monitoring Signa from your side
GET
Overview
Three unauthenticated endpoints power customer-side uptime monitoring:| Endpoint | Purpose | Latency (origin-side) |
|---|---|---|
GET /v1/health | Customer-facing liveness alias under the /v1 prefix. | < 5 ms |
GET /health/live | Container orchestrator + load balancer liveness — process is up. | < 5 ms |
GET /health/ready | Readiness — database + cache + search index reachable. | 50–200 ms |
/v1/health and /health/live are aliases — both return { "status": "ok" }
with HTTP 200 if the API process is alive. /health/ready performs three
real probes and surfaces dependency status with per-dep latency.
All three skip authentication by design (PUBLIC_PATH_RE in the auth
middleware). They cost no API quota and produce no request log entries.
Authentication
None. These endpoints are intended for customer monitoring agents (Datadog, Pingdom, your own cron job) that should not handle API keys.Suggested poll interval
60 seconds. More frequent polling adds noise without improving signal — internal load-balancer health checks already cover the sub-minute window from inside our network. For Datadog Synthetics or similar SaaS monitors, 60s is also the cheapest billing tier.Response: GET /v1/health (and /health/live)
Response: GET /health/ready
One of:
ok— all three dependencies reachable.degraded— non-critical dep down (cache or search index). API still serves most requests; some features (rate-limit cache, search) may error individually.unhealthy— database unreachable. API cannot serve most requests. Returns HTTP 503.shutting_down— task is draining for a graceful stop. Returns HTTP 503 so load balancers route around it.
Always
"core-api".Process uptime in milliseconds.
SLA
/health/ready reflects API + DB + cache + search readiness. It does
NOT reflect:
- Message queue health (used by event delivery) — those
have separate Datadog dashboards customers don’t see. If your watches
stop firing alerts but
/health/readyisok, that’s a sign of an ingestion or evaluator-side incident, not an API outage. - Specific office-connector health (e.g. USPTO TSDR). Connector outages
surface as stale
last_relevant_sync_run.completed_atin the watch diagnostics response, not via/health/ready. - Webhook receiver health. That’s by definition on your side.
Examples
See also
- Uptime monitoring guide — recipes for Datadog, Pingdom, and DIY cron-based monitoring.
- Troubleshooting — what to check
when alerts stop firing despite
/health/readybeingok.