Skip to content
UDX
2026-08-11

Cancel Quotes

Pull one of the caller’s own quotes, addressed by its exchange-assigned rfq_id and quote_id.

RECEIVE/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.

Commands
cancel_quotePull one of the caller's own quotes from the exchange.
idCommandIdrequired

Client-assigned command correlation identifier, unique among commands in flight on this connection.

min 1 · max 9007199254740991
cmdstringrequired

Selects the cancel quote command.

paramsQuoteActionCommandParamsrequired

One of the caller's own quotes, addressed by its exchange-assigned rfq_id and quote_id.

Show properties
rfq_idEntityIdrequired

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

min length 1
quote_idEntityIdrequired

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

min length 1
idempotency_keyIdempotencyKey

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

min length 1 · max length 255
Replies
quote_cancel_submittedConfirm the exchange accepted a cancel_quote submission.
idCommandIdrequired

Client-assigned command correlation identifier, unique among commands in flight on this connection.

min 1 · max 9007199254740991
typestringrequired

Identifies a successful cancel_quote response.

msgQuoteActionSubmittedPayloadrequired

The addressed quote, echoed for the submission record.

Show properties
quote_idEntityIdrequired

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

min length 1
client_quote_idClientIdrequired

A client-supplied correlation identifier.

rate_limitobject

Quota state after the charged command was admitted.

Show properties
bucketstringrequired

Shared member bucket consulted for this command.

Allowed:readwritecancel
capacityinteger<int64>required

Maximum tokens held by the bucket.

min 1 · max 10000000
refill_tokens_per_minuteinteger<int64>required

Tokens restored per minute.

min 1 · max 10000000
remaininginteger<int64>required

Tokens remaining after th decision.

min 0 · max 10000000
full_after_msinteger<int64>required

Milliseconds until the bucket is full if no more work is admitted.

min 0 · max 86400000
Errors
invalid_messageThe JSON or common command envelope is invalid.
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}$
fieldstring

JSON path to the invalid field when one can be identified.

min length 1 · max length 255
invalid_paramsCommand params fail schema or semantic validation.
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}$
fieldstring

JSON path to the invalid param when one can be identified.

min length 1 · max length 255
command_id_in_useAnother command with the supplied identifier is still in flight.
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}$
quote_not_foundThe addressed quote or RFQ is unknown, or is not the caller's to act on.
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}$
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}$
capacity_exceededA standing-resource limit prevents command admission.
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}$
scopestringrequired

Boundary at which the standing-resource limit applies.

Allowed:connectionmemberprocess
resourcestringrequired

Retained or concurrent resource that reached its limit.

Allowed:in_flight_commandsactive_subscriptionsmarket_data_streams
limitinteger<int64>required

Enforced maximum for the identified scope and resource.

min 1 · max 10000000
rate_limit_exceededA command rate limit was exceeded.
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}$
retry_after_msinteger<int64>required

Minimum delay in milliseconds before another attempt.

min 1 · max 86400000
admission_unavailableShared admission policy or state is temporarily unavailable.
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
cancel_quote
{
  "id": 9,
  "cmd": "cancel_quote",
  "params": {
    "rfq_id": "RFQ-EXAMPLE-1",
    "quote_id": "QUOTE-EXAMPLE-1"
  }
}
quote_cancel_submitted
{
  "id": 9,
  "type": "quote_cancel_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": 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"
  }
}
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"
  }
}