> ## Documentation Index
> Fetch the complete documentation index at: https://api.unusualwhales.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> API requests use the base URL https://api.unusualwhales.com and require a bearer token in the `Authorization` header (`Authorization: Bearer <API_KEY>`). Create and manage API tokens at https://unusualwhales.com/dashboard/api.
> For live market data inside an AI tool, use the Unusual Whales MCP server at https://unusualwhales.com/public-api/mcp.
> Instructions for agents using Unusual Whales tools: https://unusualwhales.com/skill.md

# SEC company reports

> Receive annual and quarterly company reports (10-Q, 10-K, 20-F and 40-F) as they are processed, with the financial statements parsed from the filing.

**NOTE:**
This is the documentation for the websocket channel `sec:company_reports`.
Websocket access for personal use is only available through the [Advanced plan](https://unusualwhales.com/pricing?product=api).

You can find fully-functional examples that stream data from many channels here:

* Python: [https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output](https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output)
* Javascript: [https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output-nodejs](https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output-nodejs)

Connect to the websocket URI:

`wss://api.unusualwhales.com/socket?token=<YOUR_API_TOKEN>`

then `join` the `sec:company_reports` channel.

Each message carries one periodic report that a company filed with the SEC, together with
the income statement, balance sheet and cash flow statement items parsed from the filing's
XBRL data. The channel covers the annual and quarterly reports of domestic and foreign
issuers: forms 10-Q, 10-K, 20-F and 40-F, and their amendments. Use `formtype` to tell them
apart.

### Delivery characteristics

* **Updates are event driven.** The channel stays silent until a company report is
  processed. There is no heartbeat and no fixed schedule.
* **An item the filing does not report is `0.0`.** Every statement item is present in every
  message, so a `0.0` can mean either zero or not reported.
* **Messages are not deduplicated.** If the same report is published twice, you receive it
  twice. Identify a report by `unique_identifier`.
* **The channel sends nothing when you join.** Messages sent while you are disconnected are
  not replayed.
* **The channel is global only.** It covers every company at once. A join on
  `sec:company_reports:<TICKER>` is answered with an `{"error": "..."}` frame.

Payload format (shortened, a real message carries every field listed below):

```
[
  "sec:company_reports",
  {
    "ticker": "AAPL",
    "filing_date": "2024-11-01",
    "report_year": 2024,
    "formtype": "10-K",
    "accession_no": "0000320193-24-000123",
    "cost_of_revenue": 210352000000.0,
    "earnings_per_share": 6.11,
    "gross_profit": 180683000000.0,
    "income_before_tax": 123485000000.0,
    "income_tax_expense": 29749000000.0,
    "operating_income": 123216000000.0,
    "research_and_development_expenses": 31370000000.0,
    "revenue": 391035000000.0,
    "selling_general_and_administrative_expenses": 26097000000.0,
    "cash_and_cash_equivalents": 29943000000.0,
    "share_holders_equity": 56950000000.0,
    "total_assets": 364980000000.0,
    "total_liabilities": 308030000000.0,
    "net_income": 93736000000.0,
    "report_period_end_date": "2024-09-28"
  }
]
```

### Field reference

Every field is present in every message. Strings the filing does not provide are sent as
empty strings, never as `null`. Dates are strings in `YYYY-MM-DD` format.

The name `deffered_income_tax` is spelled as shown.

#### Filing

<div className="field-table field-table-aligned">
  | Field | Type | Description |
  | - | - | - |
  | `ticker` | string | Ticker of the reporting company. |
  | `filing_date` | string | Date the filing was published to the SEC. |
  | `report_year` | int | Year the report covers, derived from the filing date. |
  | `formtype` | string | SEC form type: `10-Q`, `10-K`, `20-F`, `40-F` or one of their `/A` amendments. |
  | `accession_no` | string | SEC accession number of the filing. |
  | `unique_identifier` | string | Identifier computed from the fields of the filing. A repeated message carries the same value. |
  | `report_period_end_date` | string | End date of the reporting period. |
</div>

#### Income statement

<div className="field-table field-table-aligned">
  | Field | Type | Description |
  | - | - | - |
  | `cost_of_revenue` | float | Total cost of revenue. |
  | `depreciation_and_amortization` | float | Depreciation and amortization expense. |
  | `earnings_per_share` | float | Basic earnings per share (XBRL item `EarningsPerShareBasic`). |
  | `gross_profit` | float | Gross profit: revenue minus cost of revenue. |
  | `income_before_tax` | float | Income before the provision for income taxes. |
  | `income_tax_expense` | float | Income tax expense. |
  | `interest_and_dividend_incomes` | float | Interest and dividend income. |
  | `interest_expense` | float | Interest expense. |
  | `operating_income` | float | Income from operations. |
  | `research_and_development_expenses` | float | Research and development expenses. |
  | `revenue` | float | Total revenue, taken from the first available of several XBRL revenue items. |
  | `selling_general_and_administrative_expenses` | float | Selling, general and administrative expenses. |
  | `net_income_loss` | float | Net income or loss (XBRL item `NetIncomeLoss`, or `ProfitLoss` when the filing has no `NetIncomeLoss`). |
</div>

#### Balance sheet

<div className="field-table field-table-aligned">
  | Field | Type | Description |
  | - | - | - |
  | `cash_and_cash_equivalents` | float | Cash and cash equivalents. |
  | `goodwill` | float | Goodwill. |
  | `inventories` | float | Inventories. |
  | `long_term_investments` | float | Long-term investments. |
  | `other_current_assets` | float | Other current assets. |
  | `other_non_current_assets` | float | Other non-current assets. |
  | `property_plant_and_equipment` | float | Property, plant and equipment. |
  | `share_holders_equity` | float | Total shareholders' equity. |
  | `short_term_investments` | float | Short-term investments. |
  | `total_assets` | float | Total assets. |
  | `total_current_assets` | float | Total current assets. |
  | `total_liabilities` | float | Total liabilities. When the filing reports no total, the sum of its current and non-current liabilities. |
  | `total_non_current_assets` | float | Total non-current assets. |
  | `cash_at_carrying_value` | float | Cash and cash equivalents at carrying value. |
  | `acc_receivable_net_current` | float | Current accounts receivable, net of allowance. |
  | `derivative_current_assets` | float | Current derivative assets. |
</div>

#### Cash flow statement

<div className="field-table field-table-aligned">
  | Field | Type | Description |
  | - | - | - |
  | `deffered_income_tax` | float | Deferred income tax. |
  | `cash_flow_depreciation_and_amortization` | float | Depreciation and amortization adjustment within operating activities. |
  | `net_cash_provided_by_operating_activities` | float | Net cash provided by operating activities. |
  | `net_income` | float | Net income as the cash flow statement reports it. |
  | `other_non_cash_items` | float | Other non-cash adjustments within operating activities. |
  | `stock_based_compensation` | float | Stock-based compensation expense. |
</div>

#### Shares, stock awards and buybacks

<div className="field-table field-table-aligned">
  | Field | Type | Description |
  | - | - | - |
  | `shares_outstanding` | float | Common shares outstanding at the end of the period, adjusted for stock splits and ADR ratios. |
  | `rsu_granted` | float | Restricted stock units granted in the period. |
  | `rsu_vested` | float | Restricted stock units vested in the period. |
  | `rsu_forfeited` | float | Restricted stock units forfeited in the period. |
  | `rsu_outstanding` | float | Restricted stock units outstanding and not yet vested. |
  | `repurchase_shares` | float | Number of shares repurchased in the period. |
  | `repurchase_value` | float | Value of the shares repurchased in the period. |
  | `repurchase_and_retire_shares` | float | Number of shares repurchased and retired in the period. |
  | `repurchase_and_retire_value` | float | Value of the shares repurchased and retired in the period. |
  | `payments_for_repurchase` | float | Cash paid to repurchase common stock. |
</div>

The payload has the fields of the Kafka message
[`Form10K`](/docs/kafka/types/Form10K), published to the topic
[`sec-filings`](/docs/kafka/topics/sec-filings) under the key `company-reports`. The message is
named `Form10K` for all four form types.
