GET
/filings/textRead SEC filing section text — chunks, full sections, or tables — straight from the source filing. The verify-to-source primitive behind the MCP get_filing_section tool.
Example Request
https://api.metricduck.com/api/v1/filings/text?ticker=AAPL§ion_id=risk_factors&row_type=section&limit=3Query Parameters
| Parameter | Type | Description |
|---|---|---|
ticker | string | Company ticker (e.g., AAPL). Provide ticker or cik. |
cik | string | 10-digit CIK (alternative to ticker). |
accession_number | string | Specific filing (e.g., 0000320193-26-000013). Omit for the latest filing. |
form_type | string | SEC form type (10-K, 10-Q, 8-K, …). |
section_id | string | Section filter, e.g. risk_factors, mda_full, footnote_revenue (IDs come from /filings/sections/summary). |
row_type | string | "chunk" (512–1024-token passages), "section" (full sections), or "table" (structured tables as JSON). |
keyword | string | Return only chunks containing this text (case-insensitive; 2–200 chars). |
vantage_date | string | As-of date (YYYY-MM-DD): resolve the latest filing filed on or before this date (point-in-time). |
from_date / to_date | string | Filing-date window (YYYY-MM-DD). Defaults to the last 2 years. |
limit | integer | Max results (1–1000). |
offset | integer | Pagination offset. |
Response
Returns matched filing-text rows plus the served-filing vintage. Each row carries its section id, source accession, and text.
Fields
| Field | Type | Description |
|---|---|---|
total_results | integer | Number of rows matched. |
results | array | Filing text rows (see fields below). |
results[].section_id | stringnullable | Canonical section id (e.g. risk_factors). |
results[].section_display_name | stringnullable | Human-readable section name. |
results[].content_text | stringnullable | Section/chunk text (with context prefix). Null for table rows. |
results[].accession_number | string | Source filing accession. |
results[].form_type | string | Form type of the source filing. |
results[].filing_date | string | Filing date (YYYY-MM-DD). |
served_filing | objectnullable | The filing actually served (accession, filing_date, form_type) — the vintage of what you received. |
keyword_matched | booleannullable | True when the keyword matched ≥1 row; False when the service fell back to the full section. |
Example Response
{
"total_results": 3,
"results": [
{
"chunk_id": "0000320193-26-000013:risk_factors:0",
"ticker": "AAPL",
"accession_number": "0000320193-26-000013",
"form_type": "10-Q",
"filing_date": "2026-05-01",
"fiscal_year": 2026,
"fiscal_period": "Q2",
"section_id": "risk_factors",
"section_display_name": "Risk Factors",
"content_text": "The Company's business, results of operations ..."
}
],
"served_filing": {
"accession_number": "0000320193-26-000013",
"filing_date": "2026-05-01",
"form_type": "10-Q"
},
"keyword_matched": null,
"execution_time_ms": 142.0
}Code Examples
cURL
curl "https://api.metricduck.com/api/v1/filings/text?ticker=AAPL§ion_id=risk_factors&row_type=section&limit=3" \
-H "Authorization: Bearer fda_your_api_key"Python
import requests
BASE_URL = "https://api.metricduck.com/api/v1"
# Read Apple's latest Risk Factors section
resp = requests.get(
f"{BASE_URL}/filings/text",
params={"ticker": "AAPL", "section_id": "risk_factors", "row_type": "section", "limit": 3},
headers={"Authorization": "Bearer fda_your_api_key"}, # optional — raises guest caps
)
data = resp.json()
for row in data["results"]:
print(row["section_display_name"], "→", row["content_text"][:120])Notes
- - Public — callable without a key (guest per-request caps); a free key raises the caps and the daily quota.
- -
row_type:chunk(retrieval-sized passages),section(full narrative),table(structured JSON). - - Always pass
ticker(or a narrow date range) to keep scan cost low. - - Use
vantage_datefor point-in-time reads (the filing as it stood on a past date). - - Discover valid
section_idvalues via/filings/sections/summary.