A retrieval layer you don't have to maintain.
Three endpoints that cover the full path from question to grounded context. Use one, or chain all three.
Search API
The workhorse. A query goes in; ranked sources with cleaned, chunk-ready text come back. Tune breadth with `max_results`, recency with `time_range`, and cost with `depth`.
- Semantic reranking over the candidate set, not just keyword match
- Boilerplate, nav chrome, and cookie banners stripped before return
- Per-result relevance score so you can threshold before hitting the model
POST /v1/search
{
"query": "EU AI Act enforcement timeline",
"depth": "deep",
"time_range": "month",
"max_results": 10,
"include_domains": ["europa.eu"]
}Extract API
You already know the URL and just need the content. Handles client-rendered pages, PDFs, and long-form articles, returning structured fields instead of a wall of markup.
- Main-content detection that survives aggressive ad layouts
- Tables preserved as structured rows, not flattened text
- Batch up to 20 URLs per request
POST /v1/extract
{
"urls": [
"https://example.com/annual-report-2026",
"https://example.com/press/q3"
],
"include_tables": true
}Answer API
Retrieval and synthesis in one hop. Returns a grounded answer with an inline citation for every claim, plus the underlying sources so you can render them.
- Every sentence maps to a source index — no uncited assertions
- Refuses rather than guesses when sources disagree or are thin
- Streams token-by-token over SSE for chat interfaces
POST /v1/answer
{
"question": "Which suppliers raised Q3 guidance?",
"cite": true,
"max_sources": 6
}How a request flows
Four stages between your call and the response. Each one exists to cut tokens your model would otherwise pay for.
Fan out
The query hits multiple upstream indexes and our own crawl in parallel.
Fetch
Candidate pages are rendered and fetched concurrently, with a hard latency budget.
Clean
Chrome, ads, and navigation are removed; main content is segmented into passages.
Rank
Passages are scored against the original intent and the top set is returned.