asyncapi: 3.0.0 info: title: Bitnomial Market Data WebSocket API version: v1 description: >- Real-time market-data feed for Bitnomial's CFTC-regulated derivatives exchange. Clients open a WebSocket connection and must send a subscribe message within 10 seconds or they are disconnected. Faithful AsyncAPI representation generated by the API Evangelist enrichment pipeline from Bitnomial's published WebSocket API documentation; not an official Bitnomial artifact. externalDocs: url: https://bitnomial.com/exchange/docs/api/websocket/subscribe/ x-apievangelist: generated: '2026-07-18' method: generated source: https://bitnomial.com/exchange/docs/api/websocket/subscribe/ defaultContentType: application/json channels: trade: address: trade description: Trade updates for subscribed products. messages: tradeUpdate: $ref: '#/components/messages/TradeUpdate' book: address: book description: Order book updates for subscribed products. messages: bookUpdate: $ref: '#/components/messages/BookUpdate' block: address: block description: Block-trade updates for subscribed products. messages: blockUpdate: $ref: '#/components/messages/BlockUpdate' status: address: status description: Market/product status messages. messages: statusUpdate: $ref: '#/components/messages/StatusUpdate' control: address: control description: Client subscribe/unsubscribe control messages and disconnects. messages: subscribe: $ref: '#/components/messages/Subscribe' unsubscribe: $ref: '#/components/messages/Unsubscribe' disconnect: $ref: '#/components/messages/Disconnect' operations: subscribe: action: send channel: $ref: '#/channels/control' messages: - $ref: '#/channels/control/messages/subscribe' description: >- Subscribe to one or more channels for one or more product codes. Must be sent within 10 seconds of connecting. receiveTrade: action: receive channel: $ref: '#/channels/trade' receiveBook: action: receive channel: $ref: '#/channels/book' receiveBlock: action: receive channel: $ref: '#/channels/block' receiveStatus: action: receive channel: $ref: '#/channels/status' components: messages: Subscribe: name: subscribe payload: type: object properties: type: type: string const: subscribe product_codes: type: array items: type: string example: [BUCZ26, BUCO] channels: type: array items: type: string enum: [trade, book, block, status] Unsubscribe: name: unsubscribe payload: type: object properties: type: type: string const: unsubscribe product_codes: type: array items: type: string channels: type: array items: type: string enum: [trade, book, block, status] Disconnect: name: disconnect payload: type: object properties: reason: type: string description: Explanation for why the connection was terminated. TradeUpdate: name: trade payload: type: object description: Trade event for a product. BookUpdate: name: book payload: type: object description: Order book update for a product. BlockUpdate: name: block payload: type: object description: Block-trade event for a product. StatusUpdate: name: status payload: type: object description: Market or product status message.