Historical
Margins, turnovers, and growth rates computed from the statement matrix, one row per reporting period.
What this answers
- How a company’s gross margin or net margin has trended over recent fiscal periods.
- How efficiently a company turns over inventory or receivables, by period.
Coverage
Query rules
ticker is required. period accepts annual, quarterly, or ttm, and defaults to annual on this REST route, unlike the underlying MCP tool’s ttm default. limit defaults to 4 and caps at 100. The same report_period* date filters as the statements routes apply here too.
This route always omits enterprise_value, every price_to_* ratio, EV multiples, free_cash_flow_yield, peg_ratio, return_on_invested_capital, currency, and filing_datetime. None of these are sourceable for a past period without a historical market price this server does not have. ttm rows also drop filing identity (accession_number, form_type, filing_url, filing_date), since a trailing-twelve-month window spans more than one filing. Our own live captures show filing identity absent even on annual rows in practice, the filings join is best effort, not guaranteed on every row.
Worked example
Authorizations
The caller's own Monid API key (get one at https://monid.ai?fpr=dhruv-15136b). Passed straight through to Monid on every call, so usage bills the caller's own wallet — this is never a shared server-side credential, and the server never logs or stores it. Missing, empty, or malformed values answer 401 unauthorized before any paid call is attempted.
Query Parameters
Uppercase-normalized ticker symbol (1-20 letters/digits/dots/hyphens).
Reporting period. REST-level default is "annual"; the tool/FD-schema default is "ttm".
annual, quarterly, ttm Number of records to retrieve (default: 4, max: 100).
1 <= x <= 100Exact report_period date filter (YYYY-MM-DD).
report_period >= this date (YYYY-MM-DD, inclusive).
report_period <= this date (YYYY-MM-DD, inclusive).
report_period > this date (YYYY-MM-DD, exclusive).
report_period < this date (YYYY-MM-DD, exclusive).
Opaque base64url pagination cursor from a previous response's next_page_url. Omit for the first page.
Response
A page of financial-metrics rows, newest report_period first. Identity fields (ticker, report_period, fiscal_period, period) and margins (gross_margin, operating_margin, net_margin) are real values captured from our own live API (docs/our-live-samples/income_statements.json for identity, docs/our-live-samples/metrics_snapshot.json for the margin ratios, which are identical for FY2025). Filing-identity fields (accession_number, form_type, filing_url, filing_date) and every valuation field are omitted: our own live capture did not have them populated for this row, so they are not asserted here (see docs/openapi-notes.md).
Wrapped list envelope: {"financial_metrics": [...], "next_page_url": "..."}. Page size is 10 records (100 for /prices).