# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"urls": [
"https://en.wikipedia.org/wiki/Artificial_intelligence"
]
}'curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"https://en.wikipedia.org/wiki/Artificial_intelligence"
]
}
'import requests
url = "https://api.aisa.one/apis/v1/tavily/extract"
payload = { "urls": ["https://en.wikipedia.org/wiki/Artificial_intelligence"] }
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({urls: ['https://en.wikipedia.org/wiki/Artificial_intelligence']})
};
fetch('https://api.aisa.one/apis/v1/tavily/extract', 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/extract",
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([
'urls' => [
'https://en.wikipedia.org/wiki/Artificial_intelligence'
]
]),
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/extract"
payload := strings.NewReader("{\n \"urls\": [\n \"https://en.wikipedia.org/wiki/Artificial_intelligence\"\n ]\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/extract")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"https://en.wikipedia.org/wiki/Artificial_intelligence\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tavily/extract")
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 \"urls\": [\n \"https://en.wikipedia.org/wiki/Artificial_intelligence\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"failed_results": [
"<string>"
],
"request_id": "<string>",
"response_time": 123,
"results": [
{
"favicon": "<string>",
"images": [
"<string>"
],
"raw_content": "<string>",
"title": "<string>",
"url": "<string>"
}
],
"usage": {
"credits": 123
}
}Extract Data
Fetch clean, parsed content for URLs you already have — from a search result, a sitemap, or a user.
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"urls": [
"https://en.wikipedia.org/wiki/Artificial_intelligence"
]
}'curl --request POST \
--url https://api.aisa.one/apis/v1/tavily/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"https://en.wikipedia.org/wiki/Artificial_intelligence"
]
}
'import requests
url = "https://api.aisa.one/apis/v1/tavily/extract"
payload = { "urls": ["https://en.wikipedia.org/wiki/Artificial_intelligence"] }
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({urls: ['https://en.wikipedia.org/wiki/Artificial_intelligence']})
};
fetch('https://api.aisa.one/apis/v1/tavily/extract', 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/extract",
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([
'urls' => [
'https://en.wikipedia.org/wiki/Artificial_intelligence'
]
]),
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/extract"
payload := strings.NewReader("{\n \"urls\": [\n \"https://en.wikipedia.org/wiki/Artificial_intelligence\"\n ]\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/extract")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"https://en.wikipedia.org/wiki/Artificial_intelligence\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tavily/extract")
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 \"urls\": [\n \"https://en.wikipedia.org/wiki/Artificial_intelligence\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"failed_results": [
"<string>"
],
"request_id": "<string>",
"response_time": 123,
"results": [
{
"favicon": "<string>",
"images": [
"<string>"
],
"raw_content": "<string>",
"title": "<string>",
"url": "<string>"
}
],
"usage": {
"credits": 123
}
}urls is required and takes several at once. Returns results[] with url, title, raw_content and images, plus a failed_results[] array — read that one, because a page that could not be fetched is reported there rather than raising an error. Choose format (markdown or text) and extract_depth. Measured at about 1 second for one page. Use this instead of post_tavily_search whenever you can already name the pages; searching for pages you can name costs more and may not return them. For a long list that can wait, post_firecrawl_batch_scrape runs it as a background job. To discover the URLs of a whole site first, use post_tavily_map.
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/extract
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/tavily/extract
- Runtime facts: ea2301436db90d0b30e55885326cd5057bea93ff7d26d9bced8e1ae7f1911ef4
{
"operationId": "post_tavily_extract",
"method": "POST",
"path": "/apis/v1/tavily/extract",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"chunks_per_source": {
"default": 3,
"description": "Maximum number of relevant chunks returned per source. Available only when query is provided.",
"maximum": 5,
"minimum": 1,
"type": "integer"
},
"extract_depth": {
"default": "basic",
"description": "Depth of the extraction process.",
"enum": [
"basic",
"advanced"
],
"type": "string"
},
"format": {
"default": "markdown",
"description": "Format of the extracted web page content.",
"enum": [
"markdown",
"text"
],
"type": "string"
},
"include_favicon": {
"default": false,
"description": "Include the favicon URL for each result.",
"type": "boolean"
},
"include_images": {
"default": false,
"description": "Include a list of images extracted from the URLs.",
"type": "boolean"
},
"include_usage": {
"default": false,
"description": "Include credit usage information in the response.",
"type": "boolean"
},
"query": {
"description": "User intent for reranking extracted content chunks.",
"type": "string"
},
"timeout": {
"description": "Maximum time in seconds to wait for URL extraction. If omitted, default timeouts depend on extract_depth: 10 seconds for basic and 30 seconds for advanced.",
"format": "float",
"maximum": 60,
"minimum": 1,
"type": "number"
},
"urls": {
"description": "The URL or URLs to extract content from. A single URL string and an array of URL strings are both accepted.",
"example": [
"https://en.wikipedia.org/wiki/Artificial_intelligence"
],
"oneOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
]
}
},
"required": [
"urls"
],
"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.024,
"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.024 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.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 URL or URLs to extract content from. A single URL string and an array of URL strings are both accepted.
[
"https://en.wikipedia.org/wiki/Artificial_intelligence"
]
Maximum number of relevant chunks returned per source. Available only when query is provided.
1 <= x <= 5Depth of the extraction process.
basic, advanced Format of the extracted web page content.
markdown, text Include the favicon URL for each result.
Include a list of images extracted from the URLs.
Include credit usage information in the response.
User intent for reranking extracted content chunks.
Maximum time in seconds to wait for URL extraction. If omitted, default timeouts depend on extract_depth: 10 seconds for basic and 30 seconds for advanced.
1 <= x <= 60Response
Extraction results returned successfully.