Skip to content

Info endpoint

Read market metadata, order books, account state, fills, funding, candles, and fees from POST /info.

Updated Nov 4, 2026Builders3 min read
On this page

The info endpoint is a single POST /info route. The type field in the request body selects the response schema. All examples use mainnet.

Pagination

Time-range responses return at most 500 elements or 500 distinct blocks. To page, pass the last returned timestamp as the next startTime.

Account address

Account queries require the account address, not an API wallet address. The API wallet is only a signer. Using the API wallet address returns an empty result.

POST/infoPublicWeight 2

Retrieve market metadata for all perpetual markets.

Request body

NameTypeRequiredDescription
typestringYesMust be "meta".
code
{
  "type": "meta"
}

The response contains universe (name, szDecimals, maxLeverage, onlyIsolated) and marginTables for each market.

Order book

POST/infoPublicWeight 2

Level-2 book snapshot for a single market.

Request body

NameTypeRequiredDescription
typestringYesMust be "l2Book".
coinstringYesMarket name, e.g. BTC-PERP.
nSigFigsintegerNoPrice aggregation: 2–5.
mantissaintegerNoOptional mantissa for finer aggregation.
code
{ "type": "l2Book", "coin": "BTC-PERP", "nSigFigs": 5 }

Each level is [price, size, orderCount]. Bids are first, asks second.

Account state

POST/infoPublicWeight 2

Cross and isolated margin summary for an account.

Request body

NameTypeRequiredDescription
typestringYesMust be "clearinghouseState".
userstringYesAccount address (0x...).
dexstringNoPerp DEX name; defaults to the first DEX.
code
{
  "type": "clearinghouseState",
  "user": "0x0000000000000000000000000000000000000000"
}

Response fields include marginSummary, crossMarginSummary, withdrawable, assetPositions, and time.

Open orders

POST/infoPublicWeight 2

All resting orders for an account.

Request body

NameTypeRequiredDescription
typestringYesMust be "openOrders".
userstringYesAccount address.
dexstringNoPerp DEX name.

Fills

POST/infoPublicWeight 20

Trade fills for an account, newest first.

Request body

NameTypeRequiredDescription
typestringYesMust be "userFills".
userstringYesAccount address.
aggregateByTimebooleanNoMerge fills at the same timestamp.

Fills are limited to the most recent 2,000 records. Use userFillsByTime with startTime and endTime for history.

Candles

POST/infoPublicWeight 4

OHLCV candles for a market.

Request body

NameTypeRequiredDescription
typestringYesMust be "candleSnapshot".
coinstringYesMarket name.
intervalstringYes1m, 5m, 15m, 1h, 4h, 1d, 1w.
startTimeintegerYesStart timestamp in ms.
endTimeintegerNoEnd timestamp in ms; defaults to now.

Funding history

POST/infoPublicWeight 4

Historical funding rates for a perpetual market.

Request body

NameTypeRequiredDescription
typestringYesMust be "fundingHistory".
coinstringYesPerp market name.
startTimeintegerYesStart timestamp in ms.
endTimeintegerNoEnd timestamp in ms.

Fees

POST/infoPublicWeight 2

Fee tier, 14-day volume, and current maker/taker rates.

Request body

NameTypeRequiredDescription
typestringYesMust be "userFees".
userstringYesAccount address.

WebSocket instead of polling

For live books and fills, use the WebSocket API. Polling these endpoints at high frequency will hit the address weight limit.

Was this page helpful?