Blazing fast TypeScript SDK for Hyperliquid. Try the documentation.
- Typed. Source code is 100% TypeScript with comprehensive type safety.
- Tested. Extensive test coverage with both offline and online test suites.
- Minimal dependencies. A few small, trusted dependencies keep the bundle lean.
- Cross-environment support. Compatible with Bun, Node.js, React Native, and all major JavaScript runtimes.
- Easy integration. Works seamlessly with viem accounts (local private keys or JSON-RPC browser wallets).
bun add @bloxwap/hyperliquidnpm i @bloxwap/hyperliquidpnpm add @bloxwap/hyperliquidyarn add @bloxwap/hyperliquidReact Native needs polyfills for the
fastAssetCtxssubscription and for versions below 0.86 — see the documentation.
0.6.0 is an early developer preview; expect breaking changes before 1.0.
// 1. Import module
import { HttpTransport, InfoClient } from "@bloxwap/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" });// 1. Import modules
import { ExchangeClient, HttpTransport } from "@bloxwap/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" });For low-latency bots, prefer
createFastLocalWallet (WASM
secp256k1) and install the optional hash-wasm package for ambient keccak acceleration. Trusted callers can also pass
{ skipValidation: true } — see the
low-latency recipe.
// 1. Import module
import { SubscriptionClient, WebSocketTransport } from "@bloxwap/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);
});Browse the SDK documentation for installation, clients, transports, signing, utilities, and guides.
The documentation uses Fumadocs and is hosted on GitHub Pages. Its Markdown source lives in
apps/docs/content/docs/.
This repository is a Bun workspace with one install and one root bun.lock:
| Workspace | Purpose |
|---|---|
packages/hyperliquid |
Published @bloxwap/hyperliquid SDK, source, tests, and package tooling |
apps/docs |
Fumadocs application, Markdown content, and GitHub Pages export |
The root package is private and coordinates development. The SDK builds to packages/hyperliquid/dist; the docs app
exports static files to apps/docs/out. Only the SDK's generated package is published to npm.
Run these commands from the repository root:
bun install --frozen-lockfile
bun run check
bun run test:offline
bun run buildTo develop the documentation, run bun run docs:dev and open http://localhost:3901. See the
documentation app guide for content checks, production builds, and GitHub Pages deployment.
Coverage target is 100% line, branch, and function coverage.
This SDK handles private keys and wallet operations. Never hardcode private keys in source or commit them to git. Load them from environment variables or a secret store (Bun auto-loads a local .env, which is gitignored in this repo).
For trading bots, prefer a Hyperliquid agent wallet (API wallet) over the master account key: an agent key can trade but cannot withdraw, and it can be revoked without rotating the master key.
See Signing for how wallets, signatures, and nonces work.