---
title: "Health Check"
method: GET
path: "/health"
---

# Health Check

`GET /health`

## Request

- Base URL: `https://api.empiriolabs.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.empiriolabs.ai/health`
- Auth: none declared
- TypeScript: <https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/docs/health/get.ts> (a function with typed inputs; its response is checked against the schema)

Aggregated health for the gateway and all workers it routes to.

- Free: only does internal HTTP GETs to each worker's /health (no model
  calls, no external traffic). Internal traffic on Fly.io flycast and
  Railway private networking is free.
- Cached for ~10s (HEALTH_CACHE_TTL) so frequent polling stays cheap.
- Pass ?refresh=1 to force a fresh probe.
Returns 200 always (gateway itself is up); inspect the JSON body for
per-worker status. Top-level `status` is "ok" / "degraded" / "down".

Public response is sanitised — it never exposes internal `.railway.internal`
hostnames or other infra fingerprints. Callers presenting the gateway's
`X-Internal-Secret` header receive the unredacted snapshot (URLs, model
aliases, machine state).

## Query parameters

- `refresh` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway.md) - [All operations](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/llms.txt) - [OpenAPI document](https://skmtc.dev/empiriolabs/apis/empiriolabs-gateway/revisions/94bb966b0560?raw)
