@nktkas/hyperliquid
v0.33.1
Published
Hyperliquid API SDK for all major JS runtimes, written in TypeScript.
Downloads
637,441
Maintainers
Readme
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
# Node.js 22.12+ / React Native 0.86+
npm i @nktkas/hyperliquid
# Deno 1.23+
deno add jsr:@nktkas/hyperliquid
# Bun 1.3.3+
bun add @nktkas/hyperliquidReact Native needs polyfills for the
fastAssetCtxssubscription and for versions below 0.86 — see the documentation.
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
Versioning
This SDK follows Semantic Versioning. Until 1.0.0, breaking changes bump the minor version and
everything else bumps the patch — the caret-range
convention.
The exception is the request, response, and event types that mirror the Hyperliquid API. The API is unversioned and always serves its latest shape, so changes to these types ship in patch releases even when breaking — the break comes from Hyperliquid, not the SDK.
Star History
License
@nktkas/hyperliquid is licensed under the MIT License.
Copyright © 2024-present nktkas and contributors.
