# GET /v1/hl/coins

> The Hyperliquid coins whose positions the recorder tracks, one per line.

Lists the Hyperliquid coins whose positions the recorder tracks: the coins in its `--hl-coins` setting. Each one can be used with [`/v1/hl/levels`](/docs/api/hl-levels) and [`/v1/hl/footprint`](/docs/api/hl-footprint).

## Request

```text
GET /v1/hl/coins
HEAD /v1/hl/coins
```

No parameters.

## Response

| Header | Value |
|---|---|
| `Content-Type` | `text/plain; charset=utf-8` |
| `Cache-Control` | `no-cache` |

One coin per line, sorted, each line ending in a newline. Coins are Hyperliquid's own names, for example `BTC`, `ETH`, `HYPE` or `kPEPE`.

## Status codes

| Status | Body | When |
|---|---|---|
| `200` | The list | Hyperliquid recording is on |
| `404` | `hyperliquid positions not recorded` | The recorder runs with `--hl-coins ""` |

## Example

```bash
curl http://127.0.0.1:8787/v1/hl/coins
```

```text
BTC
ETH
HYPE
SOL
```

With headers:

```bash
curl -i http://127.0.0.1:8787/v1/hl/coins
```

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

BTC
ETH
HYPE
SOL
```

On a recorder started with `--hl-coins ""`:

```text
HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=utf-8
Content-Length: 35
Cache-Control: no-cache
Access-Control-Allow-Origin: *
Connection: close

hyperliquid positions not recorded
```

Fetch the last hour of levels for every recorded coin:

```bash
BASE=http://127.0.0.1:8787
TO=$(( $(date +%s) * 1000 ))
FROM=$(( TO - 3600000 ))
for coin in $(curl -fsS $BASE/v1/hl/coins); do
  curl -fsS -o "$coin.levels" "$BASE/v1/hl/levels/$coin?from=$FROM&to=$TO"
done
```

## Notes

- A coin is listed as soon as the recorder starts, before its first sample. Until then, [`/v1/hl/levels`](/docs/api/hl-levels) and [`/v1/hl/footprint`](/docs/api/hl-footprint) answer `503 no sample yet` for it.
- This list is about position recording. It is separate from the `Hyperliquid_<COIN>` markets in [`/v1/markets`](/docs/api/markets), which hold footprints and context.
- Flowscope clients map any market to its Hyperliquid coin: `BTCUSDT`, `BTC-USDT-SWAP` and the aggregate `BTC` all map to `BTC`; `1000PEPE` maps to `kPEPE`. A client asks the data hub (which runs a recorder) for a coin, and on `404` collects that coin itself.
