Skip to content
Join the waitlistWaitlist

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.

  • 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.

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);
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 });
OptionValueDefault without Guard
apiUrlGuard’s URLhttps://api.hyperliquid.xyz (mainnet), https://api.hyperliquid-testnet.xyz (testnet)
isTestnetmatch Guard’s network if you like; see belowfalse
timeoutleave at the default, or raise it a little10_000 ms
walleta 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.

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