Alpha AnalystDocs

Documents API

Search SEC EDGAR, Japan EDINET, and your uploads as one document list. Exhibit-level markdown, historical backfill, then look up one file.

Use Documents when you want one keyword search across US SEC filings, Japan EDINET reports, and files your team uploaded—the same indexed text search as the regime-specific filing tools. Browse without query to list whole submissions; add query for ranked excerpts on the matching exhibit.

A document is one file you can open: an SEC exhibit, an EDINET exhibit, or a file you uploaded. A filing is the submission that contains those files. Search returns one Document item either way. kind tells you which.

Without query, each hit is kind=filing: documents[] is every file, document_id is the primary file, and display describes the submission. With query, each hit is kind=document: that file only, excerpts, and a slim parent. There is no sibling list on a keyword hit. Resolve parent_id when you want the rest.

Find the company on Entities, search with Document Search, then pass document_id into Document Contents. A filing id works on Document Reference and returns the full documents[]. Contents rejects a filing id.

Use this group when you want one query across corpora. Use a source group when you need filters and fields that only exist on that corpus:

You wantCall
One list, shared Document fieldsDocument Search
Which filing_type_categories / filing_types expand to which formsDocument Types
SEC fiscal year / period, 8-K items, form category, then that exhibit's markdownSEC Filings
EDINET disclosure codes, reporting-period dates, then that exhibit's markdownEDINET Translated Filings
Your uploads, folders, file types, then that file's markdownUser Documents

Source groups still return the Document item first, then extra fields. Each group has its own Types, Reference, and Markdown endpoints. The unified Document Reference and Document Contents stay the cross-corpus lookup.

Company fields on a document are Entity items. Do not treat entities[] as a second company object.

Coverage

Three corpora, one Document shape:

SourceHistoryWhat is in the file
SEC (sec)Live as EDGAR accepts a filing, plus historical backfill of accessions we did not yet have. Same parser for both.Essentially all EDGAR form types we index (10-K, 10-Q, 8-K, 20-F, 40-F, ownership, proxies, registrations, and the rest, including /A amendments). Exhibit grain: HTML, PDF-as-text, and XML forms become markdown. Graphics and the IDEA XBRL zip are not markdown (XBRL facts are the XBRL group).
EDINET (edinet)English-translated EDINET from 2015-10-29, then live. See EDINET coverage.Annual and quarterly securities reports, extraordinary reports, AGM materials, M&A packs, and the other disclosure codes on Document Types. Main document, audit reports, and attachments are separate exhibits. PDFs inside the zip are skipped.
User (user)From the upload time of each file.Files you or your organization uploaded. Types: User Document Types.

Call Types for the full form/code lists — do not hard-code a sample of 10-Ks and assume that is the corpus.

Access

source is sec, edinet, or user. It is not an index name.

SourceWho can see it
secEveryone with API/MCP access
edinetCallers with Japan filings access. Asking sources=edinet only without that access is 403.
userSigned-in callers with upload access. Asking sources=user while anonymous is 401.

Omit sources on Search to search every corpus you are allowed to see. Scoping Search with a company id turns off uploaded files (and the other filing system if that listing has only a CIK or only an EDINET code).

Never send user_id or organization_id. Identity is bound from your credentials.

Japan and uploads are entitlement-gated

sources=edinet without Japan access is 403. sources=user is platform-linked (uploads on the key’s login; same rules as Files). Omit sources to search every corpus your credentials allow.

The Document item

Same object on Search, Reference, and Contents. kind is filing or document. event is reserved for a later IR parent and is not returned yet. Public JSON is snake_case. The file identifier is always document_id, never id.

A row can render from the shared fields and ignore kind until someone expands or opens:

FieldOn a filingOn a document
kindfilingdocument
document_idPrimary file (is_primary in documents[]). Pass this to Contents.This file. Pass this to Contents.
parent_idAccession or EDINET filing idSame container. Null on uploads.
filing_idSame as parent_idSame as parent_id when the container is a filing. Null on uploads. Prefer parent_id.
sourcesec, edinet, or userSame. This is the corpus, not the grain.
published_at / filed_atThe same UTC instant. See published_at.Same clock as the parent.
displaySubmission chip and subtitleFile chip and subtitle
entitiesFilersFilers. Omitted on nested documents[]; use the parent list.
documentsEvery file, each a Document itemAbsent
parentAbsentSlim filing (kind, parent_id, display). Absent on uploads.
filingRegulatory pointer (parent_id, parent_type, source)Same pointer. Today it matches parent_id.
excerptsAbsentKeyword search only

display keys: title, type (chip, so Schedule 13G is SC 13G), type_long (Annual report), description, description_short, description_secondary, category. category is financials, current_reports, ownership, proxies, registrations, mna, correspondence, orders, trust_indenture, other, or upload. It is not the native SEC type_category.

Inside documents[], is_primary is the file document_id opens. display_order is the UI order (primary, then other files, attachments last). sequence is the regulator order. is_attachment marks files a compact list can hide.

Source groups add their extra fields on the filing and on a top-level document hit. Nested files carry exhibit fields (filename, type, EDINET attachment status), not a second copy of the submission header.

Filing type filters

filing_type_categories includes current_reports for 8-K, 6-K, and similar disclosures. events is a deprecated alias of current_reports. It is not an IR event. The other ids are unchanged: financials_periodic, ownership, proxies_agm, registrations_offerings, mna_tenders, correspondence, orders_notices, trust_indenture, other.

filing_types still accepts groups (annual_report, current_report, …) and raw forms (10-K, 120).

published_at

published_at and filed_at are the same UTC instant (ISO-8601, Z, milliseconds). Prefer published_at. Compare it as UTC.

sourceClock we readZone if the string has no offset
secSEC acceptanceUS Eastern. A trailing Z on the source string is not UTC.
edinetEDINET submissionJapan (Asia/Tokyo)
userUpload timeUTC if the value is naive

from_date / to_date are calendar dates on that source day, not a range computed from the UTC string.

Filing id vs document id

You havekind you get from ReferenceContents
SEC accession or EDINET filing idfiling, with documents[]400. Pass a document_id from documents[].
Exhibit document_id or accession|chunkdocument, slim parent, no other filesMarkdown for that file
Uploaded file iddocument, filing_id nullMarkdown for that file

What this leaves room for

An IR event will be kind=event: another parent, with documents[] for the transcript, slides, and any SEC file. The SEC file keeps its document_id. On that copy, parent_id is the event and filing still points at the accession. Search will not return events unless you ask for that source. Clients that only handle filing and document keep working. display is the same object, so a row can still render an unknown kind.

Company id

Document Search id is the same handle as Entity Reference. See Ids you can send. A miss is 404.

Entity fields live on Entities Overview. This page does not re-list them.

What to call

You haveCall
A keyword, a company, or “recent filings” across sourcesDocument Search
The list of category / type groups and every form codeDocument Types
A filing id, and you want every fileDocument Reference
A document_id, and you want that file's markdownDocument Contents
A name or ticker and you do not have a company id yetEntity Search then Search with id

Browse (no query) returns kind=filing and documents[]. Keyword search returns kind=document and excerpts. Contents reads one file; page is valid only with query.

Guides