---
title: "Scored volume and rubric averages over time"
method: GET
path: "/v1/admin/reply-quality/trend"
tags: ["admin"]
---

# Scored volume and rubric averages over time

`GET /v1/admin/reply-quality/trend`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/admin/reply-quality/trend`
- Auth: HTTP bearer

The quality series for a window, bucketed by day, week or month. Each bucket is split by scorer version: a new rubric re-anchors the 1-to-5 scale, so a single blended line would report a rubric edit as a change in Patricia. Periods with no scored replies are absent from the series rather than reported as zero.

## Query parameters

- `tenant_id` string, uuid, nullable: Drill into one workspace; omit for the fleet view.
- `granularity` 'day' | 'week' | 'month': Timeline bucket size. Each bucket's ``date`` is its truncated UTC start (``week`` → Monday, ``month`` → the 1st).
- `since` string, date-time, nullable: Window start (UTC). Defaults to 12 weeks before `until`.
- `until` string, date-time, nullable: Window end, exclusive (UTC). Defaults to now.
- `scorer_version` string: Restrict to one rubric version, or 'all' to see every version in the window.

## Response `200`

Successful Response

- ReplyQualityTrend: The quality series plus what a reader needs to interpret it. ``buckets`` is sparse: a period nobody was scored in is simply absent. It is never emitted as a zero, because "nobody asked Patricia anything" and "the judge stopped running" are different facts and neither of them is a quality of 0 on a 1-to-5 rubric.
  - `granularity` string, required
  - `since` string, date-time, required
  - `until` string, date-time, required
  - `current_scorer_version` string, required: The version replies are being scored under now — the only series that keeps growing.
  - `scorer_versions` string[], required: Every rubric version present in the window, oldest bucket first. More than one means the series has a discontinuity in it.
  - `buckets` QualityBucket[], required
    - `period_start` string, date-time, required: Start of the bucket on the UTC clock, with no offset attached (week buckets start on Monday). It names a calendar period, not an instant, so a client renders it as-is; attaching Z and converting would move a period label to the previous day west of Greenwich.
    - `scorer_version` string, required: The rubric version these scores were produced under. Scores from different versions are not comparable, so a bucket is split per version rather than blended.
    - `scored` integer, required
    - `dimension_averages` object, required
    - `band_counts` object, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `404`: Not found
- `422`: Validation error

---

[API](https://skmtc.dev/patricia/apis/patricia-api.md) · [All operations](https://skmtc.dev/patricia/apis/patricia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/patricia/apis/patricia-api/revisions/0dfb44495ea1?raw)
