Qfex · AsyncAPI Specification
QFEX Multiplexed WebSocket API
Version 1.0.0
Single WebSocket gateway for all QFEX real‑time streams. Clients publish subscription and order commands here, and receive all updates over the same endpoint.
View Spec
View on GitHub
CompanyTradingExchangePerpetual FuturesMarket DataWebSocketFXCommoditiesEquitiesFinancial ServicesCLIFintechReal-timeAsyncAPIWebhooksEvents
Channels
qfex
Single channel for orderbook, trades, candles
Messages
✉
SubscribeOrderBookCommand
level2
Subscribe to the order book
✉
SubscribeTradesCommand
trade
Subscribe to public trades
✉
SubscribeCandlesCommand
candle
Subscribe to candles
✉
SubscribeBboCommand
bbo
Subscribe to best bid and offer
✉
SubscribeUnderlierCommand
underlier
Subscribe to underlier
✉
SubscribeMarkPriceCommand
mark_price
Subscribe to mark price
✉
SubscribeFundingRateCommand
funding
Subscribe to funding rate
✉
SubscribeOpenInterestCommand
open_interest
Subscribe to open interest
✉
SubscribeMinmaxPriceCommand
minmax_price
Subscribe to minmax price
✉
SubscribeMarketStatsCommand
market_stats
Subscribe to consolidated market statistics
✉
OrderBookUpdate
level2
Changes in the L2 order book
✉
TradeUpdate
trades
Public trades
✉
CandleUpdate
candle
Candle updates over various intervals
✉
BboUpdate
bbo
Best bid and offer updates
✉
UnderlierUpdate
underlier
Underlier updates
✉
MarkPriceUpdate
mark_price
Mark price updates
✉
FundingRateUpdate
funding
Funding rate updates
✉
OpenInterestUpdate
open_interest
Open Interest updates
✉
MinmaxPriceUpdate
minmax_price
Minmax Price updates
✉
MarketStatsUpdate
market_stats
Consolidated market statistics updates
Servers
wss
production
Production WebSocket gateway
AsyncAPI Specification
asyncapi: 3.0.0
info:
title: QFEX Multiplexed WebSocket API
version: 1.0.0
description: |-
Single WebSocket gateway for all QFEX real‑time streams.
Clients publish subscription and order commands here,
and receive all updates over the same endpoint.
defaultContentType: application/json
servers:
production:
host: mds.qfex.com
protocol: wss
description: Production WebSocket gateway
channels:
qfex:
address: /
description: Single channel for orderbook, trades, candles
messages:
subscribeOrderBook:
$ref: '#/components/messages/SubscribeOrderBookCommand'
subscribeTrades:
$ref: '#/components/messages/SubscribeTradesCommand'
subscribeCandles:
$ref: '#/components/messages/SubscribeCandlesCommand'
subscribeBbo:
$ref: '#/components/messages/SubscribeBboCommand'
subscribeUnderlier:
$ref: '#/components/messages/SubscribeUnderlierCommand'
subscribeMarkPrice:
$ref: '#/components/messages/SubscribeMarkPriceCommand'
subscribeFundingRate:
$ref: '#/components/messages/SubscribeFundingRateCommand'
subscribeOpenInterest:
$ref: '#/components/messages/SubscribeOpenInterestCommand'
subscribeMinmaxPrice:
$ref: '#/components/messages/SubscribeMinmaxPriceCommand'
subscribeMarketStats:
$ref: '#/components/messages/SubscribeMarketStatsCommand'
orderBookUpdate:
$ref: '#/components/messages/OrderBookUpdate'
tradeUpdate:
$ref: '#/components/messages/TradeUpdate'
candleUpdate:
$ref: '#/components/messages/CandleUpdate'
bboUpdate:
$ref: '#/components/messages/BboUpdate'
underlierUpdate:
$ref: '#/components/messages/UnderlierUpdate'
markPriceUpdate:
$ref: '#/components/messages/MarkPriceUpdate'
fundingRateUpdate:
$ref: '#/components/messages/FundingRateUpdate'
openInterestUpdate:
$ref: '#/components/messages/OpenInterestUpdate'
minmaxPriceUpdate:
$ref: '#/components/messages/MinmaxPriceUpdate'
marketStatsUpdate:
$ref: '#/components/messages/MarketStatsUpdate'
operations:
subscribeOrderBookStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeOrderBook'
subscribeTradesStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeTrades'
subscribeBboStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeBbo'
subscribeUnderlierStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeUnderlier'
subscribeMarkPriceStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeMarkPrice'
subscribeFundingRateStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeFundingRate'
subscribeCandlesStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeCandles'
subscribeOpenInterestStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeOpenInterest'
subscribeMinmaxPriceStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to a data stream
messages:
- $ref: '#/channels/qfex/messages/subscribeMinmaxPrice'
subscribeMarketStatsStream:
action: receive
channel:
$ref: '#/channels/qfex'
summary: Subscribe to consolidated market statistics
messages:
- $ref: '#/channels/qfex/messages/subscribeMarketStats'
receiveUpdates:
action: send
channel:
$ref: '#/channels/qfex'
summary: Receive all update messages and events
messages:
- $ref: '#/channels/qfex/messages/orderBookUpdate'
- $ref: '#/channels/qfex/messages/tradeUpdate'
- $ref: '#/channels/qfex/messages/candleUpdate'
- $ref: '#/channels/qfex/messages/bboUpdate'
- $ref: '#/channels/qfex/messages/underlierUpdate'
- $ref: '#/channels/qfex/messages/markPriceUpdate'
- $ref: '#/channels/qfex/messages/fundingRateUpdate'
- $ref: '#/channels/qfex/messages/openInterestUpdate'
- $ref: '#/channels/qfex/messages/minmaxPriceUpdate'
- $ref: '#/channels/qfex/messages/marketStatsUpdate'
components:
messageTraits:
commonHeaders:
headers:
type: object
properties:
x-qfex-client:
type: string
description: Client identifier
operationTraits:
websocket:
bindings:
ws: {}
messages:
SubscribeOrderBookCommand:
name: subscribe_level2
title: level2
summary: Subscribe to the order book
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeOrderBookCommand'
SubscribeTradesCommand:
name: subscribe_trades
title: trade
summary: Subscribe to public trades
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeTradesCommand'
SubscribeCandlesCommand:
name: subscribe_candles
title: candle
summary: Subscribe to candles
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeCandlesCommand'
SubscribeBboCommand:
name: subscribe_bbo
title: bbo
summary: Subscribe to best bid and offer
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeBboCommand'
SubscribeUnderlierCommand:
name: subscribe_underlier
title: underlier
summary: Subscribe to underlier
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeUnderlierCommand'
SubscribeMarkPriceCommand:
name: subscribe_mark_price
title: mark_price
summary: Subscribe to mark price
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeMarkPriceCommand'
SubscribeFundingRateCommand:
name: subscribe_funding
title: funding
summary: Subscribe to funding rate
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeFundingRateCommand'
SubscribeOpenInterestCommand:
name: subscribe_open_interest
title: open_interest
summary: Subscribe to open interest
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeOpenInterestCommand'
SubscribeMinmaxPriceCommand:
name: subscribe_minmax_price
title: minmax_price
summary: Subscribe to minmax price
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeMinmaxPriceCommand'
SubscribeMarketStatsCommand:
name: subscribe_market_stats
title: market_stats
summary: Subscribe to consolidated market statistics
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/SubscribeMarketStatsCommand'
OrderBookUpdate:
name: level2_update
title: level2
summary: Changes in the L2 order book
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/OrderBookUpdate'
TradeUpdate:
name: trade_update
title: trades
summary: Public trades
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/TradeUpdate'
CandleUpdate:
name: candle_update
title: candle
summary: Candle updates over various intervals
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/CandleUpdate'
BboUpdate:
name: bbo_update
title: bbo
summary: Best bid and offer updates
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/BboUpdate'
UnderlierUpdate:
name: underlier_update
title: underlier
summary: Underlier updates
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/UnderlierUpdate'
MarkPriceUpdate:
name: mark_price_update
title: mark_price
summary: Mark price updates
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/MarkPriceUpdate'
FundingRateUpdate:
name: funding_update
title: funding
summary: Funding rate updates
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/FundingRateUpdate'
OpenInterestUpdate:
name: open_interest_update
title: open_interest
summary: Open Interest updates
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/OpenInterestUpdate'
MinmaxPriceUpdate:
name: minmax_price_update
title: minmax_price
summary: Minmax Price updates
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/MinmaxPriceUpdate'
MarketStatsUpdate:
name: market_stats_update
title: market_stats
summary: Consolidated market statistics updates
contentType: application/json
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: '#/components/schemas/MarketStatsUpdate'
schemas:
MessageEnvelope:
type: object
properties:
type:
type: string
connection_id:
type: string
message_id:
type: integer
channel:
type: string
id:
type: string
required:
- type
- connection_id
- message_id
SubscribeOrderBookCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- level2
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD", can also use "*" for all symbols
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- level2
symbols:
- AAPL-USD
SubscribeTradesCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- trade
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD", can also use "*" for all symbols
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- trade
symbols:
- AAPL-USD
SubscribeCandlesCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- candle
description: candle
symbols:
type: array
items:
type: string
description: Symbol/Interval, e.g. "AAPL-USD/1MIN"
intervals:
type: array
items:
type: string
enum:
- 1MIN
- 5MINS
- 15MINS
- 1HOUR
- 4HOURS
- 1DAY
description: Candle intervals, e.g. "1MIN"
required:
- type
- channels
- symbols
- intervals
examples:
- type: subscribe
channels:
- candle
symbols:
- AAPL-USD
intervals:
- 1MIN
SubscribeBboCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- bbo
description: bbo
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD"
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- bbo
symbols:
- AAPL-USD
SubscribeUnderlierCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- underlier
description: underlier
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD"
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- underlier
symbols:
- AAPL-USD
SubscribeMarkPriceCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- mark_price
description: mark_price
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD"
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- mark_price
symbols:
- AAPL-USD
SubscribeFundingRateCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- funding
description: funding
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD"
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- funding
symbols:
- AAPL-USD
SubscribeOpenInterestCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- open_interest
description: open_interest
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD"
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- open_interest
symbols:
- AAPL-USD
SubscribeMinmaxPriceCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- minmax_price
description: minmax_price
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD"
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- minmax_price
symbols:
- AAPL-USD
SubscribeMarketStatsCommand:
type: object
properties:
type:
type: string
enum:
- unsubscribe
- subscribe
channels:
type: array
items:
type: string
enum:
- market_stats
description: market_stats
symbols:
type: array
items:
type: string
description: Trading pairs, e.g. "AAPL-USD", can also use "*" for all symbols
required:
- type
- channels
- symbols
examples:
- type: subscribe
channels:
- market_stats
symbols:
- '*'
OrderBookUpdate:
examples:
- type: level2
symbol: AAPL-USD
time: '2025-08-20T09:26:36.861195808Z'
bid:
- - '564.1'
- '0.1'
- - '560.3'
- '0.001'
ask:
- - '566.2'
- '2.118'
- - '566.3'
- '2.119'
sig_figs: 2
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/OrderBookPayload'
TradeUpdate:
examples:
- type: trade
trade_id: ab59768f-f81e-4535-80c0-7b35f6709704
time: '2025-08-20T09:26:36.861195808Z'
symbol: PLTR-USD
size: '0.100000'
price: '157.025000'
side: SELL
execution_type: T
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/TradePayload'
CandleUpdate:
examples:
- type: candle
symbol: PLTR-USD
start: '2025-08-20T09:27:00Z'
resolution: 1MIN
low: '155.700000'
high: '157.225000'
open: '156.475000'
close: '156.900000'
usdVolume: 16700
trades: 16
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/CandlePayload'
BboUpdate:
examples:
- type: bbo
symbol: AAPL-USD
time: '2025-08-20T09:26:36.861195808Z'
bid:
- - '564.1'
- '2.126'
ask:
- - '566.2'
- '2.118'
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/BboPayload'
UnderlierUpdate:
examples:
- type: underlier
symbol: AAPL-USD
price: '437.45'
time: '2025-05-08T20:52:48.000Z'
source: external
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/UnderlierPayload'
MarkPriceUpdate:
examples:
- type: mark_price
symbol: AAPL-USD
price: '437.45'
time: '2025-05-08T20:52:48.000Z'
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/MarkPricePayload'
FundingRateUpdate:
examples:
- type: funding
symbol: AAPL-USD
funding_rate: '0.21'
time_remaining: 32 //in seconds
time: '2025-05-08T20:52:48.000Z'
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/FundingRatePayload'
OpenInterestUpdate:
examples:
- type: open_interest
symbol: AAPL-USD
open_interest: '1000000'
time: '2025-05-08T20:52:48.000Z'
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/OpenInterestPayload'
MinmaxPriceUpdate:
examples:
- type: minmax_price
symbol: AAPL-USD
min_price: '400.00'
max_price: '450.00'
time: '2025-05-08T20:52:48.000Z'
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/MinmaxPricePayload'
MarketStatsUpdate:
examples:
- type: market_stats
sequence: 30272540
time: '2025-09-04T09:26:40Z'
symbol: '*'
bbos:
- time: '2025-09-04T09:26:39.545268322Z'
symbol: AAPL-USD
bid:
- - '10101.1'
- '0.4505414'
ask:
- - '10102.55'
- '0.57753524'
mark_prices:
- time: '2025-09-04T09:26:39.545268322Z'
symbol: AAPL-USD
price: '10102'
open_interests:
- time: '2025-09-04T09:26:39.545268322Z'
symbol: AAPL-USD
open_interest: '12.5'
daily_volumes:
- symbol: AAPL-USD
volume: '12.5'
allOf:
- $ref: '#/components/schemas/MessageEnvelope'
- type: object
properties:
contents:
type: array
items:
$ref: '#/components/schemas/MarketStatsPayload'
BboPayload:
type: object
properties:
time:
type: string
format: date-time
symbol:
type: string
bid:
type: array
items:
type: array
items:
type: string
minItems: 2
maxItems: 2
ask:
type: array
items:
type: array
items:
type: string
minItems: 2
maxItems: 2
UnderlierPayload:
type: object
properties:
time:
type: string
format: date-time
symbol:
type: string
price:
type: string
source:
type: string
enum:
- internal
- external
FundingRatePayload:
type: object
properties:
time:
type: string
format: date-time
symbol:
type: string
funding_rate:
type: string
time_remaining:
type: integer
MarkPricePayload:
type: object
properties:
time:
type: string
format: date-time
symbol:
type: string
price:
type: string
OpenInterestPayload:
type: object
properties:
time:
type: string
format: date-time
symbol:
type: string
open_interest:
type: string
MinmaxPricePayload:
type: object
properties:
time:
type: string
format: date-time
symbol:
type: string
min_price:
type: string
max_price:
type: string
MarketStatsPayload:
type: object
properties:
time:
type: string
format: date-time
symbol:
type: string
description: Requested symbol or "*" for wildcard subscriptions
bbos:
type: array
items:
$ref: '#/components/schemas/BboPayload'
mark_prices:
type: array
items:
$ref: '#/components/schemas/MarkPricePayload'
open_interests:
type: array
items:
$ref: '#/components/schemas/OpenInterestPayload'
daily_volumes:
type: array
items:
$ref: '#/components/schemas/DailyVolumePayload'
DailyVolumePayload:
type: object
properties:
symbol:
type: string
volume:
type: string
OrderBookPayload:
type: object
properties:
time:
type: string
format: date-time
symbol:
type: string
bid:
type: array
items:
type: array
items:
type: string
minItems: 2
maxItems: 2
ask:
type: array
items:
type: array
items:
type: string
minItems: 2
maxItems: 2
sig_figs:
type: integer
TradePayload:
type: object
properties:
trade_id:
type: string
time:
type: string
format: date-time
symbol:
type: string
size:
type: string
price:
type: string
side:
type: string
execution_type:
type: string
CandlePayload:
type: object
properties:
start:
type: string
format: date-time
symbol:
type: string
resolution:
type: string
open:
type: string
high:
type: string
low:
type: string
close:
type: string
usdVolume:
type: integer
trades:
type: integer
BalancePayload:
type: object
properties:
deposit:
type: number
realised_pnl:
type: number
unrealised_pnl:
type: number
order_margin:
type: number
position_margin:
type: number
available_balance:
type: number
PositionPayload:
type: object
properties:
symbol:
type: string
position:
type: number
average_price:
type: number
PnlEntryPayload:
type: object
properties:
user_id:
type: string
available_balance:
type: number
realised_pnl:
type: number