Skip to content

Exa

Nuget package dotnet License: MIT Discord

Features 🔥

  • Fully generated C# SDK based on the official Exa Public API v2 OpenAPI specification using AutoSDK
  • Full generated coverage for Exa Search, Contents, Answer, Agent, Research, Monitors, Websets, Webhooks, Events, Imports, and team endpoints published in the v2 spec
  • Same day update to support new features
  • Updated and supported automatically if there are no breaking changes
  • All modern .NET features - nullability, trimming, NativeAOT, etc.
  • Supports .NET 10

Usage

1
2
3
using Exa;

using var client = new ExaClient(apiKey);

CLI

1
2
dotnet tool install --global Exa.CLI --prerelease
exa api --help

Shows how to search the web using Exa's AI-powered search.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
using var client = new ExaClient(apiKey);

// Search the web for relevant results using a natural language query.
var response = await client.SearchAsync(new SearchRequest
{
    Query = "Latest developments in LLM capabilities",
    NumResults = 5,
});

var results = response.SearchResponseVariant2?.Results ?? response.SearchResponseVariant1?.Results;
Console.WriteLine($"Found {results!.Count} results");

foreach (var result in results)
{
    Console.WriteLine($"  - {result.Title}: {result.Url}");
}

Get Contents

Shows how to retrieve page contents for specific URLs using Exa.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
using var client = new ExaClient(apiKey);

// Retrieve the text content of specific web pages by URL.
var response = await client.GetContentsAsync(new ContentsRequest
{
    Urls = ["https://exa.ai"],
    Text = true,
});

Console.WriteLine($"Retrieved contents for {response.Results!.Count} URL(s)");

foreach (var result in response.Results)
{
    var text = result.Text;
    Console.WriteLine($"  - {result.Url}: {text?[..Math.Min(text.Length, 100)]}...");
}

Find Similar

Shows how to find pages similar to a given URL using Exa.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
using var client = new ExaClient(apiKey);

        // Find pages similar to a given URL. This is useful for discovering
        // related content, competitor analysis, or expanding a research corpus.
#pragma warning disable CS0618 // findSimilar is deprecated by Exa but kept for complete API coverage.
        var response = await client.FindSimilarAsync(new FindSimilarRequest
        {
            Url = "https://arxiv.org/abs/2307.06435",
            NumResults = 3,
        });
#pragma warning restore CS0618

        Console.WriteLine($"Found {response.Results!.Count} similar pages");

        foreach (var result in response.Results)
        {
            Console.WriteLine($"  - {result.Title}: {result.Url}");
        }

Search Tool

Shows how to use Exa as an AIFunction tool with any IChatClient.

1
2
3
4
using var client = new ExaClient(apiKey);

// Create a search tool from the Exa client for use with any IChatClient.
var tool = client.AsSearchTool(numResults: 3);

Answer Tool

Shows how to use Exa's answer endpoint as an AIFunction tool with any IChatClient.

1
2
3
4
using var client = new ExaClient(apiKey);

// Create an answer tool from the Exa client for RAG-style question answering.
var tool = client.AsAnswerTool();

Support

Priority place for bugs: https://github.com/tryAGI/Exa/issues
Priority place for ideas and general questions: https://github.com/tryAGI/Exa/discussions
Discord: https://discord.gg/Ca2xhfBf3v

Acknowledgments

JetBrains logo

This project is supported by JetBrains through the Open Source Support Program.