Public Exchange Data
Some data is provided by the exchange without requiring authorization, including:
Async API Heartbeat
Matcher State
Instruments List
Coin Price Feed
Funding Rate Updates
Order Book Depth
Order Book Best
Last Trades
Available environments
All channel names have an {env} prefix showing the current environment.
futures-perp-dev— for the Development environmentfutures-perp-demo— for the Demo environmentfutures-perp-beta— for the Beta environmentfutures-perp— for the Production environment
Heartbeat
To check the availability of the exchange's Async API, the {env}:heartbeat channel is used, which periodically sends events with the current timestamp.
Important: If no events are received on this channel for more than 30 seconds, the connection to the Async API should be considered lost.
Matcher State
In some cases, trading may be globally paused for all instruments. To detect such states, use the GET /api/market method, which returns the current exchange state (state field).
The exchange signals state changes via Async API using the {env}:info channel, which transmits snapshots of the current state.
Important: Any state other than active should be treated as a global trading halt.
Instruments List
To get a list of instruments available for trading, use the GET /api/market/instrument method. This returns an array of all instruments registered on the exchange (including those not available for trading).
Important: If the trading field is none or restricted, the instrument should be considered unavailable for any orders. onlyClose means it is only available for position closing and order cancellation. Otherwise, the instrument is available for trading.
Instrument state updates are signaled via Async API on the {env}:instruments channel with snapshots of current instrument state.
Important: To ensure state consistency on the client, compare snapshots by the updatedAt field.
Coin Price Feed
For the Index Price calculation the following approach should be used:
Get the instrument price from the
from.avgLastPricefield of the REST endpoint GET /api/market/instrument response.Calculate the Index Price as the following:
const indexPrice = Big(avgLastPrice ?? 0)
.mul(pair.lotSize)
.toNumber();Get real-time updates on the Index Price (calculating it using the
lotSizeattribute) using the{env}:coin-priceWS channel.
export interface CoinPriceFeed {
id: string;
coin: string;
price: number;
source: PriceFeedSource;
createdAt: Date;
}
CoinPriceFeed[]Funding Rate
To get the current funding rate for an instrument, use the GET /api/market/instrument method with fields=metrics. This returns all instruments with additional metrics.
Important: This method is relatively heavy and should not be used frequently or during initial client load.
Funding rate updates are sent via Async API using the {env}:funding-rate channel.
Important: To ensure funding rate state consistency on the client, compare snapshots by the createdAt field.
Order Book Depth
To get the current state of the order book, use the GET api/market/{instrument}/deep method, which returns grouped volume data by price levels (up to 4 decimal places).
Order book updates are sent via Async API on the {env}:orderBook-{instrument}-0.1 channel.
Important: To ensure consistency of the order book state on the client, compare snapshots by the orderBook.t timestamp field.
Order Book Best
To get the best bid and ask prices, use the same REST API method as for order book depth but with the marketLevel=1 parameter.
Best price updates are sent via Async API using the {env}:orderBook-{instrument}-best channel. The event format matches the previous section.
Last Trades
To get a list of recent trades on the exchange, use the GET /api/market/{instrument}/recent-trades method. This returns anonymized trades for a specific instrument.
Trade updates are sent via Async API using the {env}:recent-trade-{instrument} channel.
Last updated