|
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
|
``` |