Documentation Index
Fetch the complete documentation index at: https://hypernode-docs.polynode.dev/llms.txt
Use this file to discover all available pages before exploring further.
Install
pip install websocket-client requests
Basic connection
import json
import websocket
def on_message(ws, message):
event = json.loads(message)
# Skip protocol messages
if "action" in event:
return
layer = event.get("consensus", "?") # "pre" or "confirmed"
if event["type"] == "order":
d = event["data"]
side = "BUY" if d["side"] == "B" else "SELL"
print(f"[{layer}] ORDER {event['asset']} {side} {d['sz']}@{d['px']} [{d['tif']}]")
elif event["type"] == "fill":
d = event["data"]
side = "BUY" if d["side"] == "B" else "SELL"
print(f"[{layer}] FILL {event['asset']} {side} {d['sz']}@{d['px']} {d['dir']} PnL={d['closedPnl']}")
def on_open(ws):
ws.send(json.dumps({
"action": "subscribe",
"filters": {"action_types": ["order", "fill"]}
}))
def on_error(ws, error):
print(f"Error: {error}")
ws = websocket.WebSocketApp(
"wss://hyper.polynode.dev/ws?key=pn_live_YOUR_KEY",
on_open=on_open,
on_message=on_message,
on_error=on_error,
)
ws.run_forever()
Track a wallet
def on_open(ws):
ws.send(json.dumps({
"action": "subscribe",
"filters": {
"addresses": ["0xd071d6d6ea52f5aa34b79e47f908ee48c8215837"]
}
}))
L4 Order Book (REST)
import requests
resp = requests.get(
"https://hyper.polynode.dev/v2/l4book?coin=BTC",
headers={"x-api-key": "pn_live_YOUR_KEY"}
)
book = resp.json()
print(f"BTC: {book['bid_count']} bids, {book['ask_count']} asks")
# Top 5 bids
for order in sorted(book["bids"], key=lambda o: -float(o["limitPx"]))[:5]:
print(f" BID {order['limitPx']} x {order['sz']} by {order['user'][:14]}...")
L4 Summary
resp = requests.get(
"https://hyper.polynode.dev/v2/l4book/summary",
headers={"x-api-key": "pn_live_YOUR_KEY"}
)
data = resp.json()
print(f"{data['markets']} markets, {data['total_orders']} total orders")
for m in data["data"][:10]:
print(f" {m['coin']}: {m['bid_orders']} bids, {m['ask_orders']} asks")
Borrow/Lend Rates
resp = requests.get(
"https://hyper.polynode.dev/v2/borrow-lend/reserves",
headers={"x-api-key": "pn_live_YOUR_KEY"}
)
for token_id, state in resp.json():
print(f"Token {token_id}: borrow={state['borrowYearlyRate']} supply={state['supplyYearlyRate']}")
Multiple filters (AND logic)
# Only BTC fills from a specific wallet
def on_open(ws):
ws.send(json.dumps({
"action": "subscribe",
"filters": {
"action_types": ["fill"],
"assets": ["BTC"],
"addresses": ["0xd071d6d6ea52f5aa34b79e47f908ee48c8215837"]
}
}))