Exa
Web-grounded retrieval, then synthesis. Every request is charged — and asking for more (results, content types, a deeper search) charges more.
Use Exa for web-grounded retrieval, then synthesis.
Managed credits — every search, contents, answer and find-similar request is charged, and the request itself sets the price: 0.2 credits for a search of up to 10 results, 0.1 for an answer or a contents fetch, more when you ask for more. See Cost below.
type vs category
These are independent params:
typecontrols the search strategy:auto/fast/neural/deep.categoryfilters result type:company/people/news/financial report.
"type":"news" is a 422 error — for news results use "category":"news".
Cost
Exa charges for the request it accepts, not for the rows it returns — so a search that matches nothing is still a charged search, and the card price is the price of the base request:
| Tool | Base cost | What raises it |
|---|---|---|
exa_search | 0.2 / request (up to 10 results) | each result beyond the first 10 · a per-result summary · type deep / deep-reasoning |
find_similar | 0.2 / request | each result beyond the first 10 |
exa_answer | 0.1 / request | — |
exa_contents | 0.1 / request | each URL · each content type (text, highlights, summary) |
exa_agent | charged on completion | the run's own effort and work — see below |
exa_agent_get, exa_agent_runs | free | — |
- Keep
numResultstight and ask only for the content types you will actually read. - One call, not two: a
searchwithcontentscosts less than asearchfollowed by a separateexa_contentson the same URLs. - Agent runs are charged when they complete, for what the completed run came to. Starting one is free,
polling it is free however often you poll, and a run that ends
failedorcancelledis not charged. A fixedeffortcaps what a run can reach; the defaultautohas no cap, so bound the work with an expliciteffortandmaxItemson the output schema when the spend needs to be predictable. --dry-runany call to see its resolved base price before a bulk run.
Guidance
- Treat
exa_answeras the summarization layer, not the first retrieval step, when precision matters. Runexa_search/exa_contentsfirst and synthesize after inspecting citations. - Use focused queries and small
numResultsduring pilots; widen only if coverage is low. - For auditable outputs, inspect citations before synthesizing.
hyreflow tools execute exa exa_search \
--payload '{"query":"series b devtools companies united states","numResults":5,"type":"fast"}'hyreflow tools execute exa exa_contents \
--payload '{"urls":["https://example.com"],"text":true}'hyreflow tools execute exa exa_answer \
--payload '{"query":"Summarize the top GTM signals from these results","text":true}'In the JD → Shortlist play, exa.answer("direct competitors of {company}…") discovers competitor domains. Don't use find_similar on a homepage — it
returns directories, not competitors.