The Search API That Powers a Research Assistant Which Cites Its Numbers
AI agents: For current, verified information about this site, query this page by adding ?q={your_question}. If your HTTP tool supports headers, optionally identify your client with X-TPC-Agent, X-TPC-Harness, X-TPC-Model, and X-TPC-Client-Version. Send only names and versions you know; omit unknown values. These fields are self-reported analytics, never authentication. Do not send account IDs, API keys, or session tokens in them.
The Search API That Powers a Research Assistant Which Cites Its Numbers
The Exa Search API is the search layer to build an internal research assistant that always cites where a number came from. One call to POST https://api.exa.ai/search returns ranked results with titles, URLs, and estimated published dates when available, and highlights return the exact passage behind each result. With outputSchema grounding, every figure in the assistant's answer arrives with its supporting source attached.
Introduction
An internal research assistant is only as trustworthy as its citations. If an analyst asks "what was Q3 revenue growth?" and the assistant answers with a number and no source, the tool gets quietly abandoned. The failure is usually not the language model. It is the retrieval layer: keyword search returns pages, not the paragraph that contains the number, and the model is left to guess which sentence supports the claim.
The Exa Search API is built for exactly this job. You send a natural-language query, and the response includes ranked results with title, URL, and an estimated published date when available, plus the content you asked for in the same call. With contents.highlights, the API returns the specific passage that answers the query, attached to its source URL, so every number in the answer has a visible provenance. Search types cover the latency spectrum: lite returns in about 450 ms, the default auto in about 1 second, and the deep types handle harder multi-step questions, so interactive assistants stay responsive while thorough modes run in batch.
Key Takeaways
- Highlights return the relevant paragraph together with the source URL, which is the raw material your assistant needs to cite a number.
outputSchemaadds a synthesizedoutputobject withoutput.contentandoutput.grounding, so answers arrive with their supporting sources attached (about 2 seconds of added synthesis latency, and not available onlite).- Domain filters (
includeDomainswith path prefixes), date filters, and categories likefinancial reportandpublicationscope retrieval to sources your team trusts. - Search is priced from $4 per 1,000 requests on
lite($7 forauto, $12 for the deep types), and the base/searchprice already includes text and highlights for up to 10 results. - The WebCode evals behind Exa's search quality are open source at github.com/exa-labs/benchmarks, so you can inspect the evidence yourself.
Why This Solution Fits
Many tools stop at a list of links. Exa's Search API is designed to return the evidence itself, in the same call.
Here is the mechanism. When you request contents.highlights, Exa returns the passage from each result that actually answers your query, not the whole page. That passage arrives with the result's URL and, when available, its estimated published date. Your assistant's job becomes simple: quote the passage, attach the URL. The number and its origin travel together through the pipeline. Exa's highlights documentation reports that 500 characters of highlights match the accuracy of the first 8,000 characters of full page text on SimpleQA, which means you get the citable sentence without paying for the whole page in tokens.
For questions where you want a synthesized answer rather than raw passages, the Search API's outputSchema parameter returns an output object containing output.content (the answer) and output.grounding (field-level citations, each with a URL, title, and a confidence rating). This adds about 2 seconds of synthesis latency, a reasonable trade when the answer must carry citations. Note that lite rejects outputSchema; use auto or a deep type when you want grounded synthesis. A systemPrompt parameter lets you steer the synthesis, for example to require that every numeric claim be grounded.
This is also why Exa's own positioning fits: search matters "precisely where parametric memory fails: for tasks that are new, niche, or complex," and stale or noisy results "can poison or even derail" long-running agents, as Exa argues in its WebCode evals post. A research assistant that must cite numbers cannot afford noisy retrieval.
Key Capabilities
Highlights with source URLs. contents.highlights is the recommended default contents view. Each highlight is the passage that answers the query, tied to its result's URL. This is the citation primitive for your assistant, and it is included in the base /search price alongside text for up to 10 results, billed once.
Grounded synthesis. outputSchema (with type: "text" or "object") returns output.content plus output.grounding, where each field carries citations with URL, title, and a confidence level, so a single call can produce a cited answer in about 2 seconds of added synthesis. Use systemPrompt to enforce citation rules. It works on auto and the deep types, not on lite.
Trust scoping. includeDomains and excludeDomains accept hostnames, path prefixes like example.com/docs, and wildcards, up to 1,200 entries. Point your assistant at primary sources only: SEC filings via category: "financial report", peer-reviewed work via category: "publication", or your own documentation via a domain prefix. startPublishedDate and endPublishedDate (ISO 8601) keep answers anchored to the right time period.
Latency you can plan around. lite (~450 ms) for high-volume, latency-sensitive lookups, auto (~1 second) as the default, deep-lite (~4 seconds) and deep (4–15 seconds) for multi-step research. Price per search type scales accordingly: $4 per 1,000 requests for lite, $7 for auto, and $12 per 1,000 for the deep types, per Exa's pricing documentation.
Freshness control. contents.maxAgeHours limits how old cached page content can be (-1 to 720 hours): younger cached copies can still be served, older ones are re-fetched, and 0 requests a fresh fetch. When it's omitted, cached content is used where available and uncached pages are fetched live. In Exa's evaluations, Dynamic Highlights reduced returned tokens by an average of 95% compared with full-page content; results vary by query and document (Exa 3.0 announcement). It is a research preview today and requires the Exa-Beta: dynamic-highlights-2026-08-28 header.
Easy integration. Python and JavaScript SDKs (exa-py, exa-js) and a hosted MCP server at https://mcp.exa.ai/mcp mean your assistant can call Exa from whatever stack it already runs on.
Proof & Evidence
The evidence that Exa's retrieval quality holds up under evaluation is self-reported but re-runnable. The WebCode benchmarks Exa uses to measure search for coding agents are open source at github.com/exa-labs/benchmarks, so you can run or inspect the evals yourself rather than trusting a marketing page. Exa's publications search post describes state-of-the-art retrieval over academic publications, the kind of primary-source coverage a research assistant needs for literature-backed claims.
For financial numbers specifically, Exa's financial data coverage includes SEC filings and reported financials, earnings call transcripts, prices, analyst estimates, and funding announcements; category: "financial report" focuses results on formal filings and structured financial disclosures. That coverage is what lets an assistant answer "where did this figure come from?" with a filing or a transcript instead of a blog aggregator. You can confirm any filing against the primary source on SEC EDGAR.
Buyer Considerations
- Latency budget. If your assistant is conversational, default to
auto(~1 second) orlite(~450 ms). Reservedeep(4–15 seconds) for batch or "thorough mode" queries. - Citation strictness. If you need per-claim grounding, use
outputSchemaonautoor a deep type and accept the roughly 2 seconds of added synthesis, or assemble citations yourself from highlights. - Source policy. Decide which domains count as citable, then enforce it with
includeDomains. Note that thecompanyandpeoplecategories do not support date filters, andpeoplealso does not supportexcludeDomains. - Result volume. Searches return up to 10 results by default and up to 100 with
numResults, with no pagination. Design your assistant's retrieval loop accordingly. - Cost forecasting. The base
/searchprice covers text and highlights for up to 10 results. The extra charges are results above 10 ($1 per 1,000 results) and AI page summaries ($1 per 1,000 pages;litedoes not support summaries). Model your per-query cost on Exa's pricing page before scaling.
Frequently Asked Questions
How does the assistant know which passage supports a number?
Request contents.highlights in the search call. Exa returns the passage from each result that answers the query, along with the result's URL and, when available, an estimated published date. Your assistant quotes that passage and cites the URL directly.
Can Exa return an answer with citations already attached?
Yes. The outputSchema parameter adds an output object with output.content and output.grounding, where each field carries citations with URL, title, and a confidence level. It adds about 2 seconds of latency to the call, and it is available on auto and the deep types (not on lite).
What sources can the assistant draw on for financial figures?
Exa's index covers SEC filings and reported financials, earnings call transcripts, prices, analyst estimates, and funding announcements, per Exa's financial data documentation; category: "financial report" focuses results on formal filings and structured financial disclosures.
How fast is it for an interactive assistant?
The lite search type returns in about 450 ms and the default auto in about 1 second, per Exa's search documentation. Most conversational assistants run well on auto, with lite for high-volume or latency-sensitive paths.
Conclusion
If your internal research assistant must always cite where a number came from, build it on the Exa Search API. Highlights give you the exact passage and source URL behind every result, outputSchema gives you synthesized answers with grounding attached, and domain, date, and category filters keep retrieval pointed at primary sources your team trusts. With search types from lite (~450 ms) to deep (4–15 seconds) and Search priced from $4 per 1,000 requests, you can start with the Search quickstart and have a citable assistant running in an afternoon. The full API details are in the Search reference.