# Open interest history | API reference | Femtos

> Open interest bars of a perp since May 2023, after every block since March 2025: longs and shorts opened, closed, liquidated. GET /v1/hypercore/oi on HyperCore: parameters, response fields and a live call per layer.

- 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://dashboard.femtos.xyz/signup (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/reference/open-interest

## Open interest history — GET `/v1/hypercore/oi`

Open interest bars of a perp since May 2023, after every block since March 2025: longs and shorts opened, closed, liquidated.

Layers: HyperCore. Not on Elysium or HyperEVM: the EVM layers trade on AMM pools, with no order book: pool detail and liquidity events cover a pool.
Page with live calls: https://femtos.xyz/reference/open-interest?layer=hypercore

| Param | In | Example or values | Meaning |
|---|---|---|---|
| `coin` | query | `BTC` | Perp market: BTC, xyz:TSLA (HIP-3: dex:COIN) |
| `tf` | query | `1s`, `15s`, `1m`, `3m`, `5m`, `15m`, `30m`, `1h`, `2h`, `4h`, `8h`, `12h`, `1d`, `3d`, `1w`, `1M` | Bar unit |
| `from` | query | (optional) | Start (ms, inclusive; aligned down to the unit). Without it: the `limit` bars ending at `to` |
| `to` | query | (optional) | End (ms, exclusive; default now) |
| `limit` | query | `48` | Bars |

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/hypercore/oi?coin=BTC&tf=1h&limit=48"
```

| Field | Type | Meaning |
|---|---|---|
| `bars[]` | object | Ascending; a unit without fill nor anchor is flat at the previous close; none before the market's first, nor over a gap of Hyperliquid's archive before 2025-03-22 10:49 UTC: {t, o, h, l, c, px, usd, longOpen, longClose, shortOpen, shortClose, takerLongOpen, …} |
| `bars[].c` | decimal | After the last block of the bar |
| `bars[].usd` | decimal \| null | c × px, in the market's quote (USD figure, 15 significant digits) |
| `bars[].longOpen` | decimal \| null | Size of longs opened in the bar; null where not known (before 2025-03-22 10:49 UTC, or a bar that may hold blocks missing from Hyperliquid's node data) |
| `bars[].shortOpen` | decimal \| null | Size of shorts opened; null where not known (before 2025-03-22 10:49 UTC, or a bar that may hold blocks missing from Hyperliquid's node data) |
| `bars[].takerLongOpen` | decimal \| null | Of longOpen, opened by the aggressor (a taker buying to open); null where not known (before 2025-03-22 10:49 UTC, or a bar that may hold blocks missing from Hyperliquid's node data) |
| `bars[].liq` | decimal \| null | Size closed on liquidated accounts; null where not known (before 2025-03-22 10:49 UTC, or a bar that may hold blocks missing from Hyperliquid's node data) |
| `bars[].longAccounts` | int \| null | Accounts long at the bar end; null before 2025-09-28 |
| `bars[].funding` | decimal \| null | Hourly funding rate Hyperliquid settled for the hours of the bar, as a fraction (0.0000125 = 0.00125 % an hour; positive: longs pay shorts); a bar under an hour has its hour's rate, a longer one the mean of its hours. null while the hour is not settled yet (the live rate is hc.ctx `funding`), and before 2025-09-27 09:00 UTC |
| `szDecimals` | int | Size decimals of the market: every size is a multiple of 10^-szDecimals |
| `asOf` | int \| null | End of the last minute computed (Unix ms; 1s and 15s: just after the last block read); null when the market has none |
| `billing` | heavy | heavy over 30 days |

## Related (Liquidations & positions)

- [Liquidations](https://femtos.xyz/reference/liquidations.md) `GET /v1/liquidations`: Perp liquidations, newest first, one row per account, coin and block. (HyperCore)
- [Liquidations stream](https://femtos.xyz/reference/ws/liquidations.md) `WS hc.liquidations`: Each liquidation fill, the block it happens. One frame per block with all its matching events. (HyperCore)
- [Liquidation stats](https://femtos.xyz/reference/liquidation-stats.md) `GET /v1/liquidations/stats`: Totals, per coin, per time bucket and the largest, over a window. (HyperCore)
- [Liquidation stats stream](https://femtos.xyz/reference/ws/liquidation-stats.md) `WS hc.liquidations.stats`: The GET /v1/liquidations/stats answer (totals, per coin, per bucket, the largest), pushed on subscribe, then when a liquidation comes in (whole, or as a JSON Patch). (HyperCore)
- [Positions](https://femtos.xyz/reference/positions.md) `GET /v1/positions`: Open positions of one perp with leverage and liquidation price. (HyperCore)
- [Position changes](https://femtos.xyz/reference/ws/positions.md) `WS hc.positions`: Each perp position change, one per block, account and coin. One frame per block with all its matching events. (HyperCore)
- [Open positions stream](https://femtos.xyz/reference/ws/positions-open.md) `WS hc.positions.open`: The GET /v1/positions answer of one perp (size, entry, PnL, leverage, liquidation price), pushed on subscribe, then on each roll of the live positions (every 5 s) when it changes. (HyperCore)
- [Position change history](https://femtos.xyz/reference/position-changes.md) `GET /v1/positions/changes`: Past perp position changes of one coin over a size, one row per account and block. (HyperCore)
- [Open interest](https://femtos.xyz/reference/positions-overview.md) `GET /v1/positions/overview`: Open interest, accounts and unrealized PnL per perp. (HyperCore)
- [Open interest stream](https://femtos.xyz/reference/ws/positions-overview.md) `WS hc.positions.overview`: The GET /v1/positions/overview answer (long / short open interest, accounts, unrealized PnL per perp), pushed on subscribe, then on each roll of the live positions (every 5 s) when it changes (whole, or as a JSON Patch). (HyperCore)
- [Liquidation map](https://femtos.xyz/reference/liqmap.md) `GET /v1/positions/liqmap`: Notional that would be liquidated at each price around the mark. (HyperCore)
- [Liquidation levels stream](https://femtos.xyz/reference/ws/positions-liqmap.md) `WS hc.positions.liqmap`: The GET /v1/positions/liqmap answer of one perp (notional liquidated per price bucket), pushed on subscribe, then on each roll of the live positions (every 5 s) when it changes. (HyperCore)
- [Open interest per block](https://femtos.xyz/reference/ws/oi.md) `WS hc.oi`: The open interest of a perp after every block with a fill: longs and shorts opened, closed, liquidated. One frame per block with all its matching events. (HyperCore)
- [Open interest by market](https://femtos.xyz/reference/open-interest-markets.md) `GET /v1/hypercore/oi/markets`: Every perp's open interest now, its 1 h / 24 h / 7 d change, totals per dex. (HyperCore)
- [Open interest by position size](https://femtos.xyz/reference/open-interest-cohorts.md) `GET /v1/hypercore/oi/cohorts`: Long and short open interest of a perp by position size, every hour since September 2025. (HyperCore)
- [Who opened positions](https://femtos.xyz/reference/open-interest-opens.md) `GET /v1/hypercore/oi/opens`: The largest orders that opened longs or shorts on a perp in a window, with the account and whether it crossed the spread. (HyperCore)

Every page: https://femtos.xyz/reference.md
