Exa
POST /search/exa, forwarded to POST https://api.exa.ai/search.
Request
Section titled “Request”curl -X POST "https://api.withgrowl.com/v1/search/exa" \ -H "Authorization: Bearer elo_pub_..." \ -H "Content-Type: application/json" \ -d '{ "query": "travel to vietnam", "numResults": 5, "includeDomains": ["vietnam.travel"], "startPublishedDate": "2026-02-01T00:00:00Z", "contents": { "highlights": true } }'Common fields are below. The body goes to Exa as sent, so everything in Exa’s reference works; that reference is the complete, current schema.
| Field | Description |
|---|---|
query | The search query. |
numResults | Number of results. |
type | Search mode: auto, neural, keyword or fast. See the reference for the current list. |
includeDomains | Only these hostnames. |
excludeDomains | Never these hostnames. |
startPublishedDate | ISO 8601. Only pages published after it. |
userLocation | Country code, upper case, for example US. |
contents | What to return per result: { "highlights": true } for short excerpts, { "text": true } for the page text. |
Response
Section titled “Response”Results are under results. Each has title, url and publishedDate, plus
highlights (a list of excerpts) or text, depending on what contents asked for.
{ "results": [ { "title": "Visit Vietnam: The Official Tourism Website of Vietnam", "url": "https://vietnam.travel/", "publishedDate": "2026-02-18T00:00:00.000Z", "highlights": [ "Discover the highlights of Vietnam through the country's official tourism website." ] } ]}Through Elo
Section titled “Through Elo”- Exa takes its key in
x-api-key. Keep that header and put your Elo key in it, or useAuthorization: Bearer; Elo sets Exa’s key itself. - Page text is the expensive option: a single
textfield can run to thousands of characters, and Exa prices contents separately from search. Ask forhighlightsunless you need the full page.