curl --request POST \
--url https://api.aisa.one/apis/v1/parallel/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
]
}
'import requests
url = "https://api.aisa.one/apis/v1/parallel/extract"
payload = { "urls": ["<string>"] }
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: ['<string>']})
};
fetch('https://api.aisa.one/apis/v1/parallel/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/parallel/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' => [
'<string>'
]
]),
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/parallel/extract"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\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/parallel/extract")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/parallel/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 \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"errors": [
{
"content": "Error fetching content from https://www.example.com",
"error_type": "fetch_error",
"http_status_code": 500,
"url": "https://www.example.com"
}
],
"extract_id": "extract_8a911eb27c7a4afaa20d0d9dc98d07c0",
"results": [
{
"excerpts": [
"Excerpted text ..."
],
"full_content": "Full content ...",
"title": "Example Title",
"url": "https://www.example.com"
}
],
"session_id": "session_8a911eb27c7a4afaa20d0d9dc98d07c0"
}extract
curl --request POST \
--url https://api.aisa.one/apis/v1/parallel/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
]
}
'import requests
url = "https://api.aisa.one/apis/v1/parallel/extract"
payload = { "urls": ["<string>"] }
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: ['<string>']})
};
fetch('https://api.aisa.one/apis/v1/parallel/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/parallel/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' => [
'<string>'
]
]),
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/parallel/extract"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\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/parallel/extract")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/parallel/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 \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"errors": [
{
"content": "Error fetching content from https://www.example.com",
"error_type": "fetch_error",
"http_status_code": 500,
"url": "https://www.example.com"
}
],
"extract_id": "extract_8a911eb27c7a4afaa20d0d9dc98d07c0",
"results": [
{
"excerpts": [
"Excerpted text ..."
],
"full_content": "Full content ...",
"title": "Example Title",
"url": "https://www.example.com"
}
],
"session_id": "session_8a911eb27c7a4afaa20d0d9dc98d07c0"
}Request contract
- Method and path: POST /apis/v1/parallel/extract
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/parallel/extract
- Runtime facts: 5d413ff65ac53e696e28c5a12c4dbbb99e94b7667cbafba2e2c6b9da9156a731
{
"operationId": "any_parallel_ai_apis_v1_parallel_extract",
"method": "POST",
"path": "/apis/v1/parallel/extract",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"additionalProperties": false,
"description": "Extract request.",
"properties": {
"advanced_settings": {
"anyOf": [
{
"additionalProperties": false,
"description": "Advanced extract configuration.\n\nThese settings may impact result quality and latency unless used carefully.\nSee https://docs.parallel.ai/search/advanced-extract-settings for more info.",
"properties": {
"excerpt_settings": {
"anyOf": [
{
"additionalProperties": false,
"description": "Optional settings for returning relevant excerpts.",
"properties": {
"max_chars_per_result": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Optional upper bound on the total number of characters to include per url. Excerpts may contain fewer characters than this limit to maximize relevance and token efficiency.",
"title": "Max Chars Per Result"
}
},
"title": "V1ExcerptSettings",
"type": "object"
},
{
"type": "null"
}
],
"description": "Controls excerpt sizes. Provide excerpt settings for fine-grained control, or omit to use defaults."
},
"fetch_policy": {
"anyOf": [
{
"description": "Policy for live fetching web results.",
"properties": {
"disable_cache_fallback": {
"default": false,
"description": "If false, fallback to cached content older than max-age if live fetch fails or times out. If true, returns an error instead.",
"title": "Disable Cache Fallback",
"type": "boolean"
},
"max_age_seconds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Maximum age of cached content in seconds to trigger a live fetch. Minimum value 600 seconds (10 minutes).",
"examples": [
86400
],
"title": "Max Age Seconds"
},
"timeout_seconds": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"description": "Timeout in seconds for fetching live content if unavailable in cache.",
"examples": [
60.0
],
"title": "Timeout Seconds"
}
},
"title": "FetchPolicy",
"type": "object"
},
{
"type": "null"
}
],
"description": "Fetch policy: determines when to return cached content from the index (faster) vs fetching live content (fresher). Default is to use a dynamic policy based on the search objective and url. Note: enabling live fetch significantly increases extract latency because it requires fetching content from source websites."
},
"full_content": {
"anyOf": [
{
"description": "Optional settings for returning full content.",
"properties": {
"max_chars_per_result": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Optional limit on the number of characters to include in the full content for each url. Full content always starts at the beginning of the page and is truncated at the limit if necessary.",
"title": "Max Chars Per Result"
}
},
"title": "FullContentSettings",
"type": "object"
},
{
"type": "boolean"
}
],
"default": false,
"description": "Controls full content extraction. Set to true to enable with defaults, false to disable, or provide FullContentSettings for fine-grained control.",
"title": "Full Content"
}
},
"title": "AdvancedExtractSettings",
"type": "object"
},
{
"type": "null"
}
],
"description": "Advanced configuration for fetch policy, excerpt settings, and full content settings. May impact result quality and latency unless used carefully. When omitted, excerpts are enabled and full content is disabled by default."
},
"client_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The model generating this request and consuming the results. Enables optimizations and tailors default settings for the model's capabilities.",
"examples": [
"claude-opus-4-7",
"gpt-5.4",
"gemini-3.1-pro"
],
"title": "Client Model"
},
"max_chars_total": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Upper bound on total characters across excerpts from all extracted results.",
"title": "Max Chars Total"
},
"objective": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "As in SearchRequest, a natural-language description of the underlying question or goal driving the request. Used together with search_queries to focus excerpts on the most relevant content.",
"title": "Objective"
},
"search_queries": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Optional keyword search queries, as in SearchRequest. Used together with objective to focus excerpts on the most relevant content.",
"title": "Search Queries"
},
"session_id": {
"anyOf": [
{
"maxLength": 1000,
"type": "string"
},
{
"type": "null"
}
],
"description": "Session identifier to track calls across separate search and extract calls, to be used as part of a larger task. Specifying it may give better contextual results for subsequent API calls.",
"title": "Session Id"
},
"urls": {
"description": "URLs to extract content from. Up to 20 URLs.",
"items": {
"type": "string"
},
"title": "Urls",
"type": "array"
}
},
"required": [
"urls"
],
"title": "V1ExtractRequest",
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "response_count",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.02,
"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.02 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.02
- Cost contract: response_count
- 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
Extract request.
URLs to extract content from. Up to 20 URLs.
Advanced configuration for fetch policy, excerpt settings, and full content settings. May impact result quality and latency unless used carefully. When omitted, excerpts are enabled and full content is disabled by default.
Show child attributes
Show child attributes
The model generating this request and consuming the results. Enables optimizations and tailors default settings for the model's capabilities.
"claude-opus-4-7"
Upper bound on total characters across excerpts from all extracted results.
As in SearchRequest, a natural-language description of the underlying question or goal driving the request. Used together with search_queries to focus excerpts on the most relevant content.
Optional keyword search queries, as in SearchRequest. Used together with objective to focus excerpts on the most relevant content.
Session identifier to track calls across separate search and extract calls, to be used as part of a larger task. Specifying it may give better contextual results for subsequent API calls.
1000Response
Successful Response
Extract response.
Extract errors: requested URLs not in the results.
Show child attributes
Show child attributes
Extract request ID, e.g. extract_cad0a6d2dec046bd95ae900527d880e7
Successful extract results.
Show child attributes
Show child attributes
Session identifier. Echoed back from the request if provided, otherwise generated by the server. Should be passed to future search and extract calls made by the agent as part of the same larger task.
"session_8a911eb27c7a4afaa20d0d9dc98d07c0"
Usage metrics for the extract request.
Show child attributes
Show child attributes
Warnings for the extract request, if any.
Show child attributes
Show child attributes