Skip to content
UDX
2026-08-11

Stream Quotes

Quote lifecycle frames for every quote visible to the caller’s member. A frame can omit requester_id. The subscription stays active when it is absent.

SEND/ws
Authorization
Authorization
UDX-Access-KeyAPI key · headerrequired

Opaque API key ID.

UDX-Access-TimestampAPI key · headerrequired

Unix time in milliseconds, within 30 seconds of server time.

UDX-Access-SignatureAPI key · headerrequired

Standard-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.

Messages
quote_openedDeliver one quote that landed live on the exchange.
typestringrequired

Identifies a quote that opened.

sidSubscriptionIdrequired

Exchange-assigned subscription ID whose lifetime is this WebSocket connection.

min 1 · max 9007199254740991
seqSequenceNumberrequired

Gap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.

min 1 · max 9007199254740991
msgQuoterequired

A single-sided quote.

Show properties
quote_idEntityIdrequired

An exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.

min length 1
client_quote_idstring

The quoter's correlation identifier. Present only on quotes the caller's member submitted; a quote answering the caller's RFQ omits it.

quoter_idstring

The participant identifier of the user who created this quote.

min length 1 · max length 64
requester_idstring

The participant identifier of the user who created the RFQ this quote responds to. Omitted when the parent RFQ is temporarily unavailable.

min length 1 · max length 64
rfq_idstringrequired

The RFQ this quote responds to.

min length 1
tickerTickerrequired

A human-meaningful natural key naming a single-leg or multi-leg market.

min length 1 · max length 128
sideOrderSiderequired

Order side.

Allowed:buysell
pricestringrequired

Quote price in YES price space, in dollars.

max length 24 · matches ^[0-9]+(\.[0-9]{1,6})?$
quantitystringrequired

Number of contracts offered.

max length 24 · matches ^[0-9]+(\.[0-9]{1,2})?$
statusQuoteStatusrequired

Quote status.

Allowed:openacceptedconfirmedcanceledrejected
cancellation_reasonstring

Why the quote was canceled. Present only when status is canceled.

Allowed:done_awayexpired_before_acceptancecanceled_by_maker_or_last_look_expired
rejection_reasonstring

Why the quote was rejected. Present only when status is rejected.

Allowed:market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idrejected_by_makerexchange_rejected
expires_atstring<date-time>

The current quote deadline. While the quote is accepted, this is the end of the maker's last-look window.

max length 40
quote_acceptedDeliver one quote a taker accepted, now in the maker's last-look window.
typestringrequired

Identifies a quote a taker accepted.

sidSubscriptionIdrequired

Exchange-assigned subscription ID whose lifetime is this WebSocket connection.

min 1 · max 9007199254740991
seqSequenceNumberrequired

Gap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.

min 1 · max 9007199254740991
msgQuoterequired

A single-sided quote.

Show properties
quote_idEntityIdrequired

An exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.

min length 1
client_quote_idstring

The quoter's correlation identifier. Present only on quotes the caller's member submitted; a quote answering the caller's RFQ omits it.

quoter_idstring

The participant identifier of the user who created this quote.

min length 1 · max length 64
requester_idstring

The participant identifier of the user who created the RFQ this quote responds to. Omitted when the parent RFQ is temporarily unavailable.

min length 1 · max length 64
rfq_idstringrequired

The RFQ this quote responds to.

min length 1
tickerTickerrequired

A human-meaningful natural key naming a single-leg or multi-leg market.

min length 1 · max length 128
sideOrderSiderequired

Order side.

Allowed:buysell
pricestringrequired

Quote price in YES price space, in dollars.

max length 24 · matches ^[0-9]+(\.[0-9]{1,6})?$
quantitystringrequired

Number of contracts offered.

max length 24 · matches ^[0-9]+(\.[0-9]{1,2})?$
statusQuoteStatusrequired

Quote status.

Allowed:openacceptedconfirmedcanceledrejected
cancellation_reasonstring

Why the quote was canceled. Present only when status is canceled.

Allowed:done_awayexpired_before_acceptancecanceled_by_maker_or_last_look_expired
rejection_reasonstring

Why the quote was rejected. Present only when status is rejected.

Allowed:market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idrejected_by_makerexchange_rejected
expires_atstring<date-time>

The current quote deadline. While the quote is accepted, this is the end of the maker's last-look window.

max length 40
quote_confirmedDeliver one quote the maker confirmed during last look.
typestringrequired

Identifies a quote the maker confirmed.

sidSubscriptionIdrequired

Exchange-assigned subscription ID whose lifetime is this WebSocket connection.

min 1 · max 9007199254740991
seqSequenceNumberrequired

Gap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.

min 1 · max 9007199254740991
msgQuoterequired

A single-sided quote.

Show properties
quote_idEntityIdrequired

An exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.

min length 1
client_quote_idstring

