# Executive Compensation API Reference | SEC API > Complete API reference for the SEC Executive Compensation API. Every request parameter, every searchable field and every response attribute of the compensation records standardised from DEF 14A filings, with types, constraints and a live example response. Source: https://sec-api.io/api-reference/executive-compensation Company and governance data POST`https://api.sec-api.io/compensation` Search the compensation of named executives, standardised from the DEF 14A proxy statements filed since 2005. A new record is searchable around 300 milliseconds after EDGAR publishes the filing, and a GET request to https://api.sec-api.io/compensation/TSLA or /compensation/1318605 returns every record of one company. [Read the guide for this API →](https://sec-api.io/docs/executive-compensation-api) ## Authentication Send the API key either as a header or as a query parameter. The header is preferred; the query parameter exists for cases where a header cannot be set, such as opening a URL directly in a browser. Authorization: required header The API key on its own. Do not prefix it with Bearer or any other word. Example `Authorization: YOUR_API_KEY` token: optional query parameter The API key, appended to the URL. Use this only when a header is not possible. ## Request body A JSON object. Content-Type must be application/json. query: required string The search expression in Lucene syntax, written as field:value. Every field listed under Searchable fields can be used, combined with AND, OR, NOT, parentheses, ranges and wildcards. Range expressions use square brackets, for example year:[2018 TO 2022] or salary:[100000 TO *]. Example `ticker:TSLA AND year:2024` from: string, Maximum 10000 Index of the first result to return, used for pagination. Increment by the value of size to page through results. A single query can reach at most 10000 items. Narrow the query, for example by reporting year, when it matches more. Default `"0"` size: string, Maximum 50 Number of compensation records to return in one response. Default `"50"` sort: array of object Sort order. Each item maps one field to an order object, for example [{ "salary": { "order": "desc" } }]. Default `[{ "year": { "order": "desc" } }]` order: string Either asc or desc. ## Searchable fields Every field below can be used inside query. 14 fields are searchable, and they match the structure of the objects returned in the response. | Field | Description | | --- | --- | | `ticker` | Ticker symbol of the reporting company | | `cik` | CIK of the reporting company | | `name` | Executive name | | `position` | Executive position / title (e.g. "Chief Executive Officer") | | `year` | Reporting year, e.g. 2024 | | `salary` | Annual base salary | | `bonus` | Cash bonus | | `stockAwards` | Stock awards (grant-date fair value) | | `optionAwards` | Option awards (grant-date fair value) | | `nonEquityIncentiveCompensation` | Non-equity incentive plan compensation | | `changeInPensionValueAndDeferredEarnings` | Change in pension value and nonqualified deferred compensation earnings | | `otherCompensation` | All other compensation | | `total` | Total compensation for the reporting year | | `id` | System-internal unique identifier of the record. | ## Response A JSON object. Nested attributes are collapsed; expand one to see its fields. (root): array of object The response body is a JSON array, not an object. Each item is one compensation record: one executive, at one company, for one reporting year. The array holds at most size items, and it is empty when nothing matches the query. id: string System-internal unique identifier of the record. cik: string CIK of the reporting company, leading zeros removed, for example 1318605. The CIK does not change when a company is renamed or changes its ticker. ticker: string Ticker of the reporting company, for example TSLA. name: string Name of the executive as reported in the proxy statement. Spelling and capitalisation vary between filings. position: string Position of the executive, for example Chief Financial Officer. Titles are not standardised, so the same role can appear as Chief Executive Officer, CEO or a company-specific phrasing such as Technoking of Tesla. year: integer Reporting year of the compensation, for example 2024. salary: number Base salary for the reporting year, in US dollars. bonus: number Cash bonus for the reporting year, in US dollars. stockAwards: number Stock awards for the reporting year at grant-date fair value, in US dollars. optionAwards: number Option awards for the reporting year at grant-date fair value, in US dollars. nonEquityIncentiveCompensation: number Non-equity incentive plan compensation for the reporting year, in US dollars. changeInPensionValueAndDeferredEarnings: number Change in pension value and nonqualified deferred compensation earnings for the reporting year, in US dollars. otherCompensation: number All other compensation for the reporting year, in US dollars. total: number Total compensation for the reporting year, in US dollars. ## Status codes | | | | --- | --- | | `200` | Success. The response holds an array of compensation records, which is empty when nothing matched. | | `400` | The request body could not be parsed, or the Lucene expression in query is malformed. | | `403` | The API key is missing, or it is not valid. | | `429` | Too many requests. Slow the request rate and retry. | | `500` | Server error. Retry, and report it if it persists. | ## Request example POST https://api.sec-api.io/compensation ```json { "query": "ticker:TSLA AND year:2024", "from": "0", "size": "50", "sort": [{ "year": { "order": "desc" } }] } ``` ```python from sec_api import ExecCompApi execCompApi = ExecCompApi("YOUR_API_KEY") response = execCompApi.get_data({ "query": "ticker:TSLA AND year:2024", "from": "0", "size": "50", "sort": [{"year": {"order": "desc"}}], }) ``` ```javascript import { execCompApi } from "sec-api"; execCompApi.setApiKey("YOUR_API_KEY"); const response = await execCompApi.getData({ query: "ticker:TSLA AND year:2024", from: "0", size: "50", sort: [{ year: { order: "desc" } }], }); ``` ```bash curl -X POST https://api.sec-api.io/compensation \ -H "Authorization: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "ticker:TSLA AND year:2024", "from": "0", "size": "50", "sort": [{ "year": { "order": "desc" } }] }' ``` ## Response example 200 OK · application/json ```json [ { "id": "19b4cc24f7170d4f2a69fe20299e8478", "cik": "1318605", "ticker": "TSLA", "name": "Tom Zhu", "position": "SVP, APAC and Global Vehicle Manufacturing", "year": 2024, "salary": 350000, "bonus": 0, "stockAwards": 0, "optionAwards": 0, "nonEquityIncentiveCompensation": 0, "changeInPensionValueAndDeferredEarnings": 0, "otherCompensation": 168250, "total": 518250 }, { "id": "0d16240cd4ed290eeb096d007570f3f2", "cik": "1318605", "ticker": "TSLA", "name": "Andrew Baglino", "position": "Former SVP, Powertrain and Energy Engineering", "year": 2024, "salary": 121620, "bonus": 0, "stockAwards": 0, "optionAwards": 0, "nonEquityIncentiveCompensation": 0, "changeInPensionValueAndDeferredEarnings": 0, "otherCompensation": 3000, "total": 124620 }, { "id": "cf7779d6e76ea8fbb5d95a250758dd93", "cik": "1318605", "ticker": "TSLA", "name": "Elon Musk", "position": "Technoking of Tesla and Chief Executive Officer", "year": 2024, "salary": 0, "bonus": 0, "stockAwards": 0, "optionAwards": 0, "nonEquityIncentiveCompensation": 0, "changeInPensionValueAndDeferredEarnings": 0, "otherCompensation": 0, "total": 0 }, { "id": "61bb71efb2560e6bcb3ccc5b9870f9c2", "cik": "1318605", "ticker": "TSLA", "name": "Vaibhav Taneja", "position": "Chief Financial Officer", "year": 2024, "salary": 303846, "bonus": 0, "stockAwards": 26136809, "optionAwards": 113029280, "nonEquityIncentiveCompensation": 0, "changeInPensionValueAndDeferredEarnings": 0, "otherCompensation": 3000, "total": 139472935 } ] ```