Onera Corpus
US · INDIA · CHINA

Market data that remembers what it knew

Filings, fundamentals and prices across three markets. Every value carries the moment we learned it, so a question about the past returns the past.

COVERAGE

Three markets, native identifiers

A CIK is not a CIN is not an A-share code. Corpus keeps each market's own identifier and shares only the request and response shape.

United States

CIK · ACCESSION · TICKER

SEC EDGAR, read as filed. Annual and quarterly reports, current reports, foreign private issuer reports, insider transactions and institutional holdings, each with full text, exhibits and amendments.

10-K·10-Q·8-K·6-K·FORM 4·13F-HR

XBRL financials as reported, plus daily prices.

India

ISIN · NSE SYMBOL · CIN

The disclosure trail and the record around it. Exchange filings and corporate actions, OCR'd annual reports, the company register, and the courts that decide what a company owes.

NSE + BSE EOD·ANNUAL REPORTS·CORP ACTIONS·MCA REGISTER·JUDGMENTS

High Court and district judgments with extracted text and source PDFs.

China

EXCHANGE-QUALIFIED CODE

Shanghai and Shenzhen A-shares, unadjusted, with the adjustment factors kept separately so history is never silently rewritten. Delisted names are retained.

SSE DAILY·SZSE DAILY·ADJ FACTORS·HALT STATUS

A suspended day carries its halt status rather than a forward-filled price.

GUARANTEES

What the data promises

Point-in-time: Every value carries the time we learned it, separately from the time it describes. A query as of a past date returns what was knowable then.

Traceable: Every record carries its accession, source id and retrieval time. Source bytes are content-addressed, so the document behind a number can be replayed exactly as fetched.

Unrevised: Restatements are kept as separate observations. The figure a filing first reported stays readable after the company corrects it.

Marked: A suspended trading day says suspended. An unaudited figure says unaudited. Coverage gaps are reported, not interpolated.

ONE REQUEST

Typed responses, every market

One key, one response envelope. The jurisdiction and the point-in-time flag travel with the payload rather than living in the docs.

GET/us/financials/income-statements
curl "https://corpus-api.onera.app/us/financials/income-statements?ticker=AAPL&limit=1"
  --header "X-API-KEY: $CORPUS_API_KEY"

{
  "income_statements": [{
    "ticker": "AAPL",
    "report_period": "2025-09-27",
    "revenue": 416161000000,
    "net_income": 112010000000
  }],
  "meta": { "point_in_time": true }
}
INTERFACES

One account, three ways in

REST

Typed envelopes. Every response carries its jurisdiction and its point-in-time metadata. OpenAPI schema published.

Documentation
MCP

The same surface for agents. Same key, same credit accounting, no second integration to keep in step.

Documentation
ASK

Natural-language questions planned into real queries, answered with the rows and the citations behind them.

Documentation

Start with 100,000 credits

Enough to evaluate every market and every endpoint without speaking to anyone.