# `POST /ownership/names`

**Purpose:** All insiders of one company, aggregated per CIK across its Form 4 and/or Form 3 filings.

**Request:**

| Field | Type | Notes |
|---|---|---|
| `ticker` | string | Exactly one of `ticker` or `cik`. |
| `cik` | string | The company's CIK. Digits only, ≤ 10; leading zeros optional. |
| `form` | string | `4`, `3` or `both` (default): which filings are aggregated. |
| `relationship` | string[] | Any of `ever_director`, `ever_officer`, `ever_ten_percent_owner`, `ever_other` (a role ever reported on those filings). OR semantics. |

**Response:** `names`, `credits_used`, and optional `_warnings`. Each name carries:

| Field | Meaning |
|---|---|
| `owner_cik`, `owner_name` | Spelling from this insider's most recent filing. |
| `name_changed` | `true` when earlier filings spelled the name differently. |
| `caveat` | Present only when `name_changed` is `true`. |
| `ever_director`, `ever_officer`, `ever_ten_percent_owner`, `ever_other` | `true` when any filing reported that role. |
| `latest_officer_title` | Most recent non-null officer title. `null` when never reported. |
| `officer_title_as_of` | Filing date `latest_officer_title` came from. |
| `filing_count` | Filings of this company naming this insider, over the forms in `form`. |
| `form4_filing_count`, `form3_filing_count` | The same count per form. |
| `earliest_filing_date`, `latest_filing_date` | Range. |

**Credits:** **30.**

**Errors:** `404 OWNERSHIP_COMPANY_NOT_FOUND` (charged), `403 PLAN_TIER_INSUFFICIENT_COVERAGE` when the company is outside your plan's coverage scope (charged).

**Example Request:**

```json
{
  "ticker": "NVDA",
  "relationship": ["ever_officer"]
}
```
