Skip to content
UDX
2026-07-15

List RFQ Stats by Series

Returns, per series, how your member answered the RFQs it was asked to quote over a window of up to 30 days, with the time a quote last arrived and when the current run of unanswered RFQs began. Sorted by unanswered RFQs, most first, then series. A multi-leg RFQ counts once under each of its leg series. An RFQ counts when it was routed to your member or your member quoted it, and only your member’s quotes count as answers. Available to members that quote.

GET/rfq-stats/series
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.

or
AuthorizationBearer token (JWT) · headerrequired

Bearer token for an active signed-in UDX user.

Header parameters
Header parameters
UDX-Versionstring

Dated API version (YYYY-MM-DD).

min length 10 · max length 10
Query parameters
fromstring<date-time>

Inclusive start of the UTC window. Defaults to 24 hours before the window end.

max length 40
tostring<date-time>

Exclusive end of the UTC window. Defaults to the time of the request. The window may span at most 30 days.

max length 40
sidestring

Only RFQs of this side.

Allowed:buysell
Responses
200Your member's quoting figures per series.
windowRfqStatsWindowrequired

The half-open UTC window the figures cover.

Show properties
fromstring<date-time>required

Inclusive start.

max length 40
tostring<date-time>required

Exclusive end.

max length 40
seriesRfqStatsSeriesRow[]required

Series, most unanswered RFQs first, then by series name.

max items 1000
Show properties
Array of RfqStatsSeriesRow
seriesstringrequired

Series, the ticker text before the first underscore or hyphen.

max length 64
figuresRfqStatsFiguresrequired

Counts of RFQs your member was asked to quote, or quoted, over a window. answered_pct is quoted over submitted. Cash figures cover sell RFQs, which ask to cash out a position for a dollar amount rather than a number of contracts.

Show properties
submittedinteger<int64>required

RFQs routed to your member, or quoted by it, in the window.

quotedinteger<int64>required

Of those, RFQs your member quoted.

unquotedinteger<int64>required

Of those, RFQs your member did not quote.

answered_pctnumber<double>required

quoted as a percentage of submitted; 0 when nothing was routed.

acceptedinteger<int64>required

RFQs on which your member's quote traded.

accept_requestedinteger<int64>required

RFQs on which the requester lifted your member's quote.

accept_failedinteger<int64>required

Lifted, but no trade completed.

liveinteger<int64>required

RFQs whose event had already started when submitted.

unquoted_liveinteger<int64>required

Live RFQs your member did not quote.

sell_cash_usdstringrequired

Dollars requested by sell RFQs, as a fixed-point decimal string truncated to the cent.

max length 24 · matches ^[0-9]+\.[0-9]{2}$
sell_cash_unquoted_usdstringrequired

Dollars requested by sell RFQs your member did not quote, truncated to the cent.

max length 24 · matches ^[0-9]+\.[0-9]{2}$
latencyRfqStatsLatencyrequired

quote is RFQ submission to your member's first quote; accept is the requester lifting your quote to the trade completing. The requester's own time between them is not included in either.

Show properties
quoteRfqStatsQuantilesrequired

Latency percentiles in milliseconds. Between 1 ms and 60 s each is the upper edge of a histogram bucket, never below the true value and at most about 32% above it; below 1 ms it reads 1, at or above 60 s it reads 60000. Null when no sample exists.

Show properties
countinteger<int64>required

Samples behind the percentiles.

p50_msinteger<int64> | nullrequired

Median.

p90_msinteger<int64> | nullrequired

90th percentile.

p99_msinteger<int64> | nullrequired

99th percentile.

acceptRfqStatsQuantilesrequired

Latency percentiles in milliseconds. Between 1 ms and 60 s each is the upper edge of a histogram bucket, never below the true value and at most about 32% above it; below 1 ms it reads 1, at or above 60 s it reads 60000. Null when no sample exists.

Show properties
countinteger<int64>required

Samples behind the percentiles.

p50_msinteger<int64> | nullrequired

Median.

p90_msinteger<int64> | nullrequired

90th percentile.

p99_msinteger<int64> | nullrequired

99th percentile.

last_quoted_atstring<date-time> | nullrequired

Start of the newest five-minute bucket in which your member quoted; null when it never did.

max length 40
first_unquoted_atstring<date-time> | nullrequired

Start of the oldest bucket with an RFQ your member did not quote; null when it quoted every one.

max length 40
last_unquoted_atstring<date-time> | nullrequired

Start of the newest bucket with an RFQ your member did not quote.

max length 40
onset_atstring<date-time> | nullrequired

Start of the current run of unanswered RFQs: the oldest unquoted bucket after the last one your member quoted. Equals first_unquoted_at when nothing was quoted; null when the newest activity was quoted.

max length 40
coverageRfqStatsCoveragerequired

Whether the exchange's RFQ history covers the whole window. A gap means the history may be incomplete for part of the window, so figures there may understate activity; a quiet window is never silently reported as "no RFQs".

Show properties
completebooleanrequired

True when no gap overlaps the window.

gapsobject[]required

Gaps overlapping the window, oldest first; the earliest are kept when the cap is reached.

max items 100
Show properties
Array of object
started_atstring<date-time>required

When the gap began.

max length 40
ended_atstring<date-time> | nullrequired

When it ended; null while it is still open.

max length 40
400The request doesn't conform to this spec.
typestring<uri-reference>required

A stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.

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>required

A stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.

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 read scope.
typestring<uri-reference>required

A stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.

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 rate limit was exceeded.
typestring<uri-reference>required

A stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.

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>required

A stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.

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 or account setup is unavailable, or the read could not be completed in time; retry.
typestring<uri-reference>required

A stable URN identifying the kind of problem, for example urn:udx:problem:insufficient-permissions. Branch on it rather than on the localized detail. It is an identifier, not a URL to dereference.

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 GET "https://api.underdogexchange.com/rfq-stats/series" \
  -H "UDX-Access-Key: API_KEY_ID" \
  -H "UDX-Access-Timestamp: UNIX_MILLISECONDS" \
  -H "UDX-Access-Signature: BASE64_SIGNATURE"
Response
{
  "window": {
    "from": "2026-10-06T00:00:00.000000Z",
    "to": "2026-10-07T00:00:00.000000Z"
  },
  "series": [
    {
      "series": "UDXNFLTOTAL",
      "figures": {
        "submitted": 1240,
        "quoted": 5,
        "unquoted": 1235,
        "answered_pct": 0.4,
        "accepted": 0,
        "accept_requested": 0,
        "accept_failed": 0,
        "live": 0,
        "unquoted_live": 0,
        "sell_cash_usd": "310000.00",
        "sell_cash_unquoted_usd": "308750.00"
      },
      "latency": {
        "quote": {
          "count": 5,
          "p50_ms": 15,
          "p90_ms": 15,
          "p99_ms": 15
        },
        "accept": {
          "count": 0,
          "p50_ms": null,
          "p90_ms": null,
          "p99_ms": null
        }
      },
      "last_quoted_at": "2026-10-06T13:55:00.000000Z",
      "first_unquoted_at": "2026-10-06T14:00:00.000000Z",
      "last_unquoted_at": "2026-10-06T23:55:00.000000Z",
      "onset_at": "2026-10-06T14:00:00.000000Z"
    }
  ],
  "coverage": {
    "complete": true,
    "gaps": []
  }
}