TypeScript SDK
Put Guard in front of the @nktkas/hyperliquid TypeScript SDK with the transport's apiUrl. The exact options.
Hyperliquid has no official TypeScript SDK. Its API docs list two community SDKs, nktkas/hyperliquid and nomeida/hyperliquid. This guide covers the first (npm: @nktkas/hyperliquid). A guide for the second follows once it is tested.
Before you change anything
Section titled “Before you change anything”- Read the setup journey and start Guard in paper mode.
- Keep your real account address. Give the bot a Guard client key, while the API wallet key stays inside Guard.
- Check the network and isolated-margin requirements in this guide. These integration instructions are planned and not verified against a released Guard yet.
The smallest change
Section titled “The smallest change”HttpTransport takes apiUrl: “Custom API URL for info and exchange requests”.
const transport = new HttpTransport();const transport = new HttpTransport({ apiUrl: "http://127.0.0.1:8547" });const wallet = privateKeyToAccount(API_WALLET_KEY);const wallet = privateKeyToAccount(GUARD_CLIENT_KEY);Full example
Section titled “Full example”import { ExchangeClient, HttpTransport, InfoClient } from "@nktkas/hyperliquid";import { privateKeyToAccount } from "viem/accounts";
const transport = new HttpTransport({ apiUrl: "http://127.0.0.1:8547" });const wallet = privateKeyToAccount("0x..."); // the client key Guard printed
const info = new InfoClient({ transport });const exchange = new ExchangeClient({ transport, wallet });filled in from your settings ·
The options
Section titled “The options”| Option | Value | Default without Guard |
|---|---|---|
apiUrl | Guard’s URL | https://api.hyperliquid.xyz (mainnet), https://api.hyperliquid-testnet.xyz (testnet) |
isTestnet | match Guard’s network if you like; see below | false |
timeout | leave at the default, or raise it a little | 10_000 ms |
wallet | a viem account from the Guard client key |
Network in the signature. The SDK signs for testnet when isTestnet is true, otherwise for mainnet. Guard is planned to accept either and to sign the real order for its own network (why it is safe).
WebSocket. The SDK’s WebSocket transport is separate. Use it against Hyperliquid directly for market data, or wait for Guard’s WebSocket pass-through.
Read the response
Section titled “Read the response”The reply uses Hyperliquid’s response format. Check the returned status and order size rather than assuming the requested size was accepted. A refusal includes a readable reason and a veto code; a smaller accepted order reflects the rule that bound its size. Paper mode sends no venue order. Test this path before using testnet.
This page as plain Markdown, for people and LLMs: /docs/integrations/typescript-sdk.md