Skip to main content
GET
Hourly market panel (open interest, mark, oracle, funding, volume)
One row per market and UTC hour, ready to use: open interest, mark and oracle price at the end of the hour, the funding rate charged for the hour, open, high, low and close, volume in coins and USD, taker buy and sell USD, liquidation USD and trade count. In SQL the same rows are hl.market_hourly.
History by plan: A from before your history is moved up, with a notice. A range that ends before it answers HISTORY_OUT_OF_RANGE with allowed_from, the earliest from that works. Paging: without market you get every market, at most one day of hours per page. Pass pagination.next_cursor as cursor while has_more is true; a page can hold fewer than limit rows and still have more after it. Values:
  • funding_rate is the rate charged for the hour, settled when the hour ends. Where the settlement is missing, it is the last rate seen during the hour.
  • open_interest is in the base asset; open_interest_usd is it times mark_price.
  • Null means no value: open to close in an hour without trades; open interest, mark, oracle and funding on spot and outcome markets.
  • Only complete hours are served. complete_until is the end of the newest one; an hour appears a few minutes after it ends.

Authorizations

Authorization
string
header
required

Ironflow API key, format if_xxxx. Free keys at https://ironflow.sh/key. Optional on read endpoints.

Query Parameters

market
string

One market (BTC-PERP, xyz:NVDA-PERP, HYPE/USDC) or Hyperliquid coin name (BTC). Omit it for every market.

Example:

"BTC-PERP"

from
integer<int64>

Start as Unix milliseconds, Unix seconds or ISO 8601. Defaults to 24 hours before to; moved up to your plan's history.

Example:

1794528000000

to
integer<int64>

End (exclusive) as Unix milliseconds, Unix seconds or ISO 8601. Defaults to now; hours that are not complete yet are left out.

Example:

1794614400000

limit
integer
default:100

Maximum number of results per page. Default 100, max 1000.

Required range: x <= 1000
Example:

100

cursor
string

Opaque pagination cursor from pagination.next_cursor in a previous response.

Example:

"MTcxODQwMDAwMDAwMC00Mg=="

Response

One page of market hours.

data
object[]
required
pagination
object
required
complete_until
integer<int64>
required

End of the newest complete hour (Unix ms)

Example:

1794657600000

notice
string

Present when the range was moved up to your history or the market is unknown