Guide

Build a Financial Dashboard

Pull a company's core financials as period-aligned columns and render them as an income statement, balance sheet, or cash-flow table.

Goal

Show several periods of a company’s financials side by side — the shape a dashboard grid or statement table needs — from a single response.

When to use this workflow

You’re building a UI that lists metrics as rows and fiscal periods as columns for one company at a time (not comparing companies, and not deriving new periods client-side).

Endpoint

GET/v2/companies/{ticker}/financialsGet period-centric financial series (V2)

Required parameters

ParameterRequiredNotes
tickeryesPath parameter — see Coverage & Demo Tickers for safe defaults (AAPL, MSFT, NVDA).
periodnoFY or Q, default FY.
limitnoNumber of reporting periods, 1–20. Default 5 for FY, 8 for Q — always a period count, never a calendar-year count.
metricSet / metrics / statementnoNarrow which rows come back — metricSet=core|core-reported|income|balance|cash-flow|ratios|all, or pass explicit metrics= (overrides metricSet), or filter by statement=income|balance|cash-flow|all.

Example request

curl -H "X-API-Key: $LEDGERBASE_API_KEY" \
  "https://api.ledgerbase.cc/v2/companies/AAPL/financials?period=FY&limit=5&statement=income"

Expected response shape

schemaVersion: "financial-series-v2", a shared periods[] array (each with id, fiscalYear, fiscalPeriod, start, end), and a metrics map keyed by metric key, each entry carrying label, statement, unit, factType, and a values[] array aligned 1:1 to periods[]. Anything the endpoint couldn’t cleanly attach to a metric/period cell appears in issues[] instead of being dropped.

No confidence, no unitType.This endpoint’s metric entries carry factType (REPORTED / NORMALIZED_DIRECT / DERIVED / AGGREGATED) but not a confidence score or a unitTypefield — those only exist on other endpoints. Don’t render a confidence badge or a unit-type label from this response.

How to inspect it in Visual View

Execute the request, then switch from Raw to the Visual View tab in the response drawer. The Statement View pivots periods[]into table columns, groups rows by statement type (with a selector when the response contains more than one), and shows a Period selector when there’s more than one period — filtering columns there never re-fetches; it only narrows what’s already in memory, and a “Showing X of Y periods” line always discloses the current filter.

Try this response in Visual ViewAfter executing a request, use the Visual View tab in the response drawer — it re-renders the same response already in memory and does not make a new request.

How to interpret missing, provenance, and confidence

A null cell renders as an explicit “missing” label, never as 0. Each row’s provenance badge reflects its factType — a DERIVED row (like free_cash_flow) was computed from other metrics, not filed directly. This endpoint has no confidence field, so rows here never show a confidence badge.

Limitations

No client-side Q4 derivation — if a fourth quarter isn’t returned as its own discrete period, this view does not compute one from FY minus the first three quarters. No automatic lineage retrieval for any cell; a suspicious or missing value stays a manual next step (below). Single company only — this guide never orchestrates requests across tickers.

Next manual action

To verify a specific cell, note its metric key and period, then open it in the Verify a Metric with Explain guide — this endpoint never triggers that request for you.

Copyable code sample

const res = await fetch(
  "https://api.ledgerbase.cc/v2/companies/AAPL/financials?period=FY&limit=5",
  { headers: { "X-API-Key": process.env.LEDGERBASE_API_KEY! } },
);
const { periods, metrics, issues } = await res.json();