# Arche documentation

Arche is a developer-first API and MCP server for deterministic, versioned, point-in-time financial fundamentals.
It reads SEC EDGAR filings into income statements, balance sheets and cash flow statements that you
can retrieve as they stood on any date. A restatement adds a version rather than overwriting the
last one, and every value carries the accession number of the filing it came from.

Arche is built for quant research and backtesting, financial applications, data engineering
pipelines, and AI agents, which reach the same data over [MCP](https://docs.arche.fi/mcp).

Use the docs in this order:

- **[Quickstart](https://docs.arche.fi/quickstart)**: Make a real request, retrieve a company's statements, and run an `as_of` query.
- **[Concepts](https://docs.arche.fi/concepts)**: Learn how restatements, version history, and point-in-time correctness fit together.
- **[API reference](https://docs.arche.fi/reference)**: Browse the live OpenAPI contract for route-level request and response details.
- **[Flagship guide](https://docs.arche.fi/guides/restatement-drift)**: See how restatement drift changes research results when history is not queried correctly.

## Start here

If your use case depends on historical correctness, Arche is usually about one of four tasks:

- resolve a company identifier into a canonical issuer record
- retrieve statements or filings for that issuer
- see every filing's statement for a period across restatements
- query what was knowable on a specific date

## What Arche solves

Traditional datasets often expose the latest corrected history. That is convenient for present-day analysis, but it breaks reproducibility when historical values change later.

Arche preserves:

- each SEC filing's statement, the original and every amendment
- point-in-time query semantics
- deterministic retrieval for the same request

> **Warning:** If you backtest with the latest restated values instead of what was actually knowable on the
> decision date, your historical results can drift over time.

## First request

Resolve a ticker into a canonical issuer record:

**Resolve a company**

```bash
curl -X GET "https://api.arche.fi/v1/edgar/companies:resolve?ticker=MSFT" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Accept: application/json"
```

```ts
const response = await fetch(
  'https://api.arche.fi/v1/edgar/companies:resolve?ticker=MSFT',
  {
    headers: {
      'X-Api-Key': process.env.ARCHE_API_KEY!,
      Accept: 'application/json',
    },
  },
)

const payload = await response.json()
console.log(payload.data)
```

```python
import os
import requests

response = requests.get(
    "https://api.arche.fi/v1/edgar/companies:resolve",
    params={"ticker": "MSFT"},
    headers={
        "X-Api-Key": os.environ["ARCHE_API_KEY"],
        "Accept": "application/json",
    },
    timeout=30,
)

print(response.json()["data"])
```

Representative response:

```json
{
  "data": {
    "as_of": "2026-09-20",
    "cik": "0000789019",
    "ticker": "MSFT"
  }
}
```

This route answers one question: which CIK this ticker meant on this date. For
an issuer's name, listings or SIC code, request the company profile:

```http
GET /v1/edgar/companies/0000320193
```

Representative response:

```json
{
  "data": {
    "cik": "0000320193",
    "entity_name": "Apple Inc.",
    "tickers": ["AAPL"],
    "exchanges": ["XNAS"],
    "sic": "3571",
    "sic_description": "Electronic Computers",
    "fiscal_year_end": "0926"
  }
}
```

## Core workflows

- **[Resolve a company and retrieve statements](https://docs.arche.fi/guides/company-resolution-and-statement-retrieval)**: Move from ticker lookup into filings and statement discovery.
- **[Rebuild a historical view](https://docs.arche.fi/guides/rebuild-historical-view)**: Reconstruct what a statement looked like on a specific date.
- **[Point-in-time research](https://docs.arche.fi/guides/point-in-time-research)**: Build research jobs that preserve knowability and reproducibility.
- **[Restatement drift](https://docs.arche.fi/guides/restatement-drift)**: Quantify how historical results can change when restatements arrive later.
