Skip to main content
View source

Exa Search

View as Markdown

A RocketRide search node that submits a user question to the Exa web search API and returns the raw results as pipeline output.

About Exa

Exa provides the search API called by this node. The node posts a query and the configured search options to Exa, then returns the response body as formatted JSON after applying its local URL-safety checks.

What it does

Takes a question from the questions lane, sends it as a single query to the Exa REST endpoint (https://api.exa.ai/search), and writes the pretty-printed Exa JSON response to the answers and text lanes.

Uses the requests library directly against the Exa REST API; no Exa SDK is required. Each HTTP request has a 30-second timeout. The node expects exactly one question per invocation: an empty question or a multi-question payload raises an error immediately.

Result URLs are sanitized before leaving the node, guarding downstream nodes against SSRF via attacker-influenced search content; see URL safety under Notes for what is checked and dropped.


Lanes

Lane inLane outDescription
questionsanswersSearch results as answers (pretty-printed Exa JSON)
questionstextSearch results as plain text

Configuration

The single default profile starts with automatic search, five results, and highlights enabled. Supply credentials, then tune the search options only when the result style or response size needs to change.

Search Type

Choose auto for the default request behavior. Select keyword or neural when the query should explicitly use that Exa search type. The selected value is passed as the API request's type; it does not change how RocketRide interprets the returned payload.

Results and highlights

numResults controls how many results the request asks for and accepts values from 1 through 20. Keep the default 5 for a compact response; increase it when later stages need a broader result set, bearing in mind that the entire raw response is sent to both output lanes.

When highlights are enabled, the node sends a contents.highlights request with the configured maximum character count. The default is 600 characters; the allowed range is 100 through 4,000. Turn highlights off when result metadata is sufficient, or reduce their size when downstream context is more valuable than excerpts.


Authentication

The API key is resolved in the following order:

  1. apikey in the node config
  2. apikey in the connection config
  3. The ROCKETRIDE_EXA_KEY environment variable

If none of these sources provides a non-empty value, the pipeline fails at startup with search_exa: apikey is required. The editor also surfaces a validation warning while you are configuring the node.


Notes

Request failures

Exa HTTP errors are mapped to descriptive failures:

  • 401: Exa authentication failed -- bad or missing API key
  • 429: Exa rate limit exceeded
  • Other 4xx/5xx: Exa request failed (<status>) with the upstream message body
  • Network timeout: search_exa: Exa request timed out
  • Connection failure: search_exa: Unable to reach Exa

URL safety

Before serializing results, the node validates every url, image, and favicon field. Each must use http or https and resolve to a public IP address. A result whose primary url resolves to a private, loopback, link-local, reserved, multicast, or unspecified address is dropped entirely; invalid image and favicon fields are removed while their result is retained. This sanitization is skipped when ROCKETRIDE_MOCK is set. That bypass is intended only for controlled tests and must never be enabled in production.

Upstream docs


Schema

FieldTypeDescriptionDefault
search_exa.apikeystringAPI Key
Exa API key
""
search_exa.highlightCharsintegerHighlight Chars600
search_exa.includeHighlightsbooleanInclude Highlightstrue
search_exa.numResultsintegerResults5
search_exa.profilestringProfile"default"
search_exa.typestringSearch Type"auto"

Dependencies

  • requests