Confirm Quotes
Complete the trade on a quote a taker accepted, as the quote’s maker, inside the last-look window.
/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.
confirm_quoteComplete the trade on an accepted quote as its maker (last look).
idCommandIdrequiredClient-assigned command correlation identifier, unique among commands in flight on this connection.
cmdstringrequiredSelects the confirm quote command.
paramsQuoteActionCommandParamsrequiredOne of the caller's own quotes, addressed by its exchange-assigned rfq_id and quote_id.
Show propertiesHide properties
rfq_idEntityIdrequiredAn exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.
quote_idEntityIdrequiredAn exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.
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.
quote_confirm_submittedConfirm the exchange accepted a confirm_quote submission.
idCommandIdrequiredClient-assigned command correlation identifier, unique among commands in flight on this connection.
typestringrequiredIdentifies a successful confirm_quote response.
msgQuoteActionSubmittedPayloadrequiredThe addressed quote, echoed for the submission record.
Show propertiesHide properties
quote_idEntityIdrequiredAn exchange-assigned identifier. Treat it as an opaque, stable key with no internal structure.
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.
quote_not_foundThe addressed quote or RFQ is unknown, or is not the caller's to act on.
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.
confirm_quote
{
"id": 8,
"cmd": "confirm_quote",
"params": {
"rfq_id": "RFQ-EXAMPLE-1",
"quote_id": "QUOTE-EXAMPLE-1"
}
}quote_confirm_submitted
{
"id": 8,
"type": "quote_confirm_submitted",
"msg": {
"quote_id": "QUOTE-EXAMPLE-1",
"client_quote_id": "my-quote-1"
},
"rate_limit": {
"bucket": "write",
"capacity": 30,
"refill_tokens_per_minute": 900,
"remaining": 26,
"full_after_ms": 400
}
}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"
}
}quote_not_found
{
"id": 7,
"type": "error",
"msg": {
"code": "quote_not_found",
"detail": "the quote was not found",
"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"
}
}