# Liquidation price map · HyperCore API · Femtos

> Liquidation prices of every open position, from Hyperliquid's formula on each account's state, bucketed like the stop map.

- Base URL: `https://api.femtos.xyz/v1` (REST) · `wss://api.femtos.xyz/v1/ws` (WebSocket) · MCP: `https://api.femtos.xyz/mcp`
- Auth: `Authorization: Bearer $FEMTOS_KEY`. Free key: https://femtos.xyz/accounts/ (browser), or with
  no browser: `GET https://femtos.xyz/accounts/agent/challenge`, solve its proof of work, then `POST https://femtos.xyz/accounts/agent/signup`
  (https://femtos.xyz/agents.md#agent-onboarding)
- Decimals are exact strings, times Unix milliseconds, addresses lowercase `0x`
- Whole API in one file: https://femtos.xyz/agents.md · OpenAPI: https://api.femtos.xyz/v1/openapi.json · Index: https://femtos.xyz/llms.txt
- Page with live calls: https://femtos.xyz/hypercore/liquidation-map

## Liquidation price map — GET `/v1/hypercore/liquidation-map`

Liquidation prices of every open position, from Hyperliquid's formula on each account's state, bucketed like the stop map.

| Param | In | Example or values | Meaning |
|---|---|---|---|
| `coin` | query | `BTC` | HyperCore perp coin: BTC, xyz:TSLA |
| `buckets` | query | `40` | Most buckets (width rounded up to a round number); not with step |
| `step` | query | (optional) | Bucket width in price units, instead of buckets (at most 400 buckets) |
| `range_pct` | query | `10` | Half-width of the grid around the mark, percent, (0, 100] |

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/hypercore/liquidation-map?coin=BTC&buckets=40&range_pct=10"
```

| Field | Type | Meaning |
|---|---|---|
| `buckets[]` | object | Ascending price; empty when the mark is unknown: {pxLo, pxHi, long, short} |
| `below` | object | long: liquidated by a forced sell as price falls to it; short: by a forced buy as price rises to it: {long, short} |
| `above` | object | long: liquidated by a forced sell as price falls to it; short: by a forced buy as price rises to it: {long, short} |
| `totals` | object | long: liquidated by a forced sell as price falls to it; short: by a forced buy as price rises to it: {long, short} |
| `coverage` | object | How much of the open interest the map holds: every account's positions at the snapshot, each liquidation price from Hyperliquid's formula on the account state; none for portfolio-margin cross accounts and positions that cannot be liquidated: {positions, withLiqPx, sz, szWithLiqPx, share, note} |
| `asOf` | ms | Time of `height` (the positions snapshot) |
| `height` | int | Head block of the layer the answer is cut at: every event up to it is counted (the positions snapshot) |
| `markPx` | decimal \| null | Mark: last trade |
| `rangePct` | decimal | range_pct applied |
| `step` | decimal \| null | Bucket width |

## Related (Price-level maps)

- [Forced flow](https://femtos.xyz/hypercore/forced-flow.md): Stop-loss / take-profit orders and liquidations on the same buckets: the cascade (stops + liquidations, with the move) and the take-profits (against it) at each price.
- [Stop map stream](https://femtos.xyz/hypercore/ws-stops-map.md): The GET /api/hypercore/stops map, pushed whole on subscribe and every 5 s when it changes.
- [Liquidation map stream](https://femtos.xyz/hypercore/ws-liquidations-map.md): The GET /api/hypercore/liquidation-map map, pushed whole on subscribe and every 5 s when it changes.
- [Forced flow stream](https://femtos.xyz/hypercore/ws-forced-flow.md): The GET /api/hypercore/forced-flow map, pushed whole on subscribe and every 5 s when it changes.

All HyperCore endpoints: https://femtos.xyz/hypercore.md
