curl --request POST \
--url https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"url": "https://example.com",
"output_schema": {
"type": "object",
"required": [
"company_name"
],
"properties": {
"company_name": {
"type": "string",
"description": "The company's public name."
}
}
}
}
EOFimport requests
url = "https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data"
payload = {
"url": "https://example.com",
"output_schema": {
"type": "object",
"required": ["company_name"],
"properties": { "company_name": {
"type": "string",
"description": "The company's public name."
} }
}
}
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: 'https://example.com',
output_schema: {
type: 'object',
required: ['company_name'],
properties: {company_name: {type: 'string', description: 'The company\'s public name.'}}
}
})
};
fetch('https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data', 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/context-dev/extract-structured-web-data",
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' => 'https://example.com',
'output_schema' => [
'type' => 'object',
'required' => [
'company_name'
],
'properties' => [
'company_name' => [
'type' => 'string',
'description' => 'The company\'s public name.'
]
]
]
]),
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/context-dev/extract-structured-web-data"
payload := strings.NewReader("{\n \"url\": \"https://example.com\",\n \"output_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"company_name\"\n ],\n \"properties\": {\n \"company_name\": {\n \"type\": \"string\",\n \"description\": \"The company's public name.\"\n }\n }\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/context-dev/extract-structured-web-data")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://example.com\",\n \"output_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"company_name\"\n ],\n \"properties\": {\n \"company_name\": {\n \"type\": \"string\",\n \"description\": \"The company's public name.\"\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data")
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\": \"https://example.com\",\n \"output_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"company_name\"\n ],\n \"properties\": {\n \"company_name\": {\n \"type\": \"string\",\n \"description\": \"The company's public name.\"\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"url": "<string>",
"data": {},
"metadata": {
"numUrls": 1,
"numFailed": 1,
"numBlocked": 1,
"numSkipped": 1,
"numSucceeded": 1,
"maxCrawlDepth": 1
},
"key_metadata": {
"credits_consumed": 1,
"credits_remaining": 1
},
"urls_analyzed": [
"<string>"
]
}Extract Structured Web Data
curl --request POST \
--url https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"url": "https://example.com",
"output_schema": {
"type": "object",
"required": [
"company_name"
],
"properties": {
"company_name": {
"type": "string",
"description": "The company's public name."
}
}
}
}
EOFimport requests
url = "https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data"
payload = {
"url": "https://example.com",
"output_schema": {
"type": "object",
"required": ["company_name"],
"properties": { "company_name": {
"type": "string",
"description": "The company's public name."
} }
}
}
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: 'https://example.com',
output_schema: {
type: 'object',
required: ['company_name'],
properties: {company_name: {type: 'string', description: 'The company\'s public name.'}}
}
})
};
fetch('https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data', 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/context-dev/extract-structured-web-data",
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' => 'https://example.com',
'output_schema' => [
'type' => 'object',
'required' => [
'company_name'
],
'properties' => [
'company_name' => [
'type' => 'string',
'description' => 'The company\'s public name.'
]
]
]
]),
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/context-dev/extract-structured-web-data"
payload := strings.NewReader("{\n \"url\": \"https://example.com\",\n \"output_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"company_name\"\n ],\n \"properties\": {\n \"company_name\": {\n \"type\": \"string\",\n \"description\": \"The company's public name.\"\n }\n }\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/context-dev/extract-structured-web-data")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://example.com\",\n \"output_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"company_name\"\n ],\n \"properties\": {\n \"company_name\": {\n \"type\": \"string\",\n \"description\": \"The company's public name.\"\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data")
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\": \"https://example.com\",\n \"output_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"company_name\"\n ],\n \"properties\": {\n \"company_name\": {\n \"type\": \"string\",\n \"description\": \"The company's public name.\"\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"url": "<string>",
"data": {},
"metadata": {
"numUrls": 1,
"numFailed": 1,
"numBlocked": 1,
"numSkipped": 1,
"numSucceeded": 1,
"maxCrawlDepth": 1
},
"key_metadata": {
"credits_consumed": 1,
"credits_remaining": 1
},
"urls_analyzed": [
"<string>"
]
}请求规范
- 方法与路径: POST /apis/v1/context-dev/extract-structured-web-data
- 可用状态: enabled
- 请求 URL 模板:
https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data - Runtime 事实版本: 3068b7678674e2539daed47d533143c7d5bf21072a81e6aac34d7bd71ed57eb3
{
"operationId": "context-dev.extract-structured-web-data",
"method": "POST",
"path": "/apis/v1/context-dev/extract-structured-web-data",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"url",
"output_schema"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"examples": [
"https://example.com"
],
"minLength": 1,
"description": "Starting HTTP or HTTPS website URL to crawl."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 20,
"description": "Usage-tracking tags. Provide at most 20 tags of 1-50 characters each."
},
"max_depth": {
"type": "integer",
"minimum": 0,
"description": "Maximum link depth from the starting URL. Use 0 to analyze only the starting page; omit for no crawl-depth limit."
},
"max_pages": {
"type": "integer",
"default": 5,
"maximum": 50,
"minimum": 1,
"description": "Maximum pages to analyze (1-50). Higher values increase the price."
},
"fact_check": {
"type": "boolean",
"default": false,
"description": "Require every returned value to be grounded in page content. Unsupported fields are returned as null or empty instead of inferred."
},
"instructions": {
"type": "string",
"maxLength": 2000,
"description": "Optional extraction guidance or field interpretation, up to 2000 characters."
},
"output_schema": {
"type": "object",
"examples": [
{
"type": "object",
"required": [
"company_name"
],
"properties": {
"company_name": {
"type": "string",
"description": "The company's public name."
}
}
}
],
"description": "JSON Schema describing the object to extract. Add descriptions to non-obvious properties so the extractor can interpret them correctly.",
"additionalProperties": true
},
"stop_after_ms": {
"type": "integer",
"default": 80000,
"maximum": 110000,
"minimum": 10000,
"description": "Soft crawl time budget in milliseconds (10000-110000)."
},
"follow_subdomains": {
"type": "boolean",
"default": false,
"description": "Follow links on subdomains of the starting domain."
}
}
}
}
}
},
"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.0103,
"estimate_source": "profile_seed",
"evidence_source": "response_body",
"maximum_units": 10000000,
"unit": "provider_credit",
"unit_rate_usd": 1e-06
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
费用与请求规则
按用量计费;默认请求预估费用:$0.0103 USD(不是固定价格)。 声明的单位费率:每 provider_credit $0.000001 USD。 最终费用以账户适用价格及实际结算为准。 公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。- 默认请求参考估价(USD): 0.0103
- 声明的单位费率(USD): 1e-06
- 计费单位: provider_credit
- 计费依据: response_units
- 公开参考倍率: 1.0
- 声明的最大计数或单位数: 10000000
- 结算证据来源: response_body
授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
请求体
Starting HTTP or HTTPS website URL to crawl.
1"https://example.com"
JSON Schema describing the object to extract. Add descriptions to non-obvious properties so the extractor can interpret them correctly.
{
"type": "object",
"required": ["company_name"],
"properties": {
"company_name": {
"type": "string",
"description": "The company's public name."
}
}
}
Usage-tracking tags. Provide at most 20 tags of 1-50 characters each.
201 - 50Maximum link depth from the starting URL. Use 0 to analyze only the starting page; omit for no crawl-depth limit.
x >= 0Maximum pages to analyze (1-50). Higher values increase the price.
1 <= x <= 50Require every returned value to be grounded in page content. Unsupported fields are returned as null or empty instead of inferred.
Optional extraction guidance or field interpretation, up to 2000 characters.
2000Soft crawl time budget in milliseconds (10000-110000).
10000 <= x <= 110000Follow links on subdomains of the starting domain.