---
title: "Api Exec Comp"
method: GET
path: "/api/exec-comp"
---

# Api Exec Comp

`GET /api/exec-comp`

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

Executive compensation from DEF 14A proxy statements.

Returns cached data from PostgreSQL (stale-while-revalidate).
If no cached data exists, or the cache is >90 days old, triggers a
background fetch from SEC EDGAR and returns whatever is currently stored.

Response shape:
    {
        ticker: str,
        filing_date: str,
        accession: str,
        cached_at: str | null,
        executives: [
            {
                name: str,
                title: str | null,
                years: [
                    { year, salary, bonus, stock_awards, option_awards,
                      non_equity_incentive, pension_change, all_other, total }
                ]
            }
        ],
        source: "cache" | "fresh" | "background_fetch_triggered"
    }

## Query parameters

- `ticker` string, required

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