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

# SEC filings and company fundamentals API

> Choose an x402 endpoint for SEC financial statements, company fundamentals, Form 4 insider trades or Form 144 proposed sales.

Use Otto's SEC filings APIs to turn a US-listed company ticker into structured financial statements, a fundamentals report or insider-filing records with EDGAR links. Choose the filing type first: a Form 4 reports transactions, while a Form 144 is a notice of a proposed sale and does not establish that it happened.

## Choose the result you need

All four routes below use `GET` with a required `ticker` query parameter, such as `NVDA` or `AAPL`. Each route link opens its free request reference and indicative price; the [live payment challenge](/acp-swarm/x402#inspect-the-challenge) supplies the amount for your call.

| Your task                                                   | Endpoint and current price                                                                     | Result to use                                                                                                               |
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Build a company financial model or compare reported periods | [Financial statements](https://x402.ottoai.services/service-detail?path=/financial-statements) | `income`, `balance` and `cashFlow`, each with annual and quarterly periods; cell-level filing provenance and a filing index |
| Get a compact company fundamentals report                   | [Equity intelligence](https://x402.ottoai.services/service-detail?path=/equity-intel)          | Revenue, earnings, margins and balance-sheet facts, recent filings and a generated interpretation                           |
| Inspect reported insider transactions for one company       | [Insider trades](https://x402.ottoai.services/service-detail?path=/insider-trades)             | Form 4 transaction rows, purchase/sale summaries and filing-window coverage                                                 |
| Monitor notices of proposed insider sales                   | [Form 144 filings](https://x402.ottoai.services/service-detail?path=/form-144-filings)         | Seller, securities, proposed units, the filer's value estimate, planned sale dates and notice links                         |

For a manager's reported portfolio, cross-issuer filing activity or beneficial-ownership filing events, use the endpoint selector in [SEC methodology](/acp-swarm/sec-filings-methodology). These are different questions from a company's fundamentals or its insiders' transactions.

## Prepare a request

Inspect the current input contract for your chosen route:

```bash theme={null}
curl -s https://x402.ottoai.services/openapi.json \
  | jq '.paths["/financial-statements"].get'
```

Then request its price challenge with the same inputs you intend to buy:

```bash theme={null}
curl -i --get 'https://x402.ottoai.services/financial-statements' \
  --data-urlencode 'ticker=NVDA'
```

This unpaid request returns a `402` challenge, not financial statements. Follow [HTTP API](/acp-swarm/x402#make-a-paid-request) to approve a bounded payment and send the paid request. Use [API schemas and examples](/acp-swarm/x402-examples#inspect-the-payment-and-declared-output) to inspect the route's declared output before paying; a discovery example is not current company data.

## Read the delivered data

Data endpoints return their result in `data` and snapshot information in `meta`. Keep both, together with the original request and receipt.

| Response fields                                                                                                        | What they tell you                                                                                                                                          |
| ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Statements: `statementsAvailable`, `note`, `income.annual.periods`, `income.annual.lines`                              | Whether issuer statements are available, which periods are covered and how the lines align to them; balance and cash-flow statements use the same structure |
| Statement cells: `value`, `concept`, `form`, `filed`, `accession`, `method`                                            | The amount, XBRL concept and source filing; derived or computed cells name their supporting facts                                                           |
| Statements: `restated`, `priorValue`, `withheld` on each cell                                                          | A changed historical value or a reason a figure cannot be served                                                                                            |
| Equity intelligence: `fundamentals.basis`, `fundamentals.periodEnd`, `fundamentals.fundamentalsNote`, `analysisStatus` | TTM versus annual basis, the period being described and whether generated analysis is available or applicable                                               |
| Insider trades: `transactions`, `windowSummary`, `coverage`                                                            | Individual reported transactions and the scope behind their totals; follow each row's `filingUrl`                                                           |
| Form 144: `notices`, `summary`, `coverage`                                                                             | Proposed sales and the actual lookback, notice limit and truncation; each notice has a source `url`                                                         |

The [equity report-card guide](/intelligence-guides/equity-report-card) explains TTM reconstruction and one-time-item adjustments. For model-building, use the financial-statement cells and their provenance; generated narrative is a separate interpretation.

## Freshness, amendments and coverage

SEC EDGAR is the source of record. Otto supplies parsing, validation and cached snapshots; filing dates and financial periods can be much older than the response's `generatedAt`. Read `meta` for snapshot age and degradation, then inspect the dates in the filings themselves. A first request can take longer when the ticker has no recent snapshot.

* Missing financial values are `null`, not zero. A fund without issuer XBRL or a non-USD-only filer can return `statementsAvailable: false` and a reason while retaining its filing index.
* Form 4 codes `P` and `S` cover purchases and sales, including private transactions. Awards, gifts and option exercises are separate codes. The filing does not establish motive.
* A detected Form 4 amendment withholds the affected window; detection can lag the filing. Form 144 amendments instead withhold aggregate unit/value totals while individual notices remain visible.
* A Form 144 value is the filer's estimate at notice time. An empty notices list can be a valid result for the disclosed lookback. Form 4 has a different availability rule; do not generalize empty-result behavior across routes.
* A capped filing window is not an exhaustive historical feed. Check coverage before comparing companies or reporting a total.

The complete amendment, null and source rules remain in [How Otto reads SEC filings](/acp-swarm/sec-filings-methodology). These APIs provide filing research; current trading prices and execution require separate data and authorization.