The quoter's correlation identifier. Present only on quotes the caller's member submitted; a quote answering the caller's RFQ omits it.

quoter_idstring

The participant identifier of the user who created this quote.

min length 1 · max length 64
requester_idstring

The participant identifier of the user who created the RFQ this quote responds to. Omitted when the parent RFQ is temporarily unavailable.

min length 1 · max length 64
rfq_idstringrequired

The RFQ this quote responds to.

min length 1
tickerTickerrequired

A human-meaningful natural key naming a single-leg or multi-leg market.

min length 1 · max length 128
sideOrderSiderequired

Order side.

Allowed:buysell
pricestringrequired

Quote price in YES price space, in dollars.

max length 24 · matches ^[0-9]+(\.[0-9]{1,6})?$
quantitystringrequired

Number of contracts offered.

max length 24 · matches ^[0-9]+(\.[0-9]{1,2})?$
statusQuoteStatusrequired

Quote status.

Allowed:openacceptedconfirmedcanceledrejected
cancellation_reasonstring

Why the quote was canceled. Present only when status is canceled.

Allowed:done_awayexpired_before_acceptancecanceled_by_maker_or_last_look_expired
rejection_reasonstring

Why the quote was rejected. Present only when status is rejected.

Allowed:market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idrejected_by_makerexchange_rejected
expires_atstring<date-time>

The current quote deadline. While the quote is accepted, this is the end of the maker's last-look window.

max length 40
quote_canceledDeliver one quote that was canceled, expired, or ended without a trade.
typestringrequired

Identifies a quote that was canceled.

sidSubscriptionIdrequired

Exchange-assigned subscription ID whose lifetime is this WebSocket connection.

min 1 · max 9007199254740991
seqSequenceNumberrequired

Gap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.

min 1 · max 9007199254740991
msgQuoterequired

A single-sided quote.

Show properties
quote_idEntityIdrequired

An exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.

min length 1
client_quote_idstring

The quoter's correlation identifier. Present only on quotes the caller's member submitted; a quote answering the caller's RFQ omits it.

quoter_idstring

The participant identifier of the user who created this quote.

min length 1 · max length 64
requester_idstring

The participant identifier of the user who created the RFQ this quote responds to. Omitted when the parent RFQ is temporarily unavailable.

min length 1 · max length 64
rfq_idstringrequired

The RFQ this quote responds to.

min length 1
tickerTickerrequired

A human-meaningful natural key naming a single-leg or multi-leg market.

min length 1 · max length 128
sideOrderSiderequired

Order side.

Allowed:buysell
pricestringrequired

Quote price in YES price space, in dollars.

max length 24 · matches ^[0-9]+(\.[0-9]{1,6})?$
quantitystringrequired

Number of contracts offered.

max length 24 · matches ^[0-9]+(\.[0-9]{1,2})?$
statusQuoteStatusrequired

Quote status.

Allowed:openacceptedconfirmedcanceledrejected
cancellation_reasonstring

Why the quote was canceled. Present only when status is canceled.

Allowed:done_awayexpired_before_acceptancecanceled_by_maker_or_last_look_expired
rejection_reasonstring

Why the quote was rejected. Present only when status is rejected.

Allowed:market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idrejected_by_makerexchange_rejected
expires_atstring<date-time>

The current quote deadline. While the quote is accepted, this is the end of the maker's last-look window.

max length 40
quote_rejectedDeliver one quote the exchange rejected or the maker passed on.
typestringrequired

Identifies a quote that was rejected.

sidSubscriptionIdrequired

Exchange-assigned subscription ID whose lifetime is this WebSocket connection.

min 1 · max 9007199254740991
seqSequenceNumberrequired

Gap-detection sequence local to one subscription. It starts at 1 and increments once per frame on that subscription.

min 1 · max 9007199254740991
msgQuoterequired

A single-sided quote.

Show properties
quote_idEntityIdrequired

An exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.

min length 1
client_quote_idstring

The quoter's correlation identifier. Present only on quotes the caller's member submitted; a quote answering the caller's RFQ omits it.

quoter_idstring

The participant identifier of the user who created this quote.

min length 1 · max length 64
requester_idstring

The participant identifier of the user who created the RFQ this quote responds to. Omitted when the parent RFQ is temporarily unavailable.

min length 1 · max length 64
rfq_idstringrequired

The RFQ this quote responds to.

min length 1
tickerTickerrequired

A human-meaningful natural key naming a single-leg or multi-leg market.

min length 1 · max length 128
sideOrderSiderequired

Order side.

Allowed:buysell
pricestringrequired

Quote price in YES price space, in dollars.

max length 24 · matches ^[0-9]+(\.[0-9]{1,6})?$
quantitystringrequired

Number of contracts offered.

max length 24 · matches ^[0-9]+(\.[0-9]{1,2})?$
statusQuoteStatusrequired

Quote status.

Allowed:openacceptedconfirmedcanceledrejected
cancellation_reasonstring

Why the quote was canceled. Present only when status is canceled.

Allowed:done_awayexpired_before_acceptancecanceled_by_maker_or_last_look_expired
rejection_reasonstring

Why the quote was rejected. Present only when status is rejected.

Allowed:market_closedmarket_unknownnot_open_for_quotingexpiredduplicate_client_idrejected_by_makerexchange_rejected
expires_atstring<date-time>

The current quote deadline. While the quote is accepted, this is the end of the maker's last-look window.

max length 40
Errors
permission_deniedThe caller lacks required access.
codestringrequired

Stable machine-readable error code.

detailErrorDetailrequired

Human-readable occurrence detail that clients must not parse.

min length 1 · max length 500
instanceErrorInstancerequired

Request identifier for troubleshooting with exchange support.

max length 100 · matches ^urn:request-id:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
channel_unavailableThe channel's upstream source cannot serve the operation right now. Retry with backoff; the connection stays usable.
codestringrequired

Stable machine-readable error code.

detailErrorDetailrequired

Human-readable occurrence detail that clients must not parse.

min length 1 · max length 500
instanceErrorInstancerequired

Request identifier for troubleshooting with exchange support.

max length 100 · matches ^urn:request-id:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
internal_errorAn unexpected failure left connection state safe to continue.
codestringrequired

Stable machine-readable error code.

detailErrorDetailrequired

Human-readable occurrence detail that clients must not parse.

min length 1 · max length 500
instanceErrorInstancerequired

Request identifier for troubleshooting with exchange support.

max length 100 · matches ^urn:request-id:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
Channel Bindings
Channel Bindings
ws
methodGET
headers
UDX-Access-Keystringrequired

Opaque API key ID.

min length 1 · max length 255
UDX-Access-Timestampstringrequired

Unix time in milliseconds, within 30 seconds of server time.

max length 13 · matches ^[0-9]{13}$
UDX-Access-Signaturestringrequired

Standard-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.

min length 1 · max length 1024
Sec-WebSocket-Protocolstringrequired

Negotiated dated WebSocket API version.

Examples
quote_opened
{
  "type": "quote_opened",
  "sid": 11,
  "seq": 2,
  "msg": {
    "quote_id": "QUOTE-EXAMPLE-1",
    "client_quote_id": "my-quote-1",
    "rfq_id": "RFQ-EXAMPLE-1",
    "ticker": "UDX-EXAMPLE-MARKET-A",
    "side": "sell",
    "price": "0.55",
    "quantity": "100",
    "status": "open"
  }
}
quote_accepted
{
  "type": "quote_accepted",
  "sid": 11,
  "seq": 3,
  "msg": {
    "quote_id": "QUOTE-EXAMPLE-1",
    "client_quote_id": "my-quote-1",
    "rfq_id": "RFQ-EXAMPLE-1",
    "ticker": "UDX-EXAMPLE-MARKET-A",
    "side": "sell",
    "price": "0.55",
    "quantity": "100",
    "status": "accepted"
  }
}
quote_confirmed
{
  "type": "quote_confirmed",
  "sid": 11,
  "seq": 4,
  "msg": {
    "quote_id": "QUOTE-EXAMPLE-1",
    "client_quote_id": "my-quote-1",
    "rfq_id": "RFQ-EXAMPLE-1",
    "ticker": "UDX-EXAMPLE-MARKET-A",
    "side": "sell",
    "price": "0.55",
    "quantity": "100",
    "status": "confirmed"
  }
}
quote_canceled
{
  "type": "quote_canceled",
  "sid": 11,
  "seq": 5,
  "msg": {
    "quote_id": "QUOTE-EXAMPLE-1",
    "client_quote_id": "my-quote-1",
    "rfq_id": "RFQ-EXAMPLE-1",
    "ticker": "UDX-EXAMPLE-MARKET-A",
    "side": "sell",
    "price": "0.55",
    "quantity": "100",
    "status": "canceled",
    "cancellation_reason": "canceled_by_maker_or_last_look_expired"
  }
}
quote_rejected
{
  "type": "quote_rejected",
  "sid": 11,
  "seq": 6,
  "msg": {
    "quote_id": "QUOTE-EXAMPLE-1",
    "client_quote_id": "my-quote-1",
    "rfq_id": "RFQ-EXAMPLE-1",
    "ticker": "UDX-EXAMPLE-MARKET-A",
    "side": "sell",
    "price": "0.55",
    "quantity": "100",
    "status": "rejected",
    "rejection_reason": "not_open_for_quoting"
  }
}
permission_denied
{
  "type": "error",
  "sid": 7,
  "msg": {
    "code": "permission_denied",
    "detail": "the market is no longer visible to this member",
    "instance": "urn:request-id:4ecbe594-50fa-4b7a-950f-5ed74bb8372d"
  }
}
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"
  }
}