---
title: "Api Operating Kpis"
method: GET
path: "/api/operating-kpis"
---

# Api Operating Kpis

`GET /api/operating-kpis`

## 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/operating-kpis`
- Auth: none declared

Per-issuer operating-KPI panel payload. Returns 404 while every industry flag is dark
(the default). When at least one is live: an anon request (no ol_session) gets the teaser
subset; an authed request gets all rows. An honest-empty result (an issuer in no live
industry / no clean rows) returns 404 so the FE panel self-hides exactly like a dark flag.

## Query parameters

- `ticker` string

## Response `200`

Successful Response

- OperatingKpisResponse: `GET /api/operating-kpis` — the per-issuer operating-KPI panel payload. REQUIRED fields are the honesty scaffolding + the row list the panel always dereferences. `partial` + `total_metrics` drive the anon teaser ('sign in to see all N'); an authed user gets `partial=False` and every row. `metrics` is [] on an honest-empty issuer (never null).
  - `ticker` string, required: Upper-cased ticker the panel requested.
  - `metrics` OperatingKpiRow[], required: Operating metric rows ([] = honest-empty).
    - `metric` string, required: Canonical metric key (e.g. 'load_factor', 'casm').
    - `label` string, required: Beginner-legible display label.
    - `display` string, required: Pre-formatted value + unit, rendered verbatim.
    - `scope` string, required: 'consolidated' | 'segment:<name>' — the honesty scope.
    - `value` number, nullable: Raw numeric value (None -> display-only).
    - `unit` string, nullable: Stored unit token (e.g. 'cents_per_asm').
    - `basis` string, nullable: Disambiguating basis (total | ex-fuel | ...).
    - `badge` string, nullable: Plain-text basis/non-GAAP badge, or null.
    - `is_non_gaap` boolean, nullable: True for a company-defined non-GAAP row.
    - `glossary_slug` string, nullable: /glossary/<slug> term for the label.
    - `period` string, nullable: Fiscal period, e.g. '2026-Q2'.
    - `as_of` string, nullable: Filing date the value was read from.
    - `source_url` string, nullable: SEC exhibit URL (public).
    - `is_headline_period` boolean, nullable: SSR-SNAPSHOT I1: True when this row's period equals the envelope's headline_period (the FE mirrors the SSR per-row period-chip treatment).
    - `value_kind` string, nullable: #336: the GRAIN of this figure — 'level'/'period_end_as_of' for an as-reported level, 'delta' for a growth RATE the issuer reported for the period (e.g. same-store sales). A change read as a level is a different number entirely, so a consumer must group or label by this field rather than infer grain from the metric name. `display` for a delta row is already signed.
  - `provenance` string, required: OL-derived-from-SEC provenance stamp.
  - `caveat` string, required: B9 not-re-audited honesty caveat; panel renders verbatim.
  - `partial` boolean, required: True when an anon teaser subset was returned.
  - `total_metrics` integer, required: Total available rows (for the 'see all N' prompt).
  - `available` boolean, required: False when no clean row exists for this issuer.
  - `industry` string, nullable: KPI industry ('airline').
  - `period` string, nullable: Headline fiscal period.
  - `as_of` string, nullable: Headline filing as-of date.
  - `headline_period` string, nullable: SSR-SNAPSHOT I1: period of the newest-filing dated row (alias of `period`; the explicit name the chip treatment keys on).
  - `methodology_url` string, nullable: /methodology/<slug> 'how we read this'.

## 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)
