vike

Recipe 53 of 65

What is the funding-rate history of a Hyperliquid coin, with premium and open interest?

/v1/hyperliquid/symbols/hourly returns, per perp and hour, the traded close, open interest, funding_rate and premium, up to 400 days back and 64 symbols per call; predicted funding is not served.

GET /v1/hyperliquid/symbols/hourly answers it in one call, as the hourly market history of Hyperliquid perps: close from executed fills, and open_interest, funding_rate and premium from the venue's own readings, averaged over the hour. Ask for up to 64 symbols at once, with days (1 to 400) or a pinned start and end. Rows are arrays in columns order. The full parameter list is on Coins hourly.

Quick answer

Name the coin and how many days back.

cURL
# 30 days of hourly BTC close, open interest, funding rate and premium
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/symbols/hourly?symbols=BTC&days=30"

Example response

Captured from the live API on 2026-10-24 at 17:16 UTC from the same call with symbols=BTC,ETH,SOL,HYPE,XRP,DOGE&days=30, trimmed to BTC's newest 3 of 4,320 rows.

ts is the hour's start in epoch seconds (1792857600 is 16:00 UTC). open_interest is in coins (43,345 BTC), not USD. funding_rate is a fraction per hour: 0.0000100 is 0.001% an hour, about 8.8% a year. premium is a fraction too: -0.000437 is -4.4 bps. The last row is the 17:00 hour, still in progress.

Example response
{
  "symbols": ["BTC", "ETH", "SOL", "HYPE", "XRP", "DOGE"],
  "tz": "UTC",
  "source": "1h fills rollup + hourly asset summary",
  "start": 1790270179,
  "end": 1792862179,
  "columns": ["ts", "asset", "close", "open_interest", "funding_rate", "premium"],
  "rows": [
    [1792854000, "BTC", 79789.0, 43080.143939999805, 9.31456935483871e-06, -0.00045313535134408595],
    [1792857600, "BTC", 80175.0, 43345.12522166666, 1.0013016666666666e-05, -0.000436831925],
    [1792861200, "BTC", 80115.0, 43648.260513333335, 4.3116e-06, -0.0002914231333333333]
  ]
}

Variations

Readable rows. Zip each positional row back into an object with its column names.

cURL — rows as objects
# one day of BTC rows as objects
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/symbols/hourly?symbols=BTC&days=1" \
  | jq '. as $d | $d.rows[] | [$d.columns, .] | transpose | map({(.[0]): .[1]}) | add'

Annualized funding and premium in bps. Convert on your side, hour by hour.

cURL — annualized
# BTC funding as a yearly percentage and premium in basis points, hour by hour
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/symbols/hourly?symbols=BTC&days=30" \
  | jq '[.rows[] | select(.[4] != null) | {ts: .[0], close: .[2], funding_apr_pct: (.[4] * 24 * 365 * 100), premium_bps: (.[5] * 10000)}]'

On the 30-day capture BTC's hourly funding_rate ran from -0.0000176 to 0.0000125.

The longest window. 400 days is the limit of days. A basket of many symbols over a long window can pass the 256,000-row ceiling; split the symbol list across calls with the same pinned window.

cURL — 400 days
# BTC and ETH, hourly, from 2026-01-01
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/symbols/hourly?symbols=BTC,ETH&start=2026-01-01T00:00:00Z"

Funding a wallet actually paid. The panel is the market rate per hour; what one wallet paid or received on each position is on its funding history.

cURL — one wallet
# funding payments of one wallet on BTC; negative payment_usd = the wallet paid
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/wallets/0x25773676902085225ae5751075e4161369334897/funding?symbol=BTC&limit=100"

Before you rely on it

History only: no predicted funding, no other venues

The panel is what the venue published, hour by hour. Predicted funding for the next hour is not served, and neither is funding history of other exchanges, so a cross-venue funding spread cannot be built from this route. A positive funding_rate means longs pay shorts.

Averaged samples, nulls and missing hours

funding_rate, premium and open_interest are the venue's readings sampled about every 5 minutes and averaged over the hour, not the settled payment. A missing sample arrives as null, never 0. An hour with no trade in the perp has no row at all, because each row starts from the traded close. Rows come sorted by symbol, then hour.

Ask your agent

No MCP tool returns funding history: perp_funding gives current rates only, so run the Quick answer call.

Example response
{  "symbols": ["BTC", "ETH", "SOL", "HYPE", "XRP", "DOGE"],  "tz": "UTC",  "source": "1h fills rollup + hourly asset summary",  "start": 1790270179,  "end": 1792862179,  "columns": ["ts", "asset", "close", "open_interest", "funding_rate", "premium"],  "rows": [    [1792854000, "BTC", 79789.0, 43080.143939999805, 9.31456935483871e-06, -0.00045313535134408595],    [1792857600, "BTC", 80175.0, 43345.12522166666, 1.0013016666666666e-05, -0.000436831925],    [1792861200, "BTC", 80115.0, 43648.260513333335, 4.3116e-06, -0.0002914231333333333]  ]}