# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/crawl \
--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/crawl \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "docs.tavily.com"
}
'import requests
url = "https://api.aisa.one/apis/v1/tavily/crawl"
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/crawl', 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/crawl",
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/crawl"
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/crawl")
.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/crawl")
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>",
"results": [
{
"url": "<string>",
"raw_content": "<string>",
"favicon": "<string>"
}
],
"response_time": 123,
"usage": {
"credits": 123
},
"request_id": "<string>"
}Start Crawl Process
Walk a site from a root url and return the content of the pages it finds.
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/crawl \
--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/crawl \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "docs.tavily.com"
}
'import requests
url = "https://api.aisa.one/apis/v1/tavily/crawl"
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/crawl', 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/crawl",
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/crawl"
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/crawl")
.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/crawl")
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>",
"results": [
{
"url": "<string>",
"raw_content": "<string>",
"favicon": "<string>"
}
],
"response_time": 123,
"usage": {
"credits": 123
},
"request_id": "<string>"
}url and return the content of the pages it finds. Steer it with natural-language instructions plus regex path and domain filters, and bound it with max_depth, max_breadth and limit. Returns base_url and results[] with url and raw_content. Measured at about 4.5 seconds for a 3-page limit; cost and time grow with the bounds you set, so set them. Use it for broad coverage of one site — documentation, a catalogue, a competitor’s blog. It answers synchronously, which post_firecrawl_crawl does not: that one runs as a background job and suits crawls too large to wait on. For a handful of known pages post_tavily_extract is far cheaper; to size a site before paying to crawl it, run post_tavily_map first.
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 five tools: search,
list_categories and get_details are free, use and batch_use are
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.Cost and request rules
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.024
- 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 crawl.
"docs.tavily.com"
Natural language instructions for the crawler.
Maximum number of relevant chunks returned per source.
1 <= x <= 5Max depth of the crawl.
1 <= x <= 5Max number of links to follow per level of the tree.
1 <= x <= 500Total number of links the crawler will process before stopping.
x >= 1Regex patterns to select only URLs with specific path patterns.
Regex patterns to select crawling to specific domains or subdomains.
Regex patterns to exclude URLs with specific path patterns.
Regex patterns to exclude specific domains or subdomains from crawling.
Include external domain links in the final results list.
Include images in the crawl results.
Depth of the extraction process.
basic, advanced Format of the extracted web page content.
markdown, text Include the favicon URL for each result.
Maximum time in seconds to wait for the crawl operation.
10 <= x <= 150Include credit usage information in the response.