1 # Exa
2
3 Proxy requests to Exa via Replit-managed billing.
4
5 ## Callback
6
7 Use `externalApi__exa` in `code_execution`.
8
9 ## Allowed operations
10
11 - `POST` `/search` - Web search (auto, neural, fast, deep, deep-reasoning).
12 - `POST` `/contents` - Page contents retrieval (text, highlights, summary, subpages, livecrawl).
13 - `POST` `/findSimilar` - Find similar links by URL similarity (optional contents pulldown).
14 - `POST` `/answer` - Web-grounded answer (with optional SSE streaming).
15
16 Authorization is handled automatically by Replit. Do not pass an `Authorization` header.
17
18 ## Skill
19
20 ## Exa quickstart
21
22 Semantic web search through Exa passthrough billing. Send the
23 required fields as an object in `body` (it is serialized for
24 you — do not pre-stringify) — an empty body is rejected.
25
26 ```javascript
27 const result = await externalApi__exa({
28 path: '/search',
29 method: 'POST',
30 headers: {'Content-Type': 'application/json'},
31 body: {query: 'latest advances in AI agents', numResults: 5},
32 })
33
34 for (const item of result.body.results) {
35 console.log(item.title, item.url)
36 }
37 ```
38
39 Authorization is managed by passthrough billing. Do not set an
40 `Authorization` header manually.
41
42 Be conservative: each search is billed and adds latency. Start with
43 one focused query and a small `numResults`, then refine — don't fan
44 out many searches at once. Keep no more than ~5 searches in flight
45 in parallel.
46
47 ## Example
48
49 ```javascript
50 const result = await externalApi__exa({
51 path: '/search',
52 method: 'POST',
53 query: {},
54 })
55
56 console.log(result.status)
57 console.log(result.body)
58 ```