# GET /health

> A liveness check that answers ok while the recorder's HTTP server is running.

Returns `ok` while the recorder's HTTP server accepts connections. Use it for load balancers, container health checks and uptime monitors.

## Request

```text
GET /health
HEAD /health
```

No parameters. A query string is ignored.

## Response

| Header | Value |
|---|---|
| `Content-Type` | `text/plain; charset=utf-8` |
| `Cache-Control` | `no-store` |
| `Access-Control-Allow-Origin` | `*` |

Body:

```text
ok
```

The body is three bytes: `ok` and a newline.

## Status codes

| Status | When |
|---|---|
| `200` | Always, while the server runs |
| `405` | A method other than `GET` or `HEAD` |

## Example

```bash
curl -i http://127.0.0.1:8787/health
```

```text
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 3
Cache-Control: no-store
Access-Control-Allow-Origin: *
Connection: close

ok
```

In a script, let `curl` fail on anything but success:

```bash
curl -fsS http://127.0.0.1:8787/health >/dev/null && echo up
```

## What it does not tell you

`/health` checks only the HTTP server. It does not check that markets are connected or that segments are being saved. For that:

- Read the recorder's log. Once a minute it logs per-market coverage: full, partial, loading, unavailable and missing minutes over the last six hours, and whether the current minute is live.
- Check that today's segment of a market exists and grows, with [`HEAD /v1/segments/<key>/<today>.fsd`](/docs/api/segments#get-a-day).
- For Hyperliquid, read [`/v1/hl/status`](/docs/api/hl-status).
