RFQ
rfq Channel
Monitor RFQ (Request for Quote) requests and responses. Supports complex option strategies with multiple instruments per request.
Subscribe
| Parameter | Required | Description |
|---|---|---|
account | No | Smart account address - filters RFQ events for this account |
type | No | "request" or "response" - filters by RFQ event type |
order_id | No | Specific 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_idmust 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": {}
}
}| Field | Type | Description |
|---|---|---|
taker | string | Address of the account requesting quotes |
rfq_orders | array | Array of market orders for multiple instruments |
order_id | string | 32-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": {}
}
}| Field | Type | Description |
|---|---|---|
taker | string | Address of the account that cancelled the request |
order_id | string | 32-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": {}
}
}| Field | Type | Description |
|---|---|---|
fills | array | Array of [MarketOrder, LimitOrder[]] pairs for each instrument |
order_id | string | References the original RFQ request ID |
response_id | string | Unique identifier for this specific response |
taker | string | Taker account address |
maker | string | Maker 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": {}
}
}| Field | Type | Description |
|---|---|---|
fills | array | Empty array for cancelled responses |
order_id | string | References the original RFQ request ID |
response_id | string | Unique 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": {}
}
}| Field | Type | Description |
|---|---|---|
fills | array | The filled response's [MarketOrder, LimitOrder[]] pairs |
order_id | string | References the original RFQ request ID |
response_id | string | Identifier of the filled response |
taker | string | Taker account address |
maker | string | Maker 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
| Channel | Why |
|---|---|
| Trade | When an RFQ response is accepted and executed, trade events deliver fill details (fees, index price, IV). |
| Position | RFQ fills create or modify positions. Multi-leg strategies update multiple positions simultaneously. |
| Orderbook Events | Accepted RFQ responses post limit orders to the book. Order lifecycle events appear on the orderbook channel. |
