hyperliquid-api

star 5

Reference for Hyperliquid exchange API integration. Use when implementing order placement, balance queries, funding rate fetching, or WebSocket subscriptions on Hyperliquid. Contains SDK patterns, authentication setup, and common pitfalls.

gabrielee5 By gabrielee5 schedule Updated 3/4/2026

name: hyperliquid-api description: Reference for Hyperliquid exchange API integration. Use when implementing order placement, balance queries, funding rate fetching, or WebSocket subscriptions on Hyperliquid. Contains SDK patterns, authentication setup, and common pitfalls.

Hyperliquid API Skill

SDK Setup

import eth_account
from hyperliquid.exchange import Exchange
from hyperliquid.info import Info
from hyperliquid.utils import constants

# Authentication via wallet
wallet = eth_account.Account.from_key(private_key)
exchange = Exchange(wallet, constants.MAINNET_API_URL)
info = Info(constants.MAINNET_API_URL, skip_ws=True)

Common Operations

Place Limit Order (GTC)

result = exchange.order("ETH", is_buy=True, sz=0.5, limit_px=3000.0, order_type={"limit": {"tif": "Gtc"}})

Place Post-Only Order (ALO)

result = exchange.order("ETH", is_buy=True, sz=0.5, limit_px=3000.0, order_type={"limit": {"tif": "Alo"}})

Place Stop-Loss Trigger

result = exchange.order("ETH", is_buy=True, sz=0.5, limit_px=2850.0,
    order_type={"trigger": {"triggerPx": "2900", "isMarket": True, "tpsl": "sl"}},
    reduce_only=True)

Place Take-Profit Trigger

result = exchange.order("ETH", is_buy=True, sz=0.5, limit_px=3200.0,
    order_type={"trigger": {"triggerPx": "3150", "isMarket": True, "tpsl": "tp"}},
    reduce_only=True)

Bulk Orders (atomic)

order_requests = [
    {"coin": "ETH", "is_buy": True, "sz": 0.1, "limit_px": 3000.0, "order_type": {"limit": {"tif": "Gtc"}}},
    {"coin": "ETH", "is_buy": True, "sz": 0.1, "limit_px": 2990.0, "order_type": {"limit": {"tif": "Gtc"}}},
]
result = exchange.bulk_orders(order_requests)

Get Balance and Positions

user_state = info.user_state(address)
# user_state["marginSummary"]["accountValue"]  — total account value
# user_state["marginSummary"]["totalMarginUsed"]  — margin in use
# user_state["assetPositions"]  — list of positions

Get Funding Rate

# Current funding rates (from meta)
meta = info.meta()
# Historical funding
history = info.funding_history("ETH", start_time=1681923833000)

Set Leverage

exchange.update_leverage(3, "ETH", is_cross=True)

Pitfalls

  • Asset index must be fetched from info.meta() — don't hardcode
  • Prices must respect tick size (check meta for szDecimals)
  • ALO orders are cancelled (not filled) if they would immediately match
  • Trigger orders need reduce_only=True for SL/TP
  • Funding settles every HOUR — different from most CEXes
  • Rate limit: 10,000 request buffer, then 1 per USDC traded
  • SDK requires Python 3.10 (some dependency issues on 3.11+)
Install via CLI
npx skills add https://github.com/gabrielee5/funding-arbitrage --skill hyperliquid-api
Repository Details
star Stars 5
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator