---
title: "Api Industry Kpi History"
method: GET
path: "/api/industry/kpi-history"
---

# Api Industry Kpi History

`GET /api/industry/kpi-history`

## Request

- Base URL: `https://www.oxfordledge.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.oxfordledge.com/api/industry/kpi-history`
- Auth: none declared

K9 trend lines (OWNER industry-page design handoff 2026-10-05): ONE metric's quarterly
history for every company in a KPI tab, in ONE request -- the expanded ranked view's trend,
which would otherwise cost one `?period=` request per quarter. Built by
ssr_operating_kpis_history.build_metric_history from one store read through the same
gated collector the peer table uses (default confidence/scope untouched).

Ungated like the 23 tab routes (public SEC data, OWNER decision 2). Answered for EVERY
caller since OWNER 2026-10-10, which superseded the 2026-10-05 anonymous refusal (the old
200 / available False / reason 'sign_in'). 404 not_found for an unknown or flag-dark tab;
503 build_failed when the store could not be read.

## Query parameters

- `tab` string
- `metric` string
- `subtype` string

## Response `200`

Successful Response

- KpiHistoryResponse: `GET /api/industry/kpi-history` (K9 trend lines, OWNER design handoff 2026-10-05): one metric's quarterly history for every company in a tab, in ONE request (no per-period fan-out). `periods` = the calendar quarters drawn, oldest first, at most 8. `available` False with a `reason` ('unknown_metric', 'unknown_lane', 'no_history') and empty lists, so the client renders one honest line instead of a chart. Answered for every caller, signed in or not. ('sign_in' was the anonymous refusal 2026-10-05 .. 2026-10-10; a client may still meet it from an older deploy.)
  - `tab` string, required
  - `metric` string, required
  - `available` boolean, required
  - `periods` string[], required
  - `series` KpiHistorySeries[], required
    - `ticker` string, required
    - `name` string, nullable
    - `points` KpiHistoryPoint[], required
      - `period` string, required
      - `value` number, required
      - `display` string, required
      - `unit` string, nullable
  - `reason` string, nullable
  - `partition` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api.md) · [All operations](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/revisions/e832a1260f0b?raw)
