Skip to main content

Overview

The IndexerClient provides read-only access to market data, orderbooks, and account information through the Indexer API. Access via CompositeClient:
const markets = await client.indexerClient.markets.getPerpetualMarkets();
const account = await client.indexerClient.account.getParentSubaccount(
  address,
  0
);

Markets API

getPerpetualMarkets()

Get all perpetual markets and their data.
const response = await client.indexerClient.markets.getPerpetualMarkets();

for (const [marketId, market] of Object.entries(response.markets)) {
  console.log(`${market.ticker}: $${market.oraclePrice}`);
}
Returns: Promise<MarketsResponse>

getPerpetualMarketOrderbook()

Get orderbook for a specific market.
const orderbook =
  await client.indexerClient.markets.getPerpetualMarketOrderbook("ETH-USD");

console.log("Top bid:", orderbook.bids[0].price);
console.log("Top ask:", orderbook.asks[0].price);
marketId
string
required
Market identifier (e.g., “ETH-USD”)
Returns: Promise<{ bids: OrderbookLevel[], asks: OrderbookLevel[] }>

Account API

getParentSubaccount()

Get subaccount balances and positions.
const account = await client.indexerClient.account.getParentSubaccount(
  wallet.address,
  0
);

console.log("Equity:", account.subaccount.equity);
console.log("Free Collateral:", account.subaccount.freeCollateral);
address
string
required
Wallet address
parentSubaccountNumber
number
required
Parent subaccount number (usually 0)
Returns: Promise<SubaccountResponse>

getOrder()

Get details of a specific order.
const order = await client.indexerClient.account.getOrder(orderId);

console.log(`Order ${order.id}:`);
console.log(`  Status: ${order.status}`);
console.log(`  Price: $${order.price}`);
console.log(`  Size: ${order.size}`);
orderId
string
required
Order ID to query
Returns: Promise<Order>

get()

Generic GET request to Indexer API.
const orders = await client.indexerClient.account.get(
  "/v4/orders/parentSubaccountNumber",
  {
    address: wallet.address,
    parentSubaccountNumber: 0,
    ticker: "ETH-USD",
    returnLatestOrders: true,
  }
);
path
string
required
API endpoint path
params
object
Query parameters
Returns: Promise<any>