Skip to content
UDX
Esc
↑↓navigate↵open⌘Jpreview

Create an RFQ

Creates a request for quote, soliciting pricing from market makers for one or more legs. Omit side for a two-sided quote.

POST/rfqs
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 + METHOD + path`; for requests with a body, append `hex(SHA256(body))`; append `UDX-Idempotency-Key` when it is present.
or
AuthorizationBearer token (JWT) · headerrequired
Bearer token for an active signed-in UDX user.
Header parameters
UDX-Versionstring
Dated API version (YYYY-MM-DD). Omit to use the oldest supported version. An unknown version returns `400`.
max length 10
UDX-Idempotency-Keystring
Optional client-generated key that makes a mutation safe to retry. Reuse it only for a byte-identical retry. When present, it is included in the request signature; omitting it disables UDX idempotency for that request.
min length 1 · max length 255
Request body
requiredapplication/json
client_rfq_idClientIdrequired
A client-supplied correlation identifier: 1–40 URL-safe ASCII characters (letters, digits, hyphen, period, underscore, tilde), unique per resource within the caller's account — reusing one is rejected even after the original resource closes. Distinct from the exchange-assigned public id and from the idempotency key.
min length 1 · max length 40 · matches ^[A-Za-z0-9._~-]+$
tickerobject
Market to request a quote for (single market, or an existing combo by its ticker). Provide exactly one of ticker or legs.
Show properties
object
legsRfqLeg[]
Component legs of the RFQ. A single leg is one market; multiple legs request the combined strategy. Provide exactly one of ticker or legs.
min items 1 · max items 100
Show properties
Array of RfqLeg
tickerTickerrequired
A market identifier (ticker) — a human-meaningful natural-key symbol, not a UUID. Unique per market.
min length 1 · max length 128
opposing_sideboolean
Whether this leg takes the side opposite the RFQ (true) or the same side (false, the default).
default: false
quantityobject
Number of contracts to quote, as a whole number. Provide exactly one of quantity or cash_quantity.
Show properties
object
cash_quantityobject
Size of the RFQ in dollars. Provide exactly one of quantity or cash_quantity.
Show properties
object
sideobject
The side the customer wants to execute. Omit for a two-sided quote.
Show properties
object
account_idobject
Account to create the RFQ under, by its UDX-assigned public entity identifier. Required for an unrestricted API key; an account-restricted key uses its bound account, and an account_id that names a different account is rejected.
Show properties
object
Responses
201The created RFQ.
rfqRfqrequired
A request for quote (RFQ) on the exchange.
Show properties
rfq_idobjectrequired
Exchange-assigned RFQ identifier.
Show properties
object
requester_idobject
The pseudonymous participant identifier of the user who raised this RFQ. Stable across that user's RFQs so makers can correlate repeat requesters; on your own RFQs it equals your `rfq_participant_id` from `GET /users/me`.
Show properties
object
client_rfq_idobject
The requester's correlation id for this RFQ. Present only on RFQs raised by the caller's member; it is the requester's private correlation id on RFQs soliciting the caller.
Show properties
object
legsRfqLeg[]required
The component legs of the RFQ.
min items 1 · max items 100
Show properties
Array of RfqLeg
tickerTickerrequired
A market identifier (ticker) — a human-meaningful natural-key symbol, not a UUID. Unique per market.
min length 1 · max length 128
opposing_sideboolean
Whether this leg takes the side opposite the RFQ (true) or the same side (false, the default).
default: false
sideobject
The side the customer wants to execute. Absent for a two-sided RFQ.
Show properties
object
quantityobject
Number of contracts requested. Present when sized in contracts.
Show properties
object
cash_quantityobject
Size of the RFQ in dollars. Present when sized in cash.
Show properties
object
statusRfqStatusrequired
An RFQ's status. `open` is still soliciting quotes; `rejected` was rejected by the exchange; `closed` is otherwise terminal (the RFQ was accepted, expired, canceled, or otherwise concluded without a trade).
Allowed:openclosedrejected
created_atstring<date-time>
When the RFQ was created. UDX timestamps use RFC 3339; requests require an explicit UTC offset and zero to six fractional digits; responses use UTC with exactly six fractional digits.
max length 40
expires_atstring<date-time>
When the RFQ stops soliciting quotes. A quote must be submitted, accepted, and confirmed within this deadline. UDX timestamps use RFC 3339; responses use UTC with exactly six fractional digits.
max length 40
400The request doesn't conform to this spec.
typestring<uri-reference>
A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
titlestringrequired
A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
max length 40
statusintegerrequired
The HTTP status code, repeated from the response itself.
detailstring
A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
max length 500
instancestring<uri-reference>
An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
401No valid credential was provided.
typestring<uri-reference>
A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
titlestringrequired
A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
max length 40
statusintegerrequired
The HTTP status code, repeated from the response itself.
detailstring
A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
max length 500
instancestring<uri-reference>
An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
403The credential lacks the `trade` scope.
typestring<uri-reference>
A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
titlestringrequired
A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
max length 40
statusintegerrequired
The HTTP status code, repeated from the response itself.
detailstring
A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
max length 500
instancestring<uri-reference>
An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
409This key is still in use or its response cannot be replayed. The mutation may have run; check `detail` before retrying.
typestring<uri-reference>
A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
titlestringrequired
A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
max length 40
statusintegerrequired
The HTTP status code, repeated from the response itself.
detailstring
A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
max length 500
instancestring<uri-reference>
An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
422This key belongs to a different request.
typestring<uri-reference>
A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
titlestringrequired
A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
max length 40
statusintegerrequired
The HTTP status code, repeated from the response itself.
detailstring
A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
max length 500
instancestring<uri-reference>
An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
429The Member's request rate is exhausted. Wait for `Retry-After`.
typestring<uri-reference>
A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
titlestringrequired
A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
max length 40
statusintegerrequired
The HTTP status code, repeated from the response itself.
detailstring
A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
max length 500
instancestring<uri-reference>
An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
500Something went wrong on UDX's side.
typestring<uri-reference>
A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
titlestringrequired
A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
max length 40
statusintegerrequired
The HTTP status code, repeated from the response itself.
detailstring
A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
max length 500
instancestring<uri-reference>
An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
503Request admission is unavailable. Retry later.
typestring<uri-reference>
A stable URI identifying the error's general category. Usually absent (equivalent to "about:blank" per the RFC); documented rate controls use closed URN values so callers can distinguish same-status retry causes without parsing localized prose.
max length 2048
titlestringrequired
A localized, human-readable summary of the error category. Stable for a given status code and resolved language — clients must not use it as a machine-readable discriminator.
max length 40
statusintegerrequired
The HTTP status code, repeated from the response itself.
detailstring
A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
max length 500
instancestring<uri-reference>
An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
max length 100
Request
curl -X POST "https://{hostname}/rfqs" \
  -H "UDX-Access-Key: API_KEY_ID" \
  -H "UDX-Access-Timestamp: UNIX_MILLISECONDS" \
  -H "UDX-Access-Signature: BASE64_SIGNATURE" \
  -H "Content-Type: application/json" \
  -d '{
  "client_rfq_id": "rfq-20260804-001",
  "ticker": "UDX-EXAMPLE-MARKET",
  "quantity": "100",
  "side": "buy"
}'
Response
{
  "rfq": {
    "rfq_id": "BKA2QM3T4055",
    "client_rfq_id": "rfq-20260804-001",
    "legs": [
      {
        "ticker": "UDX-EXAMPLE-MARKET",
        "opposing_side": false
      }
    ],
    "side": "buy",
    "quantity": "100",
    "status": "open",
    "created_at": "2026-01-01T00:00:00.000000Z"
  }
}