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_post_request

Emitted when a new RFQ request is created (this event was previously named rfq_request). RFQ requests can contain multiple instruments to create option combinations.

{
  "kind": "event",
  "type": "rfq_post_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_cancel_request

Emitted when a taker cancels their own RFQ request (for example via DELETE /rfq/request). The payload mirrors rfq_post_request.

{
  "kind": "event",
  "type": "rfq_cancel_request",
  "timestamp_ms": 1751468300000,
  "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 that cancelled the request
order_idstring32-character hex identifier of the cancelled RFQ request

This event belongs to the request subscription type (alongside rfq_post_request).

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.

Event: rfq_fill_response

Emitted when a taker fills a maker's RFQ response (via POST /rfq/fill). The payload mirrors rfq_post_response (the response that was filled).

{
  "kind": "event",
  "type": "rfq_fill_response",
  "timestamp_ms": 1751468400000,
  "data": {
    "fills": [
      [
        {
          "direction": "buy",
          "instrument_name": "BTC_USDC-31OCT25-130000-C",
          "contracts": 25
        },
        [
          {
            "direction": "sell",
            "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": "filled",
            "filled_amount": 25,
            "filled_contracts": 25,
            "creation_timestamp": 1751468277,
            "chain_id": 421614
          }
        ]
      ]
    ],
    "order_id": "863509b1a865fa3f502a9f6784122dd7",
    "taker": "0x1234567890AbcdEF1234567890aBcdef12345678",
    "maker": "0x0987654321098765432109876543210987654321",
    "response_id": "dc937919bb5dac8f50a82ecb16a01719"
  },
  "subscription": {
    "channel": "rfq",
    "query": {}
  }
}
FieldTypeDescription
fillsarrayThe filled response's [MarketOrder, LimitOrder[]] pairs
order_idstringReferences the original RFQ request ID
response_idstringIdentifier of the filled response
takerstringTaker account address
makerstringMaker account address

This event belongs to the response subscription type (alongside rfq_post_response and rfq_cancel_response). Once filled, execution details (fees, index price, IV) are delivered on the Trade channel.

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.