RFQ

rfq Channel

Monitor RFQ (Request for Quote) requests and responses. Supports complex option strategies with multiple instruments per request.

Subscribe

ParameterRequiredDescription
accountNoSmart account address - filters RFQ events for this account
typeNo"request" or "response" - filters by RFQ event type
order_idNoSpecific RFQ order ID to monitor (32 hexadecimal characters)

Monitor all RFQ requests from an account:

{
  "channel": "rfq",
  "query": {
    "account": "0x1234567890abcdef1234567890abcdef12345678",
    "type": "request"
  }
}

Monitor all RFQ responses visible to an account:

{
  "channel": "rfq",
  "query": {
    "account": "0x1234567890abcdef1234567890abcdef12345678",
    "type": "response"
  }
}

Monitor all RFQ requests (market maker perspective):

{
  "channel": "rfq",
  "query": {
    "type": "request"
  }
}

Monitor a specific RFQ order:

{
  "channel": "rfq",
  "query": {
    "order_id": "863509b1a865fa3f502a9f6784122dd7"
  }
}

Monitor all RFQ activity:

{
  "channel": "rfq",
  "query": {}
}

The order_id must be exactly 32 hexadecimal characters. Use different query combinations based on your role (taker vs maker).

Event: rfq_request

Emitted when a new RFQ request is created. RFQ requests can contain multiple instruments to create option combinations.

{
  "kind": "event",
  "type": "rfq_request",
  "timestamp_ms": 1751468186897,
  "data": {
    "taker": "0x1234567890abcdef1234567890abcdef12345678",
    "rfq_orders": [
      {
        "instrument_name": "BTC_USDC-31OCT25-130000-C",
        "contracts": 25,
        "direction": "buy"
      },
      {
        "instrument_name": "BTC_USDC-31OCT25-108000-C",
        "contracts": 30,
        "direction": "sell"
      }
    ],
    "order_id": "863509b1a865fa3f502a9f6784122dd7"
  },
  "subscription": {
    "channel": "rfq",
    "query": {}
  }
}
FieldTypeDescription
takerstringAddress of the account requesting quotes
rfq_ordersarrayArray of market orders for multiple instruments
order_idstring32-character hex identifier for the RFQ request

Multiple instruments enable complex option strategies (spreads, straddles, etc.).

Event: rfq_post_response

Emitted when a market maker posts a new response to an RFQ request with pricing. Each fill represents a market order paired with limit orders that would satisfy it.

{
  "kind": "event",
  "type": "rfq_post_response",
  "timestamp_ms": 1751468277275,
  "data": {
    "fills": [
      [
        {
          "direction": "buy",
          "instrument_name": "BTC_USDC-31OCT25-130000-C",
          "contracts": 25
        },
        [
          {
            "direction": "buy",
            "instrument_name": "BTC_USDC-31OCT25-130000-C",
            "type": "good_til_cancelled",
            "contracts": 25,
            "price": 132500,
            "post_only": true,
            "mmp": false,
            "liquidation": false,
            "taker": "0x1234567890AbcdEF1234567890aBcdef12345678",
            "maker": "0x0987654321098765432109876543210987654321",
            "signature": "0x...",
            "signature_deadline": 1735689600,
            "order_id": "863509b1a865fa3f502a9f6784122dd7",
            "order_state": "open",
            "filled_amount": 0,
            "creation_timestamp": 1751468277,
            "chain_id": 421614,
            "to_be_filled": 25
          }
        ]
      ],
      [
        {
          "instrument_name": "BTC_USDC-31OCT25-108000-C",
          "contracts": 30,
          "direction": "sell"
        },
        [
          {
            "instrument_name": "BTC_USDC-31OCT25-108000-C",
            "type": "good_til_cancelled",
            "contracts": 30,
            "direction": "sell",
            "price": 150000,
            "post_only": true,
            "mmp": false,
            "liquidation": false,
            "taker": "0x1234567890AbcdEF1234567890aBcdef12345678",
            "maker": "0x0987654321098765432109876543210987654321",
            "signature": "0x...",
            "signature_deadline": 1735689600,
            "order_id": "863509b1a865fa3f502a9f6784122dd7",
            "order_state": "open",
            "filled_amount": 0,
            "creation_timestamp": 1751468277,
            "chain_id": 421614,
            "to_be_filled": 30
          }
        ]
      ]
    ],
    "order_id": "863509b1a865fa3f502a9f6784122dd7",
    "taker": "0x1234567890abcdef1234567890abcdef12345678",
    "maker": "0x0987654321098765432109876543210987654321",
    "response_id": "dc937919bb5dac8f50a82ecb16a01719"
  },
  "subscription": {
    "channel": "rfq",
    "query": {}
  }
}
FieldTypeDescription
fillsarrayArray of [MarketOrder, LimitOrder[]] pairs for each instrument
order_idstringReferences the original RFQ request ID
response_idstringUnique identifier for this specific response
takerstringTaker account address
makerstringMaker account address

Each limit order includes: signature, signature_deadline, order_state, filled_amount, creation_timestamp, chain_id, and to_be_filled.

Multi-instrument responses enable atomic execution of complex option strategies.

See EIP-712 Signatures Guide for signature details.

Event: rfq_cancel_response

Emitted when a market maker cancels a previously posted RFQ response.

{
  "kind": "event",
  "type": "rfq_cancel_response",
  "timestamp_ms": 1751468300000,
  "data": {
    "fills": [],
    "order_id": "863509b1a865fa3f502a9f6784122dd7",
    "taker": "0x1234567890AbcdEF1234567890aBcdef12345678",
    "maker": "0x0987654321098765432109876543210987654321",
    "response_id": "dc937919bb5dac8f50a82ecb16a01719"
  },
  "subscription": {
    "channel": "rfq",
    "query": {}
  }
}
FieldTypeDescription
fillsarrayEmpty array for cancelled responses
order_idstringReferences the original RFQ request ID
response_idstringUnique identifier of the cancelled response

Cancellation removes the response from the orderbook, preventing execution. Only the maker who posted the response can cancel it.

Related channels

ChannelWhy
TradeWhen an RFQ response is accepted and executed, trade events deliver fill details (fees, index price, IV).
PositionRFQ fills create or modify positions. Multi-leg strategies update multiple positions simultaneously.
Orderbook EventsAccepted RFQ responses post limit orders to the book. Order lifecycle events appear on the orderbook channel.