---
title: "Api Company Profile"
method: GET
path: "/api/company/profile"
tags: ["Research"]
---

# Api Company Profile

`GET /api/company/profile`

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

Company profile from local DB with Finnhub fallback.

Auth: required per tier doctrine (b) ratified 2026-04-25. The
primary read hits local PG (free), but the fallback path makes a
Finnhub API call per request — anonymous flooding could exhaust
upstream budget on tickers not yet in our company_profile table.

## Query parameters

- `ticker` string, nullable

## Response `200`

Successful Response

- CompanyProfileResponse: Company profile from GET /api/company/profile. F4 schema-tightening (2026-04-30): `ticker` REQUIRED. Handler echoes ticker on every 200 path: local-DB hit (full profile dict that includes ticker), Finnhub fallback (explicit ticker echo), empty-state fallback ({"ticker": t, "_empty": True}), exception catch-all (same empty shape). The 400 branch (missing ticker param) returns ErrorResponse via JSONResponse with status_code=400. Frontend ticker-page reads `data.ticker` to gate render of the company-profile panel + sets the panel header text.
  - `ticker` string, required
  - `description` string, nullable
  - `facts` object, nullable
  - `management` ManagementMember[], nullable
    - `name` string, nullable
    - `title` string, nullable
  - `dataQuality` string, nullable
  - `_source` string, nullable
  - `_empty` boolean, 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)
