# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/map \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"url": "docs.tavily.com"
}'curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/map \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "docs.tavily.com"
}
'import requests
url = "https://api.aisa.one/apis/v1/tavily/map"
payload = { "url": "docs.tavily.com" }
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({url: 'docs.tavily.com'})
};
fetch('https://api.aisa.one/apis/v1/tavily/map', 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/tavily/map",
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([
'url' => 'docs.tavily.com'
]),
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/tavily/map"
payload := strings.NewReader("{\n \"url\": \"docs.tavily.com\"\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/tavily/map")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"docs.tavily.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tavily/map")
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 \"url\": \"docs.tavily.com\"\n}"
response = http.request(request)
puts response.read_body{
"base_url": "<string>",
"request_id": "<string>",
"response_time": 123,
"results": [
"<string>"
],
"usage": {
"credits": 123
}
}Get Map Data
List a site’s URLs from a root url without fetching any page content.
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/map \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"url": "docs.tavily.com"
}'curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/map \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "docs.tavily.com"
}
'import requests
url = "https://api.aisa.one/apis/v1/tavily/map"
payload = { "url": "docs.tavily.com" }
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({url: 'docs.tavily.com'})
};
fetch('https://api.aisa.one/apis/v1/tavily/map', 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/tavily/map",
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([
'url' => 'docs.tavily.com'
]),
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/tavily/map"
payload := strings.NewReader("{\n \"url\": \"docs.tavily.com\"\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/tavily/map")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"docs.tavily.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tavily/map")
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 \"url\": \"docs.tavily.com\"\n}"
response = http.request(request)
puts response.read_body{
"base_url": "<string>",
"request_id": "<string>",
"response_time": 123,
"results": [
"<string>"
],
"usage": {
"credits": 123
}
}url without fetching any page content. Steer it with natural-language instructions and regex select_paths / exclude_paths / select_domains filters. Returns base_url and results — a flat array of URL strings, not objects — with response_time and request_id. Fast and cheap: measured at about 1.5 seconds. Use it to size a site before committing to a crawl, then fetch only the parts that matter with post_tavily_extract. When you want the content rather than the shape, post_tavily_crawl does both in one call.
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/tavily/map
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/tavily/map
- Runtime facts: ea2301436db90d0b30e55885326cd5057bea93ff7d26d9bced8e1ae7f1911ef4
{
"operationId": "post_tavily_map",
"method": "POST",
"path": "/apis/v1/tavily/map",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"allow_external": {
"default": true,
"description": "Include external domain links in the final results list.",
"type": "boolean"
},
"exclude_domains": {
"description": "Regex patterns to exclude specific domains or subdomains from mapping.",
"items": {
"type": "string"
},
"type": "array"
},
"exclude_paths": {
"description": "Regex patterns to exclude URLs with specific path patterns.",
"items": {
"type": "string"
},
"type": "array"
},
"include_usage": {
"default": false,
"description": "Include credit usage information in the response.",
"type": "boolean"
},
"instructions": {
"description": "Natural language instructions for the crawler.",
"type": "string"
},
"limit": {
"default": 50,
"description": "Total number of links the crawler will process before stopping.",
"minimum": 1,
"type": "integer"
},
"max_breadth": {
"default": 20,
"description": "Max number of links to follow per level of the tree.",
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"max_depth": {
"default": 1,
"description": "Max depth of the mapping.",
"maximum": 5,
"minimum": 1,
"type": "integer"
},
"select_domains": {
"description": "Regex patterns to select crawling to specific domains or subdomains.",
"items": {
"type": "string"
},
"type": "array"
},
"select_paths": {
"description": "Regex patterns to select only URLs with specific path patterns.",
"items": {
"type": "string"
},
"type": "array"
},
"timeout": {
"default": 150,
"description": "Maximum time in seconds to wait for the map operation.",
"format": "float",
"maximum": 150,
"minimum": 10,
"type": "number"
},
"url": {
"description": "The root URL to begin the mapping.",
"example": "docs.tavily.com",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "response_units",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.064,
"estimate_source": "profile_seed",
"evidence_source": "response_body",
"unit": "tavily_credit",
"unit_rate_usd": 0.008
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Usage-based billing; Default request estimate: $0.064 USD (not a fixed price). Declared unit rate: $0.008 USD per tavily_credit. 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.064
- Declared unit rate (USD): 0.008
- Billing unit: tavily_credit
- Cost contract: response_units
- 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 root URL to begin the mapping.
"docs.tavily.com"
Include external domain links in the final results list.
Regex patterns to exclude specific domains or subdomains from mapping.
Regex patterns to exclude URLs with specific path patterns.
Include credit usage information in the response.
Natural language instructions for the crawler.
Total number of links the crawler will process before stopping.
x >= 1Max number of links to follow per level of the tree.
1 <= x <= 500Max depth of the mapping.
1 <= x <= 5Regex patterns to select crawling to specific domains or subdomains.
Regex patterns to select only URLs with specific path patterns.
Maximum time in seconds to wait for the map operation.
10 <= x <= 150