Create Quotes
Create a quote answering a request for quote.
/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.
create_quoteCreate a quote answering a request for quote.
idCommandIdrequiredClient-assigned command correlation identifier, unique among commands in flight on this connection.
cmdstringrequiredSelects the create quote command.
paramsCreateQuoteCommandParamsrequiredA single-sided quote against one visible RFQ.
Show propertiesHide properties
client_quote_idClientIdrequiredA client-supplied correlation identifier.
idempotency_keyIdempotencyKeyOptional client-assigned key, reserved for future resend deduplication. UDX carries it then discards it; it is not deduplicated on yet, so a retry that reuses the key can repeat the write. Do not rely on it for retry safety.
account_idstringThe account the quote is created under. Required for an unrestricted API key; for a key bound to a single account it must match that account when provided.
rfq_idEntityIdrequiredAn exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.
tickerTickerA human-meaningful natural key naming a single-leg or multi-leg market.
sideOrderSiderequiredOrder side.
buysellpriceFixedPointPricerequiredYES-side price in dollars as an exact fixed-point decimal string with at most six decimal places.
quantityFixedPointQuantityrequiredA quantity in contracts as a fixed-point decimal string.
quote_create_submittedConfirm the exchange accepted a create_quote submission.
idCommandIdrequiredClient-assigned command correlation identifier, unique among commands in flight on this connection.
typestringrequiredIdentifies a successful create_quote response.
msgQuoteCreateSubmittedPayloadrequiredThe submitted quote, echoed by its client correlation id. The exchange assigns the quote_id only once the quote lands, so the committed quote arrives on the quotes stream correlated by client_quote_id.
Show propertiesHide properties
client_quote_idClientIdrequiredA client-supplied correlation identifier.
rate_limitobjectQuota state after the charged command was admitted.
Show propertiesHide properties
bucketstringrequiredShared member bucket consulted for this command.
readwritecancelcapacityinteger<int64>requiredMaximum tokens held by the bucket.
refill_tokens_per_minuteinteger<int64>requiredTokens restored per minute.
remaininginteger<int64>requiredTokens remaining after th decision.
full_after_msinteger<int64>requiredMilliseconds until the bucket is full if no more work is admitted.
invalid_messageThe JSON or common command envelope is invalid.
codestringrequiredStable machine-readable error code.
detailErrorDetailrequiredHuman-readable occurrence detail that clients must not parse.
instanceErrorInstancerequiredRequest identifier for troubleshooting with exchange support.
fieldstringJSON path to the invalid field when one can be identified.
invalid_paramsCommand params fail schema or semantic validation.
codestringrequiredStable machine-readable error code.
detailErrorDetailrequiredHuman-readable occurrence detail that clients must not parse.
instanceErrorInstancerequiredRequest identifier for troubleshooting with exchange support.
fieldstringJSON path to the invalid param when one can be identified.
command_id_in_useAnother command with the supplied identifier is still in flight.
codestringrequiredStable machine-readable error code.
detailErrorDetailrequiredHuman-readable occurrence detail that clients must not parse.
instanceErrorInstancerequiredRequest identifier for troubleshooting with exchange support.
permission_deniedThe caller lacks required access.
codestringrequiredStable machine-readable error code.
detailErrorDetailrequiredHuman-readable occurrence detail that clients must not parse.
instanceErrorInstancerequiredRequest identifier for troubleshooting with exchange support.
capacity_exceededA standing-resource limit prevents command admission.
codestringrequiredStable machine-readable error code.
detailErrorDetailrequiredHuman-readable occurrence detail that clients must not parse.
instanceErrorInstancerequiredRequest identifier for troubleshooting with exchange support.
scopestringrequiredBoundary at which the standing-resource limit applies.
connectionmemberprocessresourcestringrequiredRetained or concurrent resource that reached its limit.
in_flight_commandsactive_subscriptionsmarket_data_streamslimitinteger<int64>requiredEnforced maximum for the identified scope and resource.
rate_limit_exceededA command rate limit was exceeded.
codestringrequiredStable machine-readable error code.
detailErrorDetailrequiredHuman-readable occurrence detail that clients must not parse.
instanceErrorInstancerequiredRequest identifier for troubleshooting with exchange support.
retry_after_msinteger<int64>requiredMinimum delay in milliseconds before another attempt.
admission_unavailableShared admission policy or state is temporarily unavailable.
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.
create_quote
{
"id": 6,
"cmd": "create_quote",
"params": {
"client_quote_id": "my-quote-1",
"rfq_id": "RFQ-EXAMPLE-1",
"ticker": "UDX-EXAMPLE-MARKET-A",
"side": "sell",
"price": "0.55",
"quantity": "100"
}
}quote_create_submitted
{
"id": 8,
"type": "quote_create_submitted",
"msg": {
"client_quote_id": "my-quote-1"
},
"rate_limit": {
"bucket": "write",
"capacity": 30,
"refill_tokens_per_minute": 900,
"remaining": 25,
"full_after_ms": 600
}
}invalid_message
{
"type": "error",
"msg": {
"code": "invalid_message",
"detail": "WebSocket command is not a valid JSON object",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
}invalid_params
{
"id": 4,
"type": "error",
"msg": {
"code": "invalid_params",
"detail": "the orderbook channel requires tickers",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef",
"field": "params.channels"
}
}command_id_in_use
{
"id": 4,
"type": "error",
"msg": {
"code": "command_id_in_use",
"detail": "WebSocket command ID is already in flight",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
}permission_denied
{
"id": 4,
"type": "error",
"msg": {
"code": "permission_denied",
"detail": "the trade scope is required to create a request for quote",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
}capacity_exceeded
{
"id": 4,
"type": "error",
"msg": {
"code": "capacity_exceeded",
"detail": "WebSocket connection command capacity is exhausted",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef",
"scope": "connection",
"resource": "in_flight_commands",
"limit": 32
}
}rate_limit_exceeded
{
"id": 4,
"type": "error",
"msg": {
"code": "rate_limit_exceeded",
"detail": "member read rate limit is exhausted",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef",
"retry_after_ms": 1200
},
"rate_limit": {
"bucket": "read",
"capacity": 30,
"refill_tokens_per_minute": 900,
"remaining": 0,
"full_after_ms": 2000
}
}admission_unavailable
{
"id": 4,
"type": "error",
"msg": {
"code": "admission_unavailable",
"detail": "shared WebSocket admission is temporarily unavailable",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
}internal_error
{
"id": 4,
"type": "error",
"msg": {
"code": "internal_error",
"detail": "WebSocket command failed",
"instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
}