---
title: "Retained Dashboard"
method: GET
path: "/settlement-metrics/retained"
tags: ["Settlement Metrics"]
---

# Retained Dashboard

`GET /settlement-metrics/retained`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/settlement-metrics/retained`
- Auth: none declared

The TV's firm-wide retained-case figures for the web app.

## Query parameters

- `period` 'today' | 'week' | 'month' | 'quarter' | 'year' | 'custom'
- `start_date` string, date, nullable: First local day of a custom range (period=custom), inclusive
- `end_date` string, date, nullable: Last local day of a custom range (period=custom), inclusive

## Response `200`

Successful Response

- RetainedDashboardResponse: The web app's view of the retained-cases TV board over an arbitrary local-day range.
  - `period` 'today' | 'week' | 'month' | 'quarter' | 'year' | 'custom', required
  - `start_date` string, date, required
  - `end_date` string, date, required
  - `previous_start_date` string, date, required
  - `previous_end_date` string, date, required
  - `bucket` 'day' | 'week' | 'month', required
  - `timezone` string, required
  - `generated_at` string, date-time, required
  - `cases_synced_at` string, date-time, nullable
  - `source_status` string, required
  - `hide_last_month` boolean
  - `totals` integer, required
  - `previous_totals` integer, required
  - `busiest_day` string, date, nullable
  - `busiest_day_count` integer
  - `previous_busiest_day_count` integer
  - `progress` RetainedRangePoint[], required
    - `bucket_start` string, date, required
    - `retained` integer, nullable
  - `by_weekday` integer[]
  - `comparison` RetainedRangeComparisonPoint[]
    - `bucket_start` string, date, nullable
    - `previous_bucket_start` string, date, nullable
    - `current` integer, nullable
    - `previous` integer, nullable

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-03** `d8e87bdbfbf2`: 6 breaking, 1 info
  - the response property `progress/items/retained` became optional for the status `200`
  - response property `progress/items/retained` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - removed the required property `progress/items/cumulative` from the response with the `200` status
  - removed the required property `progress/items/team_id` from the response with the `200` status
  - …3 more
- **2026-10-02** `cbec4df5dc85`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/openintake/apis/openintake-api/changes/settlement-metrics/retained/get.md)

---

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