Exa

Features 🔥
- Fully generated C# SDK based on official Exa OpenAPI specification using AutoSDK
- 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.
- Support .Net Framework/.Net Standard 2.0
Usage
| using Exa;
using var client = new ExaClient(apiKey);
|
Search
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
17
18
19
20
21 | using var client = new ExaClient(apiKey);
// Search the web for relevant results using a natural language query.
var response = await client.SearchAsync(new AllOf<SearchRequest2, CommonRequest>
{
Value1 = new SearchRequest2
{
Query = "Latest developments in LLM capabilities",
},
Value2 = new CommonRequest
{
NumResults = 5,
},
});
Console.WriteLine($"Found {response.Results!.Count} results");
foreach (var result in response.Results)
{
Console.WriteLine($" - {result.Value1?.Title}: {result.Value1?.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
17
18
19
20
21
22 | using var client = new ExaClient(apiKey);
// Retrieve the text content of specific web pages by URL.
var response = await client.GetContentsAsync(new AllOf<GetContentsRequest2, ContentsRequest>
{
Value1 = new GetContentsRequest2
{
Urls = ["https://exa.ai"],
},
Value2 = new ContentsRequest
{
Text = true,
},
});
Console.WriteLine($"Retrieved contents for {response.Results!.Count} URL(s)");
foreach (var result in response.Results)
{
var text = result.Value2?.Text;
Console.WriteLine($" - {result.Value1?.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
19
20
21
22 | 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.
var response = await client.FindSimilarAsync(new AllOf<FindSimilarRequest2, CommonRequest>
{
Value1 = new FindSimilarRequest2
{
Url = "https://arxiv.org/abs/2307.06435",
},
Value2 = new CommonRequest
{
NumResults = 3,
},
});
Console.WriteLine($"Found {response.Results!.Count} similar pages");
foreach (var result in response.Results)
{
Console.WriteLine($" - {result.Value1?.Title} (score: {result.Value1?.Score:F4})");
}
|
Shows how to use Exa as an AIFunction tool with any IChatClient.
| 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);
|
Shows how to use Exa's answer endpoint as an AIFunction tool with any IChatClient.
| 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

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