Highlights
- Ship the new
exa CLI with multi-account config management plus JSON-friendly output defaults.
- Cover the entire Exa API surface (search, research, websets/items/enrichments/monitors, imports, events, webhooks) from the CLI with shared streaming + payload helpers.
- Harden the HTTP transport to avoid duplicate requests and handle
costDollars hashes, so live CLI/API calls succeed reliably.
API snippet
client = Exa::Client.new(api_key: ENV.fetch("EXA_API_KEY"))
resp = client.search.search(query: "latest reasoning LLM papers", num_results: 5)
resp.results.each { |r| puts "#{r.title} - #{r.url}" }
CLI snippet
exa accounts:add prod --api-key $EXA_API_KEY --base-url https://api.exa.ai
exa search:run "latest reasoning LLM papers" --num-results 5 --json