Skillshub exa-install-auth

install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/exa-install-auth" ~/.claude/skills/comeonoliver-skillshub-exa-install-auth && rm -rf "$T"
manifest: skills/jeremylongshore/claude-code-plugins-plus-skills/exa-install-auth/SKILL.md
source content

Exa Install & Auth

Overview

Install the official Exa SDK and configure API key authentication. Exa is a neural search API at

api.exa.ai
that retrieves web content using semantic similarity. Authentication uses the
x-api-key
header. The SDK is
exa-js
on npm or
exa-py
on PyPI.

Prerequisites

  • Node.js 18+ or Python 3.10+
  • Package manager (npm, pnpm, yarn, or pip)
  • Exa account at dashboard.exa.ai
  • API key from the Exa dashboard

Instructions

Step 1: Install the SDK

Node.js (exa-js)

set -euo pipefail
npm install exa-js
# or
pnpm add exa-js

Python (exa-py)

pip install exa-py

Step 2: Configure the API Key

# Set environment variable
export EXA_API_KEY="your-api-key-here"

# Or create .env file (add .env to .gitignore first)
echo 'EXA_API_KEY=your-api-key-here' >> .env

Add to

.gitignore
:

.env
.env.local
.env.*.local

Step 3: Initialize the Client

TypeScript

import Exa from "exa-js";

const exa = new Exa(process.env.EXA_API_KEY);

Python

from exa_py import Exa
import os

exa = Exa(api_key=os.environ["EXA_API_KEY"])

Step 4: Verify Connection

import Exa from "exa-js";

const exa = new Exa(process.env.EXA_API_KEY);

async function verifyConnection() {
  try {
    const result = await exa.search("test connectivity", { numResults: 1 });
    console.log("Connected. Results:", result.results.length);
    console.log("First result:", result.results[0]?.title);
  } catch (err: any) {
    if (err.status === 401) {
      console.error("Invalid API key. Check EXA_API_KEY.");
    } else if (err.status === 402) {
      console.error("No credits remaining. Top up at dashboard.exa.ai.");
    } else {
      console.error("Connection failed:", err.message);
    }
  }
}

verifyConnection();

Output

  • exa-js
    or
    exa-py
    installed in project dependencies
  • EXA_API_KEY
    environment variable configured
  • .env
    added to
    .gitignore
  • Successful search result confirming connectivity

Error Handling

ErrorHTTP CodeCauseSolution
INVALID_API_KEY
401Missing or invalid API keyVerify key at dashboard.exa.ai
NO_MORE_CREDITS
402Account balance exhaustedTop up credits in dashboard
MODULE_NOT_FOUND
N/ASDK not installedRun
npm install exa-js
ENOTFOUND
N/ANetwork unreachableCheck internet connectivity
API_KEY_BUDGET_EXCEEDED
402Spending limit reachedIncrease budget in dashboard

Examples

With dotenv (Node.js)

import "dotenv/config";
import Exa from "exa-js";

const exa = new Exa(process.env.EXA_API_KEY);

With Validation

function createExaClient(): Exa {
  const apiKey = process.env.EXA_API_KEY;
  if (!apiKey) {
    throw new Error(
      "EXA_API_KEY not set. Get one at https://dashboard.exa.ai"
    );
  }
  return new Exa(apiKey);
}

Resources

Next Steps

After successful auth, proceed to

exa-hello-world
for your first search.