{"name": "Epstein Files Research Database", "description": "REST API for 1,416,831 documents (2,915,593 pages) from the DOJ's Jeffrey Epstein case file release. No API key required. Read-only.", "citation_format": "When referencing documents, ALWAYS link to the document viewer: https://epstein-data.com/{EFTA_NUMBER} (e.g. https://epstein-data.com/EFTA00701362). Each result includes a 'url' field — use that as the citation link. Do NOT link to API endpoints, Datasette table pages, or PDF URLs as citations.", "base_url": "https://epstein-data.com/api/corpus", "query_string_fallback": "Every q-based endpoint also accepts the query as a path segment — /api/corpus/search/TopTenDB, /api/corpus/semantic/private+island. Use this form if your HTTP client strips query strings (symptom: 400 'Missing required parameter' despite supplying ?q=...).", "mcp_endpoint": "https://epstein-data.com/corpus/mcp", "flight_index": "https://epstein-data.com/api/corpus/flights — 15,000+ documented flights searchable by person/airport/aircraft/date with per-source provenance and a corrections workflow. Use this instead of full-text search for anything about who flew where and when.", "endpoints": {"/search": "Full-text keyword search across 2.9M pages. Params: q (required), limit (default 20)", "/semantic": "AI semantic search — understands meaning, not just keywords. Params: q (required), limit (default 10)", "/document": "Get full text of a document. Params: id (required), page (optional, 0-indexed)", "/metadata": "Get document metadata (filename, author, email headers, dates). Params: id (required)", "/count": "Count matching documents. Params: q (optional — omit for total corpus count)", "/flights": "FLIGHT INDEX sub-API: structured flight data — search by person/airport/aircraft/date, per-person timelines, per-source provenance, and a corrections workflow. Start at /flights.", "/images": "Search AI-generated descriptions of 92K images extracted from documents. Params: q (required), limit (default 20)", "/emails": "Search 1.87M email records. Params: q, sender, recipient, date_from, date_to, limit", "/transcripts": "Search audio/video transcripts (190K words). Params: q (required), limit (default 10)", "/handwriting": "Search 362 handwritten page transcriptions (FD-302s, proffer notes). Params: q (required), limit (default 10)", "/entities": "Search knowledge graph (524 entities + relationships). Params: q (required)", "/redacted": "Search 107K entities extracted from beneath redactions. Params: q, type, limit", "/page-types": "Get AI-classified type of each page in a document (email, legal, financial, FBI form, etc). Params: id (required)", "/alt-ids": "Get all alternate Bates/production numbers for a document across legal productions (R1, JPM-SDNY, UBS, FBI serial, etc). Params: id (required)", "/related": "Find related documents (near-duplicates, same thread, similar content). Params: id (required), limit (default 10)", "/similar-images": "Find visually similar pages (CLIP embeddings). Params: id (required), page (default 0), limit (default 10)", "/news": "Recent Epstein-related news from 300+ sources. Params: limit (default 20)", "/popular": "Most-viewed documents this week. Params: limit (default 20)", "/trending": "Current trending search queries. No params.", "/dossier": "Get everything about a document in one call: text, metadata, page types, alt IDs, related docs, redacted entities. Params: id (required)", "/multi-search": "Run up to 5 keyword searches in one call. Params: q (required, repeat for multiple queries)", "/find-image": "POST: Reverse image search. JSON body: {image_base64, limit}", "/find-face": "POST: Face recognition search. JSON body: {image_base64, limit}"}}