Liveness — is the process up?
Touches no dependencies and never fails while the process can answer. Unversioned and un-enveloped on purpose, so a load balancer gets a stable, standard contract. Use it for restart decisions, not for traffic decisions.
Response Body
application/json
application/json
curl -X GET "https://example.com/health"API root — service metadata
A cheap, unauthenticated way to confirm you are pointed at the right host and to read back the API version. Not a health check — use /health for that.
Readiness — are dependencies reachable?
Checks Postgres. Answers 503 when a dependency is down, which is the signal to stop sending this instance traffic without restarting it. Cache status rides along in the payload but never fails the probe — it is an optimisation, not a dependency. Queue depths ride along the same way: the API only ever produces, so a broker outage defers work rather than breaking a request. The process that cannot run without a broker is tone-worker, which refuses to boot instead of reporting here.