Stream RFQs
RFQ lifecycle frames.
/wsAuthorization
UDX-Access-KeyAPI key · headerrequiredOpaque API key ID.
UDX-Access-TimestampAPI key · headerrequiredUnix time in milliseconds, within 30 seconds of server time.
UDX-Access-SignatureAPI key · headerrequiredStandard-base64 RSA-PSS/SHA-256 signature with a 32-byte salt. Sign timestamp + "GET" + "/ws"; the upgrade request has no body hash and no idempotency key.
rfq_openedDeliver one RFQ that opened for the subscribed market.
typestringrequiredIdentifies an RFQ that opened.
sidSubscriptionIdrequiredExchange-assigned subscription ID whose lifetime is this WebSocket connection.
seqSequenceNumberrequiredGap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.
msgRfqrequiredA request for quote (RFQ).
Show propertiesHide properties
rfq_idstringPresent on every RFQ except one the exchange rejected before assigning an id; such an RFQ is identified by client_rfq_id alone.
requester_idstringThe participant identifier of the user who created this RFQ.
client_rfq_idstringThe requester's correlation identifier for this RFQ. Present only on RFQs created by the caller's member.
legsRfqLegListrequiredThe component markets and opposing sides that define the RFQ strategy, in the order supplied.
Show propertiesHide properties
RfqLegtickerTickerrequiredA human-meaningful natural key naming a single-leg or multi-leg market.
opposing_sidebooleanWhether this leg takes the side opposite the RFQ or the same side.
sidestringThe side the customer wants to execute. Absent for a two-sided RFQ.
buysellquantitystringNumber of contracts requested. Present when sized in contracts.
cash_quantitystringSize of the RFQ in dollars. Present when sized in cash.
statusRfqStatusrequiredAn RFQ's status.
openacceptedclosedrejectedrejection_reasonstringWhy the exchange rejected the RFQ. Present only when status is rejected.
market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idexchange_rejectedexpires_atstring<date-time>When the RFQ stops soliciting quotes.
rfq_acceptedDeliver one RFQ whose accepted quote is in the last-look window.
typestringrequiredIdentifies an RFQ whose quote was accepted.
sidSubscriptionIdrequiredExchange-assigned subscription ID whose lifetime is this WebSocket connection.
seqSequenceNumberrequiredGap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.
msgRfqrequiredA request for quote (RFQ).
Show propertiesHide properties
rfq_idstringPresent on every RFQ except one the exchange rejected before assigning an id; such an RFQ is identified by client_rfq_id alone.
requester_idstringThe participant identifier of the user who created this RFQ.
client_rfq_idstringThe requester's correlation identifier for this RFQ. Present only on RFQs created by the caller's member.
legsRfqLegListrequiredThe component markets and opposing sides that define the RFQ strategy, in the order supplied.
Show propertiesHide properties
RfqLegtickerTickerrequiredA human-meaningful natural key naming a single-leg or multi-leg market.
opposing_sidebooleanWhether this leg takes the side opposite the RFQ or the same side.
sidestringThe side the customer wants to execute. Absent for a two-sided RFQ.
buysellquantitystringNumber of contracts requested. Present when sized in contracts.
cash_quantitystringSize of the RFQ in dollars. Present when sized in cash.
statusRfqStatusrequiredAn RFQ's status.
openacceptedclosedrejectedrejection_reasonstringWhy the exchange rejected the RFQ. Present only when status is rejected.
market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idexchange_rejectedexpires_atstring<date-time>When the RFQ stops soliciting quotes.
rfq_closedDeliver one RFQ that reached a terminal state other than rejection, including expiry.
typestringrequiredIdentifies an RFQ that closed.
sidSubscriptionIdrequiredExchange-assigned subscription ID whose lifetime is this WebSocket connection.
seqSequenceNumberrequiredGap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.
msgRfqrequiredA request for quote (RFQ).
Show propertiesHide properties
rfq_idstringPresent on every RFQ except one the exchange rejected before assigning an id; such an RFQ is identified by client_rfq_id alone.
requester_idstringThe participant identifier of the user who created this RFQ.
client_rfq_idstringThe requester's correlation identifier for this RFQ. Present only on RFQs created by the caller's member.
legsRfqLegListrequiredThe component markets and opposing sides that define the RFQ strategy, in the order supplied.
Show propertiesHide properties
RfqLegtickerTickerrequiredA human-meaningful natural key naming a single-leg or multi-leg market.
opposing_sidebooleanWhether this leg takes the side opposite the RFQ or the same side.
sidestringThe side the customer wants to execute. Absent for a two-sided RFQ.
buysellquantitystringNumber of contracts requested. Present when sized in contracts.
cash_quantitystringSize of the RFQ in dollars. Present when sized in cash.
statusRfqStatusrequiredAn RFQ's status.
openacceptedclosedrejectedrejection_reasonstringWhy the exchange rejected the RFQ. Present only when status is rejected.
market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idexchange_rejectedexpires_atstring<date-time>When the RFQ stops soliciting quotes.
rfq_rejectedDeliver one RFQ the exchange rejected.
typestringrequiredIdentifies an RFQ the exchange rejected.
sidSubscriptionIdrequiredExchange-assigned subscription ID whose lifetime is this WebSocket connection.
seqSequenceNumberrequiredGap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.
msgRfqrequiredA request for quote (RFQ).
Show propertiesHide properties
rfq_idstringPresent on every RFQ except one the exchange rejected before assigning an id; such an RFQ is identified by client_rfq_id alone.
requester_idstringThe participant identifier of the user who created this RFQ.
client_rfq_idstringThe requester's correlation identifier for this RFQ. Present only on RFQs created by the caller's member.
legsRfqLegListrequiredThe component markets and opposing sides that define the RFQ strategy, in the order supplied.
Show propertiesHide properties
RfqLegtickerTickerrequiredA human-meaningful natural key naming a single-leg or multi-leg market.
opposing_sidebooleanWhether this leg takes the side opposite the RFQ or the same side.
sidestringThe side the customer wants to execute. Absent for a two-sided RFQ.
buysellquantitystringNumber of contracts requested. Present when sized in contracts.
cash_quantitystringSize of the RFQ in dollars. Present when sized in cash.
statusRfqStatusrequiredAn RFQ's status.
openacceptedclosedrejectedrejection_reasonstringWhy the exchange rejected the RFQ. Present only when status is rejected.
market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idexchange_rejectedexpires_atstring<date-time>When the RFQ stops soliciting quotes.
channel_unavailableThe channel's upstream source cannot serve the operation right now. Retry with backoff; the connection stays usable.
codestringrequiredStable machine-readable error code.
detailErrorDetailrequiredHuman-readable occurrence detail that clients must not parse.
instanceErrorInstancerequiredRequest identifier for troubleshooting with exchange support.
internal_errorAn unexpected failure left connection state safe to continue.
codestringrequiredStable machine-readable error code.
detailErrorDetailrequiredHuman-readable occurrence detail that clients must not parse.
instanceErrorInstancerequiredRequest identifier for troubleshooting with exchange support.
Channel Bindings
wsmethodGETheadersUDX-Access-KeystringrequiredOpaque API key ID.
UDX-Access-TimestampstringrequiredUnix time in milliseconds, within 30 seconds of server time.
UDX-Access-SignaturestringrequiredStandard-base64 RSA-PSS/SHA-256 signature with a 32-byte salt. Sign timestamp + "GET" + "/ws"; the upgrade request has no body hash and no idempotency key.
Sec-WebSocket-ProtocolstringrequiredNegotiated dated WebSocket API version.
rfq_opened
{
"type": "rfq_opened",
"sid": 9,
"seq": 2,
"msg": {
"rfq_id": "RFQ-EXAMPLE-1",
"client_rfq_id": "my-rfq-1",
"status": "open",
"side": "buy",
"quantity": "100",
"legs": [
{
"ticker": "UDX-EXAMPLE-MARKET-A"
}
]
}
}rfq_accepted
{
"type": "rfq_accepted",
"sid": 9,
"seq": 3,
"msg": {
"rfq_id": "RFQ-EXAMPLE-1",
"status": "accepted",
"legs": [
{
"ticker": "UDX-EXAMPLE-MARKET-A"
}
]
}
}rfq_closed
{
"type": "rfq_closed",
"sid": 9,
"seq": 4,
"msg": {
"rfq_id": "RFQ-EXAMPLE-1",
"status": "closed",
"legs": [
{
"ticker": "UDX-EXAMPLE-MARKET-A"
}
]
}
}rfq_rejected
{
"type": "rfq_rejected",
"sid": 9,
"seq": 5,
"msg": {
"client_rfq_id": "my-rfq-1",
"status": "rejected",
"rejection_reason": "market_closed",
"legs": [
{
"ticker": "UDX-EXAMPLE-MARKET-A"
}
]
}
}channel_unavailable
{
"type": "error",
"sid": 7,
"msg": {
"code": "channel_unavailable",
"detail": "current market data is unavailable for this subscription",
"instance": "urn:request-id:4ecbe594-50fa-4b7a-950f-5ed74bb8372d"
}
}internal_error
{
"type": "error",
"sid": 7,
"msg": {
"code": "internal_error",
"detail": "the subscription could not be continued",
"instance": "urn:request-id:4ecbe594-50fa-4b7a-950f-5ed74bb8372d"
}
}