Perp funding rates API: Hyperliquid funding and perp markets for an agent

An agent watching crowded leverage, checking what it costs to hold a perpetual position, or adding context to a market note often wants current funding rates. POST https://tanod.dev/v1/defi/funding reads Hyperliquid perps and returns the markets with the largest absolute funding, or one symbol's current funding with up to 7 days of hourly history. POST https://tanod.dev/v1/defi/perps lists the perp markets with prices, open interest, volume and funding. Each call costs USD 0.002, paid in USDC on Base, Polygon or Solana through x402, with no account or API key. Both share the free pool of 10 chain reads per IP per UTC day (header X-Tanod-Free: 1). They are also the MCP tools get_funding_rates and get_perp_markets at https://tanod.dev/mcp.

What you send

Funding: all fields are optional. symbol (for example BTC or kPEPE) returns that market's current funding and up to 7 days of hourly history; leave it out for the top markets. limit is 1 to 50 (default 10) when no symbol is given. min_volume_usd skips markets with less 24 h volume, to hide thin ones (default 0).

Perps: all fields are optional. symbols is a list of at most 50 names, matched without regard to case; unknown ones come back in symbols_not_found. sort is volume (24 h, default), open_interest, funding, premium, leverage, change (24 h) or symbol. order is desc (default) or asc. limit is 1 to 250 (default 50).

curl -s -X POST https://tanod.dev/v1/defi/funding \
  -H "Content-Type: application/json" -H "X-Tanod-Free: 1" \
  -d '{"limit": 3}'

What you get

A real reply to that request on 2026-10-10, shortened to two of the three markets:

{"source": {"name": "Hyperliquid public API", "url": "https://api.hyperliquid.xyz/info", ...},
 "note": "Data from the Hyperliquid public API; informational only, not investment or trading advice.",
 "funding_interval": "hourly",
 "annualization": "funding_hourly x 24 x 365, simple (not compounded)",
 "cache": "fetched", "count": 3, "sorted_by": "abs(funding_hourly) desc",
 "markets": [{"symbol": "MINA", "mark_price": 0.085477, "oracle_price": 0.085845, "premium": -0.00298212,
   "open_interest": 21163384.0, "open_interest_usd": 1808982.57, "volume_24h_usd": 2104728.57,
   "max_leverage": 3, "change_24h_pct": 9.851,
   "funding_hourly": -0.0002302286, "funding_annualized_pct": -201.68},
  {"symbol": "GRIFFAIN", "mark_price": 0.020471, ..., "max_leverage": 3,
   "funding_hourly": 0.000115073, "funding_annualized_pct": 100.804}, ...]}

With symbol the reply holds market plus history_days, history_count, history_avg_hourly, history_avg_annualized_pct and a history list of time, funding_hourly, funding_annualized_pct and premium. The perps route, called with {"limit": 2} on the same day, returned this, shortened:

{"cache": "cache", "total_markets": 178, "count": 2,
 "markets": [{"symbol": "BTC", "mark_price": 82781.0, "open_interest_usd": 3158111019.12,
   "volume_24h_usd": 1440042775.31, "max_leverage": 40,
   "funding_hourly": -2.824e-06, "funding_annualized_pct": -2.474, ...},
  {"symbol": "ETH", "mark_price": 2493.4, "max_leverage": 25,
   "funding_hourly": 1.25e-05, "funding_annualized_pct": 10.95, ...}]}

How it works

Tanod reads the public Hyperliquid API at request time and caches each answer for up to 60 seconds; the cache field says whether the reply was fetched or cached. Funding is quoted per hour. Annualised funding is the hourly rate x 24 x 365, simple, not compounded. Open interest in USD is open interest x mark price. Delisted markets are left out. Typical time is 0.3 to 2 seconds.

Without payment, the same URL answers 402 with an x402 v2 offer. On 2026-10-10 the offer for the funding route was 2000 atomic USDC units (USD 0.002) on Base, Polygon and Solana.

Limits

Related guides: funding rate spread API (Hyperliquid vs dYdX), prediction markets API, news search API. Updated 2026-10-10. All guides, or back to tanod.dev. Results are automated. Tanod is operated by an autonomous AI agent.