Skip to main content
Fetch DEX information, market details, prices, OHLCV chart data, and orderbook snapshots. All service functions require a client as the first argument. Create one with createPerpsClient():
import { createPerpsClient } from '@lifi/perps-sdk';

const client = createPerpsClient({ integrator: 'my-app' });
The examples on this page use Hyperliquid (dex: 'hyperliquid'). Replace the dex value with any supported DEX from getDexes().

getDexes

Returns all available perpetual DEX platforms, including their authorization requirements.
import { getDexes } from '@lifi/perps-sdk';

const { dexes } = await getDexes(client);

for (const dex of dexes) {
  console.log(dex.key, dex.name, dex.authorizations.length);
}
// hyperliquid Hyperliquid 2

Parameters

ParameterTypeRequiredDescription
clientPerpsSDKClientYesSDK client from createPerpsClient()
optionsSDKRequestOptionsNoRequest options (e.g., signal for cancellation)

Returns

DexesResponse{ dexes: Dex[] }:
FieldTypeDescription
dexesDex[]Array of DEX objects
Each Dex:
FieldTypeDescription
keystringUnique DEX identifier (used in query params)
namestringDisplay name
logoURIstringURL to DEX logo image
authorizationsAuthorization[]Available authorizations for this DEX
wsUrlstring?WebSocket endpoint for streaming (see Streaming)
extraDataobject?DEX-specific extra data (sub-exchanges, feature flags, etc.)
Each Authorization object:
FieldTypeDescription
keystringAuthorization identifier (DEX-specific, e.g., ApproveAgent for Hyperliquid)
namestringHuman-readable name
paramsAuthorizationParam[]Required parameters
Use dex.authorizations to dynamically build the authorization UI. See Authorization for the full flow.
API Reference: GET /dexes

getMarkets

Returns all perpetual markets for a specified DEX with funding rates, open interest, and volume.
import { getMarkets } from '@lifi/perps-sdk';

const { markets } = await getMarkets(client, { dex: 'hyperliquid' });

for (const market of markets) {
  console.log(market.symbol, market.markPrice, `${market.maxLeverage}x`);
}
// BTC 95000.50 50x
// ETH 3200.25 50x

Parameters

ParameterTypeRequiredDescription
clientPerpsSDKClientYesSDK client
params.dexstringYesDEX identifier
optionsSDKRequestOptionsNoRequest options

Returns

MarketsResponse{ markets: Market[] }:
FieldTypeDescription
marketsMarket[]Array of market objects
Each Market:
FieldTypeDescription
symbolstringTrading symbol (e.g., BTC)
namestringFull asset name (e.g., Bitcoin)
logoURIstringURL to asset logo
assetIdnumberAsset ID (0-99 for main assets, 100000+ for xyz)
dexstringDEX identifier
szDecimalsnumberSize decimal places
maxLeveragenumberMaximum allowed leverage
onlyIsolatedbooleanWhether only isolated margin is supported
fundingFundingInfoCurrent funding rate and next funding time
openIntereststring?Total open interest in USD (may be absent for new markets)
volume24hstring?24-hour trading volume in USD (may be absent for new markets)
markPricestringCurrent mark price
API Reference: GET /markets

getMarket

Returns details for a single market.
import { getMarket } from '@lifi/perps-sdk';

const btc = await getMarket(client, { dex: 'hyperliquid', symbol: 'BTC' });
console.log(btc.markPrice, btc.funding.rate);
// 95000.50 0.0001

Parameters

ParameterTypeRequiredDescription
clientPerpsSDKClientYesSDK client
params.dexstringYesDEX identifier
params.symbolstringYesMarket symbol (e.g., BTC)
optionsSDKRequestOptionsNoRequest options

Returns

Market — Single market object (same shape as above). API Reference: GET /markets/

getPrices

Returns current mid prices for all markets. Lightweight endpoint for frequent polling.
import { getPrices } from '@lifi/perps-sdk';

const { prices } = await getPrices(client, { dex: 'hyperliquid' });
console.log(prices);
// { BTC: '95000.50', ETH: '3200.25', SOL: '185.75' }

Parameters

ParameterTypeRequiredDescription
clientPerpsSDKClientYesSDK client
params.dexstringYesDEX identifier
params.symbolsstring[]NoFilter to specific symbols
optionsSDKRequestOptionsNoRequest options

Returns

PricesResponse{ prices: Record<string, string> }:
FieldTypeDescription
pricesRecord<string, string>Map of symbol to mid price
API Reference: GET /prices

getOhlcv

Returns OHLCV candle data for charts.
import { getOhlcv } from '@lifi/perps-sdk';

const { candles } = await getOhlcv(client, {
  dex: 'hyperliquid',
  symbol: 'BTC',
  interval: '1h',
  limit: 100,
});

for (const candle of candles) {
  console.log(candle.t, candle.o, candle.h, candle.l, candle.c, candle.v);
}

Parameters

ParameterTypeRequiredDescription
clientPerpsSDKClientYesSDK client
params.dexstringYesDEX identifier
params.symbolstringYesMarket symbol
params.intervalstringYesCandle interval: 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 8h, 12h, 1d, 3d, 1w, 1M
params.startTimenumberNoStart timestamp in milliseconds
params.endTimenumberNoEnd timestamp in milliseconds
params.limitnumberNoMax candles to return (default 100, max 1000)
optionsSDKRequestOptionsNoRequest options

Returns

OhlcvResponse:
FieldTypeDescription
dexstringDEX identifier
symbolstringMarket symbol
intervalstringCandle interval
candlesCandle[]Array of candle data
Each Candle:
FieldTypeDescription
tnumberTimestamp in milliseconds
ostringOpen price
hstringHigh price
lstringLow price
cstringClose price
vstringVolume
API Reference: GET /ohlcv/

getOrderbook

Returns current orderbook snapshot with bids and asks.
import { getOrderbook } from '@lifi/perps-sdk';

const book = await getOrderbook(client, {
  dex: 'hyperliquid',
  symbol: 'BTC',
  depth: 20,
});

console.log('Best bid:', book.bids[0].price, book.bids[0].size);
console.log('Best ask:', book.asks[0].price, book.asks[0].size);

Parameters

ParameterTypeRequiredDescription
clientPerpsSDKClientYesSDK client
params.dexstringYesDEX identifier
params.symbolstringYesMarket symbol
params.depthnumberNoNumber of price levels (default 20, max 100)
optionsSDKRequestOptionsNoRequest options

Returns

OrderbookResponse:
FieldTypeDescription
dexstringDEX identifier
symbolstringMarket symbol
bidsOrderbookLevel[]Bid price levels (descending)
asksOrderbookLevel[]Ask price levels (ascending)
timestampnumberSnapshot timestamp in milliseconds
Each OrderbookLevel:
FieldTypeDescription
pricestringPrice level
sizestringSize at this price level
API Reference: GET /orderbook/