Skip to main content
GET

Overview

Three unauthenticated endpoints support customer-side uptime monitoring: /v1/health and /health/live are aliases: both return { "status": "ok" } with HTTP 200 whenever the API process is alive. /health/ready runs three real dependency checks and returns per-dependency status and latency. None of the three require an API key or count against any quota or rate limit.

Suggested poll interval

60 seconds. More frequent polling adds noise without improving signal.

Response: GET /v1/health (and /health/live)

Always 200 if the process is running. If the process is down you get a connection error or a 5xx from the load balancer instead.

Response: GET /health/ready

string
One of:
  • ok: all three dependencies reachable.
  • degraded: a non-critical dependency (cache or search index) is down. The API still serves most requests; some features (search, rate-limit headers) may error individually.
  • unhealthy: the database is unreachable. The API cannot serve most requests. Returns HTTP 503.
  • shutting_down: the task is draining for a graceful stop. Returns HTTP 503 so load balancers route around it.
string
Always "core-api".
integer
Process uptime in milliseconds.
object

What this endpoint does not cover

/health/ready reflects API, database, cache, and search readiness. It does not reflect:
  • Alert delivery. If your watches stop firing alerts but /health/ready is ok, that’s a sign of a data-sync or evaluation issue, not an API outage. See Troubleshooting.
  • A specific office’s data freshness (e.g. USPTO). Poll GET /v1/offices and check each office’s last successful sync instead.
  • Your webhook receiver. That’s on your side by definition.

Examples

See also