GET /oi/{coin}
GET /oi/{coin}
Section titled “GET /oi/{coin}”Open interest for one Hyperliquid perpetual and how it has moved. Open interest is counted in contracts of
the market’s price_unit (BTC for BTC), not in USD: multiply by price for the USD notional. Changes are
fractions (0.0312 = +3.12%), each measured against the stored reading closest to that age.
Request
Section titled “Request”GET https://api.cerebruspulse.xyz/oi/{coin}Path Parameters
Section titled “Path Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
coin | string | Yes | Market symbol, case-insensitive (BTC, ETH, SOL). GET /coins lists them. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
endpoint | string | oi |
coin | string | The symbol, upper-case |
market_symbol | string | Hyperliquid’s name for the market (kPEPE for PEPE) |
price_unit | string | The contract unit: 1 BTC, or 1000 PEPE for a 1000-token market |
timestamp_iso | string | When the response was computed (UTC) |
price | number | null | Hyperliquid mid price in USD per price_unit |
open_interest.current | number | Open interest in contracts of price_unit, not USD |
open_interest.delta_1h | number | null | Change over about 1 hour, as a fraction; null when no stored reading is within ±25% of that age |
open_interest.delta_4h | number | null | Change over about 4 hours, as a fraction |
open_interest.delta_24h | number | null | Change over about 24 hours, as a fraction |
open_interest.delta_windows_seconds.<window> | number | null | How old the reading each delta compares against actually was, for 1h, 4h and 24h |
open_interest.history_age_seconds | number | null | Age of the newest stored reading |
open_interest.percentile | number | null | Where current OI ranks among the stored readings (up to the last 500), 0–100; null with fewer than 20 |
open_interest.percentile_window_hours | number | null | The span of history the percentile covers, in hours (about a day today) |
open_interest.trend | string | From delta_4h: RISING (> +3%), FALLING (< −3%), FLAT, or UNKNOWN |
open_interest.price_change_4h | number | null | Price change over the same window as delta_4h, as a fraction |
open_interest.price_oi_divergence | string | BEARISH_DIV (price up > 1% while OI fell > 2%), BULLISH_DIV (price down > 1% while OI rose > 2%), NONE, or UNKNOWN |
meta | object | Common metadata (Response Schemas) |
meta.offering | string | pulse_oi |
meta.as_of holds market_data, oi_history (the newest stored reading) and, when the 4-hour reference
price came from a candle, candles_1h. meta.warnings carries stale_oi_history when the newest stored
reading is more than an hour old.
Example
Section titled “Example”GET /oi/BTC: real engine output on market data captured at 2026-09-24 17:05 UTC. Lists are cut to 3 items. Live responses may also carry meta.disclaimer, which the gateway adds.
{ "endpoint": "oi", "coin": "BTC", "market_symbol": "BTC", "price_unit": "1 BTC", "timestamp_iso": "2026-09-24T17:05:00Z", "open_interest": { "current": 39370.3015, "delta_1h": 0.0154, "delta_4h": 0.0312, "delta_24h": 0.0063, "delta_windows_seconds": { "1h": 3901, "4h": 14701, "24h": 86701 }, "history_age_seconds": 1200.8, "percentile": 88.5, "percentile_window_hours": 25.8, "trend": "RISING", "price_change_4h": 0.0138, "price_oi_divergence": "NONE" }, "price": 84512.5, "meta": { "provider": "Cerebrus Pulse", "offering": "pulse_oi", "execution_ms": 0, "data_age_seconds": 60, "as_of": { "market_data": "2026-09-24T17:04:00Z", "oi_history": "2026-09-24T16:45:00Z", "candles_1h": "2026-09-24T13:00:00Z" }, "sources": [ { "name": "Hyperliquid", "url": "https://hyperliquid.xyz" } ] }}Errors
Section titled “Errors”| Status | Reason |
|---|---|
| 400 | No open interest for the market (not charged) |
| 402 | Payment required (the standard x402 flow) |
| 404 | Unknown coin (before any price is quoted) |
| 429 | Rate limit exceeded |
| 503 | Service disabled, payments down, or an upstream feed is missing or stale; no price is quoted |
| 504 | Engine timeout (not charged) |