Documents
Browse the corpus directly. List the documents available for a ticker, fetch a single document's metadata, or read its full text as ordered segments — useful for building a source viewer alongside Retrieve.
These read-only endpoints expose the same corpus that Retrieve searches. A typical flow: retrieve cited chunks, take the source.documentId from a chunk, then call these endpoints to show the surrounding document or highlight a span. All three require the same API key as every other request.
List documents by ticker#
/v1/documents/by-ticker/:tickerReturns the documents on file for a ticker, most recent first (reverse-recency). Use the query parameters to narrow by period and to page through results.
tickerstringrequiredNVDA.yearnumberoptionalquarter"Q1" | "Q2" | "Q3" | "Q4"optionallimitnumberoptionaloffsetnumberoptionalcurl "https://api.focusalpha.ai/v1/documents/by-ticker/NVDA?year=2025&limit=5" \
-H "Authorization: Bearer fa_live_your_key_here"{
"documents": [
{
"id": "doc_8f2a1c",
"documentTitle": "NVIDIA Q1 2025 Earnings Call",
"documentType": "earnings_call",
"ticker": "NVDA",
"year": 2025,
"quarter": "Q1",
"filingType": null,
"sourceUrl": null,
"status": "indexed"
}
],
"meta": { "total": 18, "limit": 5, "offset": 0, "latencyMs": 24 }
}Get a document#
/v1/documents/:idFetch a single document’s metadata by id. Returns 404 if no document with that id exists in the corpus.
curl "https://api.focusalpha.ai/v1/documents/doc_8f2a1c" \
-H "Authorization: Bearer fa_live_your_key_here"{
"document": {
"id": "doc_8f2a1c",
"documentTitle": "NVIDIA Q1 2025 Earnings Call",
"documentType": "earnings_call",
"ticker": "NVDA",
"year": 2025,
"quarter": "Q1",
"filingType": null,
"sourceUrl": null,
"status": "indexed"
},
"meta": { "latencyMs": 11 }
}document#
idstringrequireddocumentTitlestringrequireddocumentTypestringrequiredtickerstring | nulloptionalyearnumber | nulloptionalquarterstring | nulloptionalfilingTypestring | nulloptionalsourceUrlstring | nulloptionalstatusstringoptionalRead a document’s segments#
/v1/documents/:id/segmentsReturns the document’s full text as ordered segments — speaker turns for the transcript — with character offsets. This is the read-the-whole-document counterpart to the per-chunk source.segments on Retrieve.
limitnumberoptionalcurl "https://api.focusalpha.ai/v1/documents/doc_8f2a1c/segments?limit=200" \
-H "Authorization: Bearer fa_live_your_key_here"{
"segments": [
{
"id": "seg_0",
"documentId": "doc_8f2a1c",
"content": "Thanks, and good afternoon, everyone.",
"sequence": 0,
"speakerName": "Colette Kress",
"speakerTitle": "EVP and CFO",
"charStart": 0,
"charEnd": 37
}
],
"meta": { "total": 142, "latencyMs": 31 }
}segment#
idstringrequireddocumentIdstringrequiredcontentstringrequiredsequencenumberrequiredspeakerNamestring | nulloptionalspeakerTitlestring | nulloptionalcharStartnumberrequiredcharEndnumberrequiredcharStart and charEnd are computed at read time by concatenating the segments in sequence order, joined with a \n\n separator. They are positions into that reconstructed text — not stored columns — so use the same join when you reassemble the document, and treat charEnd as exclusive.Errors#
These endpoints use the standard envelope ({ success: false, error: {...} }). Beyond the usual 401 and 429, a request for a missing document id returns 404. See Errors.