API Reference

Filing Items

Split a filing into its individual numbered Items — Item 1 (Business), Item 1A (Risk Factors), Item 7 (MD&A), Item 8 (Financial Statements), and the rest. Parsed deterministically from the SEC EDGAR primary document, so each Item's text is exactly what the filer attributed to it — no model, no paraphrase.

GET/v1/filings/items

Identify a filing by ticker + filing_type + period, or directly by accession_number. Supported forms: 10-K, 10-Q, and 8-K. Get the accession from the Filings endpoint.

Precision over coverage
The splitter is deterministic and conservative. On a filing whose layout it can’t parse with high confidence, it fails closed with a 503 rather than return text that might be mis-attributed. You get the right Items or an honest error — never a confidently-wrong slice.

Query parameters#

tickerstringoptional
US ticker, e.g. AAPL. Use with filing_type + period, or skip it and pass accession_number directly.
filing_type"10-K" | "10-Q" | "8-K"optional
The form to parse. Required unless you pass accession_number.
yearnumberoptional
Fiscal year, e.g. 2024. Selects the filing together with filing_type (and quarter for a 10-Q).
quarternumberoptional
Fiscal quarter 14, for a 10-Q.
accession_numberstringoptional
The exact filing to parse, e.g. 0000320193-24-000123. The most precise selector and required for 8-K (a company files many per year). Takes precedence over the year/quarter selectors.
itemstring | string[]optional
Return only specific Items, e.g. item=1A or item=1A&item=7. Omit to return every Item in the filing.
include_exhibitsbooleanoptional
When true, each Item carries an exhibits array of the exhibits attached to it. Defaults to false (the array is empty).
include_exhibit_textbooleanoptional
When true (with include_exhibits), exhibit entries include their full text, not just the reference. Defaults to false.
resolvebooleanoptional
When an Item is incorporated by reference (its body is a pointer like “See the Proxy Statement”), set resolve=true to follow the reference and return the resolved body where possible. Defaults to false — the literal pointer text is returned as filed.

Example request#

curlbash
# By ticker + period (10-K)
curl "https://api.focusalpha.ai/v1/filings/items?ticker=AAPL&filing_type=10-K&year=2024" \
  -H "X-API-Key: $FOCUSALPHA_API_KEY"

# A single Item
curl "https://api.focusalpha.ai/v1/filings/items?ticker=AAPL&filing_type=10-K&year=2024&item=1A" \
  -H "X-API-Key: $FOCUSALPHA_API_KEY"

# An 8-K (accession required)
curl "https://api.focusalpha.ai/v1/filings/items?ticker=AAPL&filing_type=8-K&accession_number=0000320193-25-000079" \
  -H "X-API-Key: $FOCUSALPHA_API_KEY"

Response#

Returns the filing identifiers plus an items array, in document order.

resourcestringrequired
Always "filings" — the resource this item set belongs to.
tickerstringrequired
Company ticker.
ciknumberrequired
SEC Central Index Key.
filing_typestringrequired
The parsed form type.
accession_numberstringrequired
The accession number of the filing that was parsed.
yearnumberrequired
Fiscal year of the filing — echoed from the required request parameter.
quarternumberoptional
Fiscal quarter 14. Present only for a 10-Q.
itemsobject[]required
The numbered Items — see fields below.

item#

numberstringrequired
The Item identifier. For a 10-K the bare code, e.g. Item-1, Item-1A, Item-7A. For 8-K the dotted event code, e.g. Item-5.02. For a 10-Q the Part-qualified form, e.g. PART I, ITEM 1 / PART II, ITEM 1A, so Part I and Part II items that share a number don't collide.
namestringrequired
The canonical Item title, e.g. Business, Risk Factors.
textstringrequired
The Item's body text, exactly as attributed to it in the filing.
text_mode"literal" | "resolved"required
literal — the text as filed (the default). resolved — a by-reference Item whose pointer was followed because you passed resolve=true.
resolvedobjectoptional
Provenance for an expanded Item — present only when text_mode is resolved. Carries source ("in_document" or "annual_report_exhibit"),resolved_from (the pointer target parsed from the original stub, when available), text_chars (length of the resolved body), and truncated (boolean).
exhibitsobject[]optional
Exhibits attached to this Item. Empty unless include_exhibits=true.

Example response#

response.jsonjson
{
  "resource": "filings",
  "ticker": "AAPL",
  "cik": 320193,
  "filing_type": "10-K",
  "accession_number": "0000320193-24-000123",
  "year": 2024,
  "items": [
    {
      "number": "Item-1",
      "name": "Business",
      "text": "Business\n\nCompany Background\nThe Company designs, manufactures and markets smartphones...",
      "text_mode": "literal",
      "exhibits": []
    },
    {
      "number": "Item-1A",
      "name": "Risk Factors",
      "text": "Risk Factors\n\nThe Company's business, reputation, results of operations...",
      "text_mode": "literal",
      "exhibits": []
    }
  ]
}

What you get vs. raw EDGAR HTML#

A 10-K is one long HTML document with running page headers, a table of contents, exhibit indexes, and financial schedules interleaved. This endpoint returns just the narrative body attributed to each numbered Item — boundaries computed from the document structure, with back-matter (signatures, exhibit indexes, financial-statement schedules, glossaries) bounded out so it doesn’t bleed into the last Item. Short Items the filer marks None., Not applicable., or [Reserved] are returned as-is rather than dropped.

Errors#

Standard statuses: 400 (a missing required parameter — ticker and year are always required, quarter is required for a 10-Q, and accession_number is required for an 8-K — or an unsupported filing_type), 401 (bad or missing API key), 402 (rate limit or monthly quota exceeded — upgrade required), 404 (no matching filing), 503 (the layout could not be parsed with confidence — fail-closed, not an outage). See Errors.