# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/exa/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"query": "latest evaluation frameworks for AI agents"
}'curl --request POST \
--url https://api.aisa.one/apis/v1/exa/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "latest evaluation frameworks for AI agents"
}
'import requests
url = "https://api.aisa.one/apis/v1/exa/search"
payload = { "query": "latest evaluation frameworks for AI agents" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({query: 'latest evaluation frameworks for AI agents'})
};
fetch('https://api.aisa.one/apis/v1/exa/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/exa/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => 'latest evaluation frameworks for AI agents'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/exa/search"
payload := strings.NewReader("{\n \"query\": \"latest evaluation frameworks for AI agents\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/exa/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"latest evaluation frameworks for AI agents\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/exa/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"latest evaluation frameworks for AI agents\"\n}"
response = http.request(request)
puts response.read_body{
"costDollars": "<unknown>",
"output": "<unknown>",
"requestId": "<string>",
"results": [
{
"author": "<string>",
"id": "<string>",
"publishedDate": "<string>",
"title": "<string>",
"url": "<string>"
}
]
}Search
Search the web by meaning rather than by keyword.
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/exa/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"query": "latest evaluation frameworks for AI agents"
}'curl --request POST \
--url https://api.aisa.one/apis/v1/exa/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "latest evaluation frameworks for AI agents"
}
'import requests
url = "https://api.aisa.one/apis/v1/exa/search"
payload = { "query": "latest evaluation frameworks for AI agents" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({query: 'latest evaluation frameworks for AI agents'})
};
fetch('https://api.aisa.one/apis/v1/exa/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/exa/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'query' => 'latest evaluation frameworks for AI agents'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/exa/search"
payload := strings.NewReader("{\n \"query\": \"latest evaluation frameworks for AI agents\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/exa/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"latest evaluation frameworks for AI agents\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/exa/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"latest evaluation frameworks for AI agents\"\n}"
response = http.request(request)
puts response.read_body{
"costDollars": "<unknown>",
"output": "<unknown>",
"requestId": "<string>",
"results": [
{
"author": "<string>",
"id": "<string>",
"publishedDate": "<string>",
"title": "<string>",
"url": "<string>"
}
]
}query is required; narrow with category, includeDomains, excludeDomains, startPublishedDate, endPublishedDate, and set numResults. Returns requestId, resolvedSearchType, searchTime, costDollars and results[] with id, title and url. id is the URL, and it is what post_exa_contents takes. Latency depends on the request and provider. Request a fresh quote for the same query and options before execution; use the current public pricing for estimates. ⚠️ Results carry no page text unless you ask: pass contents, or follow up with post_exa_contents. Choose it over post_tavily_search when the query is a description rather than keywords; choose Tavily when you want the text in the same call, and post_exa_answer when you want a written answer rather than a list.
https://mcp.aisa.one/mcp — Claude
Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client
opens a browser, you click Allow once, and there is no key to paste. Your
agent then reaches every endpoint through a few meta tools: search,
list_categories, get_details and batch_quote are free, batch_use is
billed per call. Setup per client is in
Connect via MCP; the live tool list and what each call
costs are on aisa.one/mcp.Request contract
- Method and path: POST /apis/v1/exa/search
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/exa/search
- Runtime facts: d10529a4463a002dd39ad505e0bc30212230a00b2034082221e854d90728a9b8
{
"operationId": "post_exa_search",
"method": "POST",
"path": "/apis/v1/exa/search",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"category": {
"description": "Optional hint about the kind of pages to prioritize.",
"enum": [
"company",
"research paper",
"news",
"personal site",
"financial report",
"people"
],
"type": "string"
},
"contents": {
"description": "Content options to return alongside each result.",
"properties": {
"highlights": {
"description": "Return highlighted relevant snippets.",
"type": "boolean"
},
"summary": {
"description": "Return an AI-generated summary of the page.",
"type": "boolean"
},
"text": {
"description": "Return the full page text.",
"type": "boolean"
}
},
"type": "object"
},
"endPublishedDate": {
"description": "Only return results published on or before this ISO 8601 date.",
"format": "date-time",
"type": "string"
},
"excludeDomains": {
"description": "Exclude results from these domains.",
"items": {
"type": "string"
},
"type": "array"
},
"includeDomains": {
"description": "Only return results from these domains.",
"items": {
"type": "string"
},
"type": "array"
},
"numResults": {
"default": 10,
"description": "Number of results to return.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"outputSchema": {
"description": "JSON Schema used to synthesize a structured output from the results.",
"type": "object"
},
"query": {
"description": "The natural-language search query.",
"example": "latest evaluation frameworks for AI agents",
"type": "string"
},
"startPublishedDate": {
"description": "Only return results published on or after this ISO 8601 date.",
"format": "date-time",
"type": "string"
},
"stream": {
"default": false,
"enum": [
false
],
"type": "boolean"
},
"systemPrompt": {
"description": "Instruction that guides how the structured output is generated.",
"type": "string"
},
"type": {
"default": "auto",
"description": "Search mode. auto lets Exa choose; the deep modes trade latency for higher-quality retrieval.",
"enum": [
"auto",
"fast",
"instant",
"deep-lite",
"deep",
"deep-reasoning"
],
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "response_usd",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.017,
"estimate_source": "profile_seed",
"evidence_source": "response_body"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Usage-based billing; Default request estimate: $0.017 USD (not a fixed price). Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.017
- Cost contract: response_usd
- Published reference multiplier: 1.0
- Settlement evidence source: response_body
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The natural-language search query.
"latest evaluation frameworks for AI agents"
Optional hint about the kind of pages to prioritize.
company, research paper, news, personal site, financial report, people Content options to return alongside each result.
Show child attributes
Show child attributes
Only return results published on or before this ISO 8601 date.
Exclude results from these domains.
Only return results from these domains.
Number of results to return.
1 <= x <= 100JSON Schema used to synthesize a structured output from the results.
Only return results published on or after this ISO 8601 date.
false Instruction that guides how the structured output is generated.
Search mode. auto lets Exa choose; the deep modes trade latency for higher-quality retrieval.
auto, fast, instant, deep-lite, deep, deep-reasoning Response
Search completed successfully.
Upstream Exa cost breakdown. Informational only; it is not the AIsa customer charge. Use a fresh quote for the actual request.
Structured output, present only when outputSchema was supplied.
Exa request identifier.
Ranked search results.
Show child attributes
Show child attributes