# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/byteplus/web-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"Query": "OpenAI news"
}'curl --request POST \
--url https://api.aisa.one/apis/v1/byteplus/web-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"Query": "OpenAI news"
}
'import requests
url = "https://api.aisa.one/apis/v1/byteplus/web-search"
payload = { "Query": "OpenAI news" }
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({Query: 'OpenAI news'})
};
fetch('https://api.aisa.one/apis/v1/byteplus/web-search', 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/byteplus/web-search",
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([
'Query' => 'OpenAI news'
]),
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/byteplus/web-search"
payload := strings.NewReader("{\n \"Query\": \"OpenAI news\"\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/byteplus/web-search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"Query\": \"OpenAI news\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/byteplus/web-search")
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 \"Query\": \"OpenAI news\"\n}"
response = http.request(request)
puts response.read_body{
"ResponseMetadata": {
"Action": "",
"Region": "",
"RequestId": "20260904155503A787EC832774768DC56F",
"Service": "",
"Version": ""
},
"Result": {
"Choices": null,
"LogId": "20260904155503A787EC832774768DC56F",
"ResultCount": 3,
"SearchContext": {
"OriginQuery": "OpenAI latest news",
"SearchType": "web"
},
"TimeCost": 935,
"Usage": null,
"WebResults": [
{
"Id": "19b903d59c017bbb04c7832574500d49",
"LogoUrl": "https://p16-bpsearch-sign.ibyteimg.com/...<signed>",
"PublishTime": "2026-09-03T07:50:20+08:00",
"PublishTimeUnix": 1788393020,
"SiteName": "OpenAI",
"Snippet": "Stay up to speed on the rapid advancement of AI technology and the benefits it offers to humanity.",
"SortId": 1,
"Summary": "Stay up to speed on the rapid advancement of AI technology and the benefits it offers to humanity.",
"Title": "OpenAI News | OpenAI",
"Url": "https://openai.com/news/"
}
]
}
}BytePlus Web Search
AI-oriented real-time web search that returns titled results with links and snippets.
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/byteplus/web-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"Query": "OpenAI news"
}'curl --request POST \
--url https://api.aisa.one/apis/v1/byteplus/web-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"Query": "OpenAI news"
}
'import requests
url = "https://api.aisa.one/apis/v1/byteplus/web-search"
payload = { "Query": "OpenAI news" }
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({Query: 'OpenAI news'})
};
fetch('https://api.aisa.one/apis/v1/byteplus/web-search', 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/byteplus/web-search",
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([
'Query' => 'OpenAI news'
]),
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/byteplus/web-search"
payload := strings.NewReader("{\n \"Query\": \"OpenAI news\"\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/byteplus/web-search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"Query\": \"OpenAI news\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/byteplus/web-search")
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 \"Query\": \"OpenAI news\"\n}"
response = http.request(request)
puts response.read_body{
"ResponseMetadata": {
"Action": "",
"Region": "",
"RequestId": "20260904155503A787EC832774768DC56F",
"Service": "",
"Version": ""
},
"Result": {
"Choices": null,
"LogId": "20260904155503A787EC832774768DC56F",
"ResultCount": 3,
"SearchContext": {
"OriginQuery": "OpenAI latest news",
"SearchType": "web"
},
"TimeCost": 935,
"Usage": null,
"WebResults": [
{
"Id": "19b903d59c017bbb04c7832574500d49",
"LogoUrl": "https://p16-bpsearch-sign.ibyteimg.com/...<signed>",
"PublishTime": "2026-09-03T07:50:20+08:00",
"PublishTimeUnix": 1788393020,
"SiteName": "OpenAI",
"Snippet": "Stay up to speed on the rapid advancement of AI technology and the benefits it offers to humanity.",
"SortId": 1,
"Summary": "Stay up to speed on the rapid advancement of AI technology and the benefits it offers to humanity.",
"Title": "OpenAI News | OpenAI",
"Url": "https://openai.com/news/"
}
]
}
}Query is required; narrow the result set with Count (up to 20), Filter (Sites to restrict, BlockHosts to exclude), Language, and TimeRange. The response wraps ResponseMetadata.RequestId and a Result object whose WebResults array holds each hit (Title, Url, Snippet, Summary, SiteName, PublishTime/PublishTimeUnix), alongside ResultCount, SearchContext, and TimeCost. Billed at a flat rate per successful call; failed requests are not charged. Use it for RAG retrieval augmentation, competitive/PR monitoring, fact-checking, and content sourcing. ⚠️ Results carry links and snippets, not full page text — pair each result URL with post_byteplus_fetch to pull clean, structured page content.
Request contract
- Method and path: POST /apis/v1/byteplus/web-search
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/byteplus/web-search
- Runtime facts: c6938a2b68dcd4140f77b783866eb27d207badfaf1ccb92415f8f016896bad6f
{
"operationId": "post_byteplus_web_search",
"method": "POST",
"path": "/apis/v1/byteplus/web-search",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"examples": {
"basic": {
"summary": "Minimal query",
"value": {
"Query": "OpenAI news"
}
},
"filtered": {
"summary": "Query with count, domain filter, language and time window",
"value": {
"Count": 10,
"Filter": {
"BlockHosts": "reddit.com",
"Sites": "openai.com|bytedance.com"
},
"Language": "EN",
"Query": "OpenAI product launch",
"TimeRange": "OneWeek"
}
}
},
"schema": {
"properties": {
"Count": {
"default": 10,
"description": "Number of results to return. Optional; default 10, maximum 20.",
"example": 10,
"maximum": 20,
"type": "integer"
},
"Filter": {
"description": "Optional result filter. Both fields are pipe-separated strings of full domains (max 5 each).",
"properties": {
"BlockHosts": {
"description": "Exclude results from these full domains. Pipe-separated, max 5, e.g. \"reddit.com|quora.com\".",
"example": "reddit.com|quora.com",
"type": "string"
},
"Sites": {
"description": "Restrict results to these full domains. Pipe-separated, max 5, e.g. \"bytedance.com|byteplus.com\". (Sending an array returns 10400 Invalid Parameter.)",
"example": "bytedance.com|byteplus.com",
"type": "string"
}
},
"type": "object"
},
"Language": {
"description": "Optional language hint in the upstream format, e.g. EN, ZH-HANS, ZH-HANT.",
"example": "EN",
"type": "string"
},
"Query": {
"description": "The search query. Required. Max 400 characters; the upstream engine also effectively caps around 50 words.",
"example": "OpenAI news",
"maxLength": 400,
"type": "string"
},
"TimeRange": {
"description": "Optional recency window. One of the named windows OneDay / OneWeek / OneMonth / OneYear, or a custom range \"YYYY-MM-DD..YYYY-MM-DD\". Omit for no time filter. NOTE: values like \"week\"/\"month\" are silently ignored upstream.",
"example": "OneWeek",
"oneOf": [
{
"enum": [
"OneDay",
"OneWeek",
"OneMonth",
"OneYear"
],
"type": "string"
},
{
"description": "Custom range, e.g. 2026-08-01..2026-09-01.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}\\.\\.\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
]
}
},
"required": [
"Query"
],
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "fixed_success",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.0048,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Published reference price: $0.0048 USD per successful request. 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.0048
- Cost contract: fixed_success
- Published reference multiplier: 1.0
- Settlement evidence source: request_snapshot
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The search query. Required. Max 400 characters; the upstream engine also effectively caps around 50 words.
400"OpenAI news"
Number of results to return. Optional; default 10, maximum 20.
x <= 2010
Optional result filter. Both fields are pipe-separated strings of full domains (max 5 each).
Show child attributes
Show child attributes
Optional language hint in the upstream format, e.g. EN, ZH-HANS, ZH-HANT.
"EN"
Optional recency window. One of the named windows OneDay / OneWeek / OneMonth / OneYear, or a custom range "YYYY-MM-DD..YYYY-MM-DD". Omit for no time filter. NOTE: values like "week"/"month" are silently ignored upstream.
OneDay, OneWeek, OneMonth, OneYear "OneWeek"