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.
/infoPublicWeight 2Retrieve market metadata for all perpetual markets.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "meta". |
{
"type": "meta"
}The response contains universe (name, szDecimals, maxLeverage, onlyIsolated) and marginTables for each market.
Order book
/infoPublicWeight 2Level-2 book snapshot for a single market.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "l2Book". |
coin | string | Yes | Market name, e.g. BTC-PERP. |
nSigFigs | integer | No | Price aggregation: 2–5. |
mantissa | integer | No | Optional mantissa for finer aggregation. |
{ "type": "l2Book", "coin": "BTC-PERP", "nSigFigs": 5 }{
"coin": "BTC-PERP",
"time": 1762732800123,
"levels": [
[["104279.5", "0.842", 4], ["104278.0", "1.204", 7]],
[["104281.0", "0.514", 3], ["104282.5", "0.987", 9]]
]
}Each level is [price, size, orderCount]. Bids are first, asks second.
Account state
/infoPublicWeight 2Cross and isolated margin summary for an account.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "clearinghouseState". |
user | string | Yes | Account address (0x...). |
dex | string | No | Perp DEX name; defaults to the first DEX. |
{
"type": "clearinghouseState",
"user": "0x0000000000000000000000000000000000000000"
}Response fields include marginSummary, crossMarginSummary, withdrawable, assetPositions, and time.
Open orders
/infoPublicWeight 2All resting orders for an account.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "openOrders". |
user | string | Yes | Account address. |
dex | string | No | Perp DEX name. |
Fills
/infoPublicWeight 20Trade fills for an account, newest first.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "userFills". |
user | string | Yes | Account address. |
aggregateByTime | boolean | No | Merge fills at the same timestamp. |
Fills are limited to the most recent 2,000 records. Use userFillsByTime with startTime and endTime for history.
Candles
/infoPublicWeight 4OHLCV candles for a market.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "candleSnapshot". |
coin | string | Yes | Market name. |
interval | string | Yes | 1m, 5m, 15m, 1h, 4h, 1d, 1w. |
startTime | integer | Yes | Start timestamp in ms. |
endTime | integer | No | End timestamp in ms; defaults to now. |
Funding history
/infoPublicWeight 4Historical funding rates for a perpetual market.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "fundingHistory". |
coin | string | Yes | Perp market name. |
startTime | integer | Yes | Start timestamp in ms. |
endTime | integer | No | End timestamp in ms. |
Fees
/infoPublicWeight 2Fee tier, 14-day volume, and current maker/taker rates.
Request body
| Name | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Must be "userFees". |
user | string | Yes | Account 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.