---
search:
  tags:
    - RFQs
    - GET
seo:
  description: >-
    Returns, per series, how your member answered the RFQs it was asked to quote
    over a window… Reference for the GET /rfq-stats/series endpoint in the REST
    API.
sidebar:
  label: List RFQ Stats by Series
  badge: GET
title: List RFQ Stats by Series
type: openapi-operation
---
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.

### Endpoint

- Method and path: `GET /rfq-stats/series`
- Operation ID: `listRfqStatsSeries`
- API reference: [GET /rfq-stats/series](/api-reference/rest/rfqs/list-rfq-stats-series)
- Complete specification: [OpenAPI (YAML)](/openapi.yml)
- Spec location (JSON Pointer): `#/paths/~1rfq-stats~1series/get`

#### Authorization

- Accepted credentials: `UDX-Access-Key` header and `UDX-Access-Timestamp` header and `UDX-Access-Signature` header; or Bearer token in `Authorization`
- Details: [Authentication](/reference/authentication)

#### Parameters

```yaml
- $ref: "#/components/parameters/VersionHeader"
- name: from
  in: query
  required: false
  description: Inclusive start of the UTC window. Defaults to 24 hours before the window end.
  schema:
    type: string
    format: date-time
    maxLength: 40
    description: Window start.
    example: 2026-10-06T00:00:00.000000Z
- name: to
  in: query
  required: false
  description: Exclusive end of the UTC window. Defaults to the time of the request. The window may span at most 30 days.
  schema:
    type: string
    format: date-time
    maxLength: 40
    description: Window end.
    example: 2026-10-07T00:00:00.000000Z
- name: side
  in: query
  required: false
  description: Only RFQs of this side.
  schema:
    type: string
    enum:
      - buy
      - sell
    description: RFQ side.
```


#### Responses

##### `200`

Your member's quoting figures per series.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/json`

Schema:

```yaml
$ref: "#/components/schemas/RfqStatsSeriesResponse"
```

Example: Example

```json
{
  "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": []
  }
}
```

##### `400`

The request doesn't conform to this spec.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Invalid request parameters

```json
{
  "type": "urn:udx:problem:invalid-request-parameters",
  "title": "Bad Request",
  "status": 400,
  "detail": "invalid request parameters",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

Example: Unknown UDX-Version

```json
{
  "type": "urn:udx:problem:unknown-version",
  "title": "Bad Request",
  "status": 400,
  "detail": "unknown UDX-Version \"1999-01-01\"; supported versions: 2026-07-15",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `401`

No valid credential was provided.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Authentication failed

```json
{
  "type": "urn:udx:problem:invalid-authentication-credentials",
  "title": "Unauthorized",
  "status": 401,
  "detail": "invalid authentication credentials",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `403`

The credential lacks the read scope.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Insufficient permissions

```json
{
  "type": "urn:udx:problem:insufficient-permissions",
  "title": "Forbidden",
  "status": 403,
  "detail": "insufficient permissions",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `429`

The member rate limit was exceeded.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
Retry-After:
  $ref: "#/components/headers/RetryAfter"
Cache-Control:
  $ref: "#/components/headers/NoStore"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Example

```json
{
  "type": "urn:udx:problem:member-rate-limit-exceeded",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "this member has temporarily exceeded its request rate",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `500`

Something went wrong on UDX's side.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Internal server error

```json
{
  "type": "urn:udx:problem:internal-error",
  "title": "Internal Server Error",
  "status": 500,
  "detail": "internal error",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

##### `503`

Request admission or account setup is unavailable, or the read could not be completed in time; retry.

Headers:

```yaml
UDX-Version:
  $ref: "#/components/headers/VersionHeader"
Retry-After:
  $ref: "#/components/headers/RetryAfter"
Cache-Control:
  $ref: "#/components/headers/NoStore"
```

Content type: `application/problem+json`

Schema:

```yaml
$ref: "#/components/schemas/ProblemDetails"
```

Example: Caller setup is not ready

```json
{
  "type": "urn:udx:problem:projection-unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "account setup is still being completed; retry later",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

Example: Request admission is unavailable

```json
{
  "type": "urn:udx:problem:request-admission-unavailable",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "request admission is temporarily unavailable",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```

Example: The read could not be completed in time

```json
{
  "type": "urn:udx:problem:could-not-process-retry",
  "title": "Service Unavailable",
  "status": 503,
  "detail": "could not process request, please retry",
  "instance": "urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef"
}
```


#### Referenced definitions

The references in the excerpts above resolve to these definitions in the complete specification.

##### `#/components/headers/VersionHeader`

```yaml
description: API version used for this response.
schema:
  type: string
  maxLength: 10
  description: A dated API version (YYYY-MM-DD).
  example: 2026-07-15
```

##### `#/components/schemas/RfqStatsSeriesResponse`

```yaml
type: object
additionalProperties: false
description: Your member's quoting figures per series for a window.
required:
  - window
  - series
  - coverage
properties:
  window:
    $ref: "#/components/schemas/RfqStatsWindow"
  series:
    type: array
    maxItems: 1000
    description: Series, most unanswered RFQs first, then by series name.
    items:
      $ref: "#/components/schemas/RfqStatsSeriesRow"
  coverage:
    $ref: "#/components/schemas/RfqStatsCoverage"
```

##### `#/components/schemas/RfqStatsWindow`

```yaml
type: object
additionalProperties: false
description: The half-open UTC window the figures cover.
required:
  - from
  - to
properties:
  from:
    type: string
    format: date-time
    maxLength: 40
    description: Inclusive start.
  to:
    type: string
    format: date-time
    maxLength: 40
    description: Exclusive end.
```

##### `#/components/schemas/RfqStatsSeriesRow`

```yaml
type: object
additionalProperties: false
description: One series' figures and quoting timeline for your member.
required:
  - series
  - figures
  - latency
  - last_quoted_at
  - first_unquoted_at
  - last_unquoted_at
  - onset_at
properties:
  series:
    type: string
    maxLength: 64
    description: Series, the ticker text before the first underscore or hyphen.
  figures:
    $ref: "#/components/schemas/RfqStatsFigures"
  latency:
    $ref: "#/components/schemas/RfqStatsLatency"
  last_quoted_at:
    type:
      - string
      - "null"
    format: date-time
    maxLength: 40
    description: Start of the newest five-minute bucket in which your member quoted; null when it never did.
  first_unquoted_at:
    type:
      - string
      - "null"
    format: date-time
    maxLength: 40
    description: Start of the oldest bucket with an RFQ your member did not quote; null when it quoted every one.
  last_unquoted_at:
    type:
      - string
      - "null"
    format: date-time
    maxLength: 40
    description: Start of the newest bucket with an RFQ your member did not quote.
  onset_at:
    type:
      - string
      - "null"
    format: date-time
    maxLength: 40
    description: "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."
```

##### `#/components/schemas/RfqStatsFigures`

```yaml
type: object
additionalProperties: false
description: 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.
required:
  - submitted
  - quoted
  - unquoted
  - answered_pct
  - accepted
  - accept_requested
  - accept_failed
  - live
  - unquoted_live
  - sell_cash_usd
  - sell_cash_unquoted_usd
properties:
  submitted:
    type: integer
    format: int64
    description: RFQs routed to your member, or quoted by it, in the window.
  quoted:
    type: integer
    format: int64
    description: Of those, RFQs your member quoted.
  unquoted:
    type: integer
    format: int64
    description: Of those, RFQs your member did not quote.
  answered_pct:
    type: number
    format: double
    description: quoted as a percentage of submitted; 0 when nothing was routed.
  accepted:
    type: integer
    format: int64
    description: RFQs on which your member's quote traded.
  accept_requested:
    type: integer
    format: int64
    description: RFQs on which the requester lifted your member's quote.
  accept_failed:
    type: integer
    format: int64
    description: Lifted, but no trade completed.
  live:
    type: integer
    format: int64
    description: RFQs whose event had already started when submitted.
  unquoted_live:
    type: integer
    format: int64
    description: Live RFQs your member did not quote.
  sell_cash_usd:
    type: string
    pattern: ^[0-9]+\.[0-9]{2}$
    maxLength: 24
    description: Dollars requested by sell RFQs, as a fixed-point decimal string truncated to the cent.
  sell_cash_unquoted_usd:
    type: string
    pattern: ^[0-9]+\.[0-9]{2}$
    maxLength: 24
    description: Dollars requested by sell RFQs your member did not quote, truncated to the cent.
```

##### `#/components/schemas/RfqStatsLatency`

```yaml
type: object
additionalProperties: false
description: 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.
required:
  - quote
  - accept
properties:
  quote:
    $ref: "#/components/schemas/RfqStatsQuantiles"
  accept:
    $ref: "#/components/schemas/RfqStatsQuantiles"
```

##### `#/components/schemas/RfqStatsQuantiles`

```yaml
type: object
additionalProperties: false
description: 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.
required:
  - count
  - p50_ms
  - p90_ms
  - p99_ms
properties:
  count:
    type: integer
    format: int64
    description: Samples behind the percentiles.
  p50_ms:
    type:
      - integer
      - "null"
    format: int64
    description: Median.
  p90_ms:
    type:
      - integer
      - "null"
    format: int64
    description: 90th percentile.
  p99_ms:
    type:
      - integer
      - "null"
    format: int64
    description: 99th percentile.
```

##### `#/components/schemas/RfqStatsCoverage`

```yaml
type: object
additionalProperties: false
description: 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".
required:
  - complete
  - gaps
properties:
  complete:
    type: boolean
    description: True when no gap overlaps the window.
  gaps:
    type: array
    maxItems: 100
    description: Gaps overlapping the window, oldest first; the earliest are kept when the cap is reached.
    items:
      type: object
      additionalProperties: false
      required:
        - started_at
        - ended_at
      properties:
        started_at:
          type: string
          format: date-time
          maxLength: 40
          description: When the gap began.
        ended_at:
          type:
            - string
            - "null"
          format: date-time
          maxLength: 40
          description: When it ended; null while it is still open.
```

##### `#/components/schemas/ProblemDetails`

```yaml
type: object
description: An RFC 9457 machine-readable error, returned on every non-2xx response. The response's Content-Language header identifies the language used by title and detail, and Vary includes Accept-Language.
required:
  - type
  - title
  - status
properties:
  type:
    type: string
    format: uri-reference
    maxLength: 2048
    description: 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.
  title:
    type: string
    maxLength: 40
    example: Bad Request
    description: 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.
  status:
    type: integer
    example: 400
    description: The HTTP status code, repeated from the response itself.
  detail:
    type: string
    maxLength: 500
    example: malformed request body
    description: A localized, human-readable explanation specific to this occurrence. Clients must not parse it for machine-readable information.
  instance:
    type: string
    format: uri-reference
    maxLength: 100
    example: urn:request-id:8f14e45f-ceea-4abc-a743-e89a34d3f6ef
    description: An identifier for this specific occurrence, so it can be correlated with server-side logs if you need to report it.
```

##### `#/components/headers/RetryAfter`

```yaml
description: Whole seconds to wait before retrying.
schema:
  type: integer
  minimum: 1
  description: A positive delay in whole seconds.
  example: 2
```

##### `#/components/headers/NoStore`

```yaml
description: Prevents caching this response.
schema:
  type: string
  enum:
    - no-store
  description: Always the cache directive no-store.
  example: no-store
```

##### `#/components/parameters/VersionHeader`

```yaml
name: UDX-Version
in: header
required: false
description: Dated API version (YYYY-MM-DD).
schema:
  type: string
  minLength: 10
  maxLength: 10
  description: A dated API version (YYYY-MM-DD).
  example: 2026-07-15
```

