Error Handling

Error Hierarchy

Error
├─ HyperliquidError (SDK)
│  ├─ TransportError
│  │  ├─ HttpRequestError
│  │  └─ WebSocketRequestError
│  ├─ ApiRequestError
│  └─ AbstractWalletError
└─ ValiError (valibot)

HyperliquidError

Base class for all SDK errors.

import { HyperliquidError } from "@nktkas/hyperliquid";

try {
  await client.order({ ... });
} catch (error) {
  if (error instanceof HyperliquidError) {
    // Any SDK error
  }
}

TransportError

Thrown when an error occurs at the transport level (network issues, timeouts).

HttpRequestError

Thrown when an HTTP request fails.

WebSocketRequestError

Thrown when a WebSocket request fails.

ApiRequestError

Thrown when the Hyperliquid API returns an error response. Contains the full response for inspection.

Common API errors:

  • "User or API Wallet 0x... does not exist" - invalid signer or signature

  • "Insufficient margin to place order" - not enough balance

  • "Price too far from oracle" - price outside allowed range

AbstractWalletError

Thrown when wallet operations fail (signing, getting address).

Validation Errors

Request parameters are validated before sending. Invalid parameters throw ValiErrorarrow-up-right from valibotarrow-up-right.

Example: Comprehensive Error Handling

Last updated