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 want | Call |
|---|---|
| One list, shared Document fields | Document Search |
Which filing_type_categories / filing_types expand to which forms | Document Types |
| SEC fiscal year / period, 8-K items, form category, then that exhibit's markdown | SEC Filings |
| EDINET disclosure codes, reporting-period dates, then that exhibit's markdown | EDINET Translated Filings |
| Your uploads, folders, file types, then that file's markdown | User 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:
| Source | History | What 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.
| Source | Who can see it |
|---|---|
sec | Everyone with API/MCP access |
edinet | Callers with Japan filings access. Asking sources=edinet only without that access is 403. |
user | Signed-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:
| Field | On a filing | On a document |
|---|---|---|
kind | filing | document |
document_id | Primary file (is_primary in documents[]). Pass this to Contents. | This file. Pass this to Contents. |
parent_id | Accession or EDINET filing id | Same container. Null on uploads. |
filing_id | Same as parent_id | Same as parent_id when the container is a filing. Null on uploads. Prefer parent_id. |
source | sec, edinet, or user | Same. This is the corpus, not the grain. |
published_at / filed_at | The same UTC instant. See published_at. | Same clock as the parent. |
display | Submission chip and subtitle | File chip and subtitle |
entities | Filers | Filers. Omitted on nested documents[]; use the parent list. |
documents | Every file, each a Document item | Absent |
parent | Absent | Slim filing (kind, parent_id, display). Absent on uploads. |
filing | Regulatory pointer (parent_id, parent_type, source) | Same pointer. Today it matches parent_id. |
excerpts | Absent | Keyword 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.
source | Clock we read | Zone if the string has no offset |
|---|---|---|
sec | SEC acceptance | US Eastern. A trailing Z on the source string is not UTC. |
edinet | EDINET submission | Japan (Asia/Tokyo) |
user | Upload time | UTC 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 have | kind you get from Reference | Contents |
|---|---|---|
| SEC accession or EDINET filing id | filing, with documents[] | 400. Pass a document_id from documents[]. |
Exhibit document_id or accession|chunk | document, slim parent, no other files | Markdown for that file |
| Uploaded file id | document, filing_id null | Markdown 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 have | Call |
|---|---|
| A keyword, a company, or “recent filings” across sources | Document Search |
| The list of category / type groups and every form code | Document Types |
| A filing id, and you want every file | Document Reference |
A document_id, and you want that file's markdown | Document Contents |
| A name or ticker and you do not have a company id yet | Entity 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.