Hyperliquid API TypeScript SDK
A community-supported Hyperliquid API SDK for all major JS runtimes, written in TypeScript.
Features
- ๐๏ธ Typed: Source code is 100% TypeScript.
- ๐งช Tested: Good code coverage and type relevance.
- ๐ฆ Minimal dependencies: A few small trusted dependencies.
- ๐ Cross-Environment Support: Compatible with all major JS runtimes.
- ๐ง Integratable: Easy to use with wallet providers (viem or ethers).
Installation (choose your package manager)
npm i @nktkas/hyperliquid # npm / pnpm / yarn
deno add jsr:@nktkas/hyperliquid # Deno
bun add @nktkas/hyperliquid # Bun
Quick Example
Read data
// 1. Import module import { HttpTransport, InfoClient } from "@nktkas/hyperliquid"; // 2. Set up client with transport const transport = new HttpTransport(); const info = new InfoClient({ transport }); // 3. Query data // Retrieve mids for all coins const mids = await info.allMids(); // Retrieve a user's open orders const openOrders = await info.openOrders({ user: "0x..." }); // L2 book snapshot const book = await info.l2Book({ coin: "BTC" });
Trading
// 1. Import modules import { ExchangeClient, HttpTransport } from "@nktkas/hyperliquid"; import { privateKeyToAccount } from "viem/accounts"; // 2. Set up client with wallet and transport const wallet = privateKeyToAccount("0x..."); const transport = new HttpTransport(); const exchange = new ExchangeClient({ transport, wallet }); // 3. Execute an action // Place an order const result = await exchange.order({ orders: [{ a: 0, b: true, p: "95000", s: "0.01", r: false, t: { limit: { tif: "Gtc" } }, }], grouping: "na", }); // Update leverage await exchange.updateLeverage({ asset: 0, isCross: true, leverage: 5 }); // Initiate a withdrawal request await exchange.withdraw3({ destination: "0x...", amount: "1" });
Real-time updates
// 1. Import module import { SubscriptionClient, WebSocketTransport } from "@nktkas/hyperliquid"; // 2. Set up client with transport const transport = new WebSocketTransport(); const subs = new SubscriptionClient({ transport }); // 3. Subscribe to events // Subscribe to mids for all coins await subs.allMids((data) => { console.log(data); }); // Subscribe to user's open orders await subs.openOrders({ user: "0x..." }, (data) => { console.log(data); }); // Subscribe to L2 book snapshot await subs.l2Book({ coin: "ETH" }, (data) => { console.log(data); });
Documentation
Full guides, examples, and API reference: nktkas.gitbook.io/hyperliquid