---
title: "Api Fundamentals"
method: GET
path: "/api/fundamentals"
---

# Api Fundamentals

`GET /api/fundamentals`

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

Company financials -- local DB first, EDGAR XBRL fallback.

CR-C5 fix (2026-05-04 OWNER Q1 = A): Redis-backed response cache
on the hot path. Pre-fix, an uncached ticker triggered three
sequential FMP calls (income / balance / cash flow). A traffic
burst of 30 unique tickers exhausted the FMP free-tier monthly
budget in minutes. Cache strategy:
  - 5-minute TTL on success (cap data-staleness for live decisions)
  - 24-hour TTL on confirmed-empty / error envelope (don't keep
    re-hitting FMP for tickers known to lack data)
Cache layer is graceful-degrade: if Redis is unavailable, the
helper returns None / no-op, and the route falls through to the
existing local DB → FMP → EDGAR chain unchanged.

## Query parameters

- `ticker` string, nullable

## Response `200`

Successful Response

- StockAnalysisResponse: Loose response_model for /api/fundamentals, /api/segments, /api/exec-comp, /api/sensitivity, /api/proxy, /api/chart-data, and similar analysis routes in routes_analysis_fastapi/stock.py. Multi-shape responses with deeply nested company/financial/chart data; loose contract since the FE consumers are typed via the typed-client wrappers, not directly off these schemas.

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