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.

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. Every url, image, and favicon field in the Exa response is validated to be an http/https URL whose host resolves to a public IP address. Results whose primary url resolves to a private, loopback, link-local, reserved, multicast, or unspecified address are dropped entirely; invalid image and favicon fields are removed from the result without dropping the whole result. This guards downstream nodes against SSRF via attacker-influenced search content. Sanitization is skipped when the ROCKETRIDE_MOCK environment variable is set, which is useful for local testing.


Configuration

Lanes

Lane inLane outDescription
questionsanswersSearch results as answers (pretty-printed Exa JSON)
questionstextSearch results as plain text
questionsquestionsOriginal question passed through unchanged (when a downstream listener is connected)

Fields

FieldTypeDescription
profilestringDefault "default".
apikeystringDefault empty. Exa API key
typestringDefault "auto".
numResultsintegerDefault 5.
includeHighlightsbooleanDefault true.
highlightCharsintegerDefault 600.

The node ships a single default profile containing the search settings (type, numResults, includeHighlights, highlightChars). The apikey field sits outside the profile and is set once per connection config.


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.


Error handling

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

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