---
title: "Render a saved report. Stored parameters are the base; query parameters override
them (so a saved YTD report can be previewed as MTD without editing it)."
method: GET
path: "/reports/saved/{id}/render"
tags: ["SavedReports"]
---

# Render a saved report. Stored parameters are the base; query parameters override
them (so a saved YTD report can be previewed as MTD without editing it).

`GET /reports/saved/{id}/render`

## Path parameters

- `id` string, required

## Query parameters

- `format` string
- `table` string
- `actions` string

## Response `200`

OK

- ReportDocument — Renderer-neutral report document (ITE-219). Providers build one of these from metrics queries; the PDF/CSV renderers and the web viewer consume it. Values stay raw and typed — display formatting (whole dollars, "23 min", "No data yet") lives exclusively in ReportValueFormatter per the v4 export spec (docs/reporting-spec-v4/).
  - `header` ReportHeader
    - `title` string
    - `subtitle` string, nullable
    - `clinicName` string
    - `periodLabel` string — Human period label, e.g. "Month to Date".
    - `generatedAt` string — Pre-formatted generation timestamp, e.g. "July 5, 2026 at 8:14 PM".
  - `sections` ReportSection[]
    - `title` string, nullable
    - `accent` 'Blue' | 'Green' | 'Orange' | 'Teal' | 'Purple' | 'Grey' — Section accent palette — fixed set so PDF and web stay consistent.
    - `pageBreakAfter` boolean — Start a new PDF page after this section (ignored by CSV/web).
    - `blocks` ReportBlock[]
      - union
        - object
          - `kind` 'statCards', required
          - `cards` ReportStatCard[]
            - `label` string
            - `value` ReportValue — A single typed cell/card value. Exactly one of decimal? ReportValue.Number / string? ReportValue.Text carries the payload depending on ReportValueType ReportValue.Type; ReportValueState ReportValue.State overrides both ("No data yet" / "Not configured" are states, never fake zeros).
              - …
            - `caption` string, nullable — Small line under the label, e.g. "+12.1%" or "$23 saved".
            - `captionTone` 'Neutral' | 'Positive' | 'Negative'
          - `targets` string — Which outputs a block appears in. Lets a provider ship e.g. a CSV-only KPI table alongside the stat cards that render the same data in PDF/web.
        - object
          - `kind` 'table', required
          - `key` string — Stable key used to address this table in CSV exports (?table=pnl).
          - `title` string, nullable
          - `subtitle` string, nullable
          - `columns` ReportColumn[]
            - `key` string
            - `label` string
            - `type` 'Text' | 'CurrencySummary' | 'CurrencyExact' | 'Percent' | 'Count' | 'Duration' | 'Status' | 'Date' | 'Trend'
            - `relativeWidth` union — Relative width weight (QuestPDF RelativeColumn). Ignored when FixedWidth set.
              - …
            - `fixedWidth` union
              - …
            - `align` unknown
            - `targets` string — Which outputs a block appears in. Lets a provider ship e.g. a CSV-only KPI table alongside the stat cards that render the same data in PDF/web.
          - `rows` ReportRow[]
            - `cells` object
            - `style` 'Normal' | 'Header' | 'Total'
            - `indent` union — Hierarchy depth for ledger-style tables; renders as left padding.
              - …
          - `pdfRowLimit` union — Cap rows in the PDF rendering only; CSV/JSON always carry all rows.
            - integer
            - string, int32
          - `dense` boolean — Smaller font / tighter padding in PDF (dense ledgers like transactions).
          - `csvIncludeStyleColumns` boolean — Append row style + indent as trailing CSV columns (hierarchical ledgers).
          - `targets` string — Which outputs a block appears in. Lets a provider ship e.g. a CSV-only KPI table alongside the stat cards that render the same data in PDF/web.
        - object
          - `kind` 'actions', required
          - `title` string
          - `actions` ReportAction[]
            - `action` string
            - `owner` string, nullable
            - `due` string, nullable
            - `rationale` string, nullable
          - `targets` string — Which outputs a block appears in. Lets a provider ship e.g. a CSV-only KPI table alongside the stat cards that render the same data in PDF/web.
        - object
          - `kind` 'note', required
          - `text` string
          - `tone` 'Info' | 'Warning' | 'Rule'
          - `targets` string — Which outputs a block appears in. Lets a provider ship e.g. a CSV-only KPI table alongside the stat cards that render the same data in PDF/web.

## Other responses

- `404` — Not Found

---

[API](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1.md) · [All operations](https://skmtc.net/clinicos/apis/pawthosx-business-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/clinicos/pawthosx-business-api-v1/revisions/a905bde4e796/schema)
