Skip to content
UDX
2026-08-11

Stream Order Books

Order book snapshots and absolute level updates for each subscribed ticker.

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
orderbook_snapshotEstablish current book state for one market.
typestringrequired

Identifies a complete order book snapshot.

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
msgOrderbookSnapshotPayloadrequired

Complete visible L1, L2, or L3 order book state for one market.

Show properties
Any of:
AggregatedOrderbookSnapshotPayload
tickerTickerrequired

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

min length 1 · max length 128
bidsPriceLevel[]required

Bid levels in best-first order as [price, quantity] pairs.

asksPriceLevel[]required

Ask levels in best-first order as [price, quantity] pairs.

L3OrderbookSnapshotPayload
tickerTickerrequired

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

min length 1 · max length 128
bidsL3OrderbookEntry[]required

Anonymous bid orders in best-price, FIFO order across the requested price-level depth.

Show properties
Array of L3OrderbookEntry
entry_idstringrequired

Stable market-data entry handle. It is deliberately not the exchange order ID returned to the order owner.

min length 1
priceFixedPointPricerequired

YES-side price in dollars as an exact fixed-point decimal string with at most six decimal places.

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

A quantity in contracts as a fixed-point decimal string.

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

Anonymous ask orders in best-price, FIFO order across the requested price-level depth.

Show properties
Array of L3OrderbookEntry
entry_idstringrequired

Stable market-data entry handle. It is deliberately not the exchange order ID returned to the order owner.

min length 1
priceFixedPointPricerequired

YES-side price in dollars as an exact fixed-point decimal string with at most six decimal places.

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

A quantity in contracts as a fixed-point decimal string.

max length 24 · matches ^[0-9]+(\.[0-9]{1,2})?$
orderbook_updateReplace one or more visible price-level quantities for one market.
typestringrequired

Identifies an incremental order book update.

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
msgOrderbookUpdatePayloadrequired

One market's complete visible transition between book states.

Show properties
Any of:
AggregatedOrderbookUpdatePayload
tickerTickerrequired

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

min length 1 · max length 128
changesOrderbookChange[]required

Absolute price-level replacements. Array order has no meaning; a zero quantity removes the level.

min items 1
Show properties
Array of OrderbookChange
sideOrderSiderequired

Order side.

Allowed:buysell
priceFixedPointPricerequired

YES-side price in dollars as an exact fixed-point decimal string with at most six decimal places.

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

A quantity in contracts as a fixed-point decimal string.

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

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

min length 1 · max length 128
changesL3OrderbookChange[]required

Ordered absolute entry mutations. Apply them in array order.

min items 1
Show properties
Array of L3OrderbookChange
actionstringrequired

add inserts at the back of its price level, update replaces quantity in place, and delete removes the entry.

Allowed:addupdatedelete
sideOrderSiderequired

Order side.

Allowed:buysell
entry_idstringrequired

Stable market-data entry handle. A priority reset retains this ID and is encoded as delete then add.

min length 1
priceFixedPointPricerequired

YES-side price in dollars as an exact fixed-point decimal string with at most six decimal places.

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

A quantity in contracts as a fixed-point decimal string.

max length 24 · matches ^[0-9]+(\.[0-9]{1,2})?$
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
orderbook_snapshot
{
  "type": "orderbook_snapshot",
  "sid": 7,
  "seq": 1,
  "msg": {
    "ticker": "UDX-EXAMPLE-MARKET-A",
    "bids": [
      [
        "0.45",
        "100"
      ]
    ],
    "asks": [
      [
        "0.47",
        "80"
      ]
    ]
  }
}
orderbook_update
{
  "type": "orderbook_update",
  "sid": 7,
  "seq": 2,
  "msg": {
    "ticker": "UDX-EXAMPLE-MARKET-A",
    "changes": [
      {
        "side": "buy",
        "price": "0.45",
        "quantity": "125"
      },
      {
        "side": "sell",
        "price": "0.47",
        "quantity": "0"
      }
    ]
  }
}
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"
  }
}