web.answer
Answer a question from live web search results, with the sources the answer was grounded in.
curl --request POST \
--url https://api.agentkey.app/v2/ops/web.answer \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"country": "<string>",
"exclude_domains": [
"<string>"
],
"fields": [
"<string>"
],
"include_domains": [
"<string>"
],
"include_raw": false,
"lang": "<string>",
"provider": "<string>",
"routing": {
"allow_fallbacks": true,
"only": [
"<string>"
],
"order": [
"<string>"
],
"strategy": "auto"
},
"time_range": "all"
}
'import requests
url = "https://api.agentkey.app/v2/ops/web.answer"
payload = {
"query": "<string>",
"country": "<string>",
"exclude_domains": ["<string>"],
"fields": ["<string>"],
"include_domains": ["<string>"],
"include_raw": False,
"lang": "<string>",
"provider": "<string>",
"routing": {
"allow_fallbacks": True,
"only": ["<string>"],
"order": ["<string>"],
"strategy": "auto"
},
"time_range": "all"
}
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: '<string>',
country: '<string>',
exclude_domains: ['<string>'],
fields: ['<string>'],
include_domains: ['<string>'],
include_raw: false,
lang: '<string>',
provider: '<string>',
routing: {
allow_fallbacks: true,
only: ['<string>'],
order: ['<string>'],
strategy: 'auto'
},
time_range: 'all'
})
};
fetch('https://api.agentkey.app/v2/ops/web.answer', 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.agentkey.app/v2/ops/web.answer",
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' => '<string>',
'country' => '<string>',
'exclude_domains' => [
'<string>'
],
'fields' => [
'<string>'
],
'include_domains' => [
'<string>'
],
'include_raw' => false,
'lang' => '<string>',
'provider' => '<string>',
'routing' => [
'allow_fallbacks' => true,
'only' => [
'<string>'
],
'order' => [
'<string>'
],
'strategy' => 'auto'
],
'time_range' => 'all'
]),
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.agentkey.app/v2/ops/web.answer"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"exclude_domains\": [\n \"<string>\"\n ],\n \"fields\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"provider\": \"<string>\",\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n },\n \"time_range\": \"all\"\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.agentkey.app/v2/ops/web.answer")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"exclude_domains\": [\n \"<string>\"\n ],\n \"fields\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"provider\": \"<string>\",\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n },\n \"time_range\": \"all\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentkey.app/v2/ops/web.answer")
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\": \"<string>\",\n \"country\": \"<string>\",\n \"exclude_domains\": [\n \"<string>\"\n ],\n \"fields\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"provider\": \"<string>\",\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n },\n \"time_range\": \"all\"\n}"
response = http.request(request)
puts response.read_body{
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"credits_charged": 123,
"data": {
"answer": "<string>",
"sources": [
{
"snippet": "<string>",
"title": "<string>",
"url": "<string>"
}
]
},
"op": "<string>",
"op_version": 123,
"provider": "<string>",
"request_id": "<string>",
"took_ms": 123,
"unsupported_fields": [
"<string>"
],
"raw": "<unknown>",
"raw_truncated": true
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}Authorizations
AgentKey API key (ak_…).
Body
The question, in natural language.
ISO 3166-1 alpha-2 country code to bias the search, e.g. US, CN.
Exclude sources from these domains (routes to an engine that supports it).
Projection: keep only these dotted paths of data, e.g. ["items.id", "items.text"].
Restrict sources to these domains (routes to an engine that supports it).
Attach the raw upstream payload as raw (not a stable contract; truncated above 256 KB).
BCP 47 language tag for the answer and the sources, e.g. en, zh-Hans.
Shorthand for routing.only = [provider].
Provider routing override. order: try these providers first; only: restrict to these (equivalent to pinning); allow_fallbacks: false tries only the first eligible provider.
Show child attributes
Show child attributes
Only ground the answer in pages published within this window.
day, week, month, year, all Response
Success envelope
Success envelope whose data is a Answer.
Show child attributes
Show child attributes
Credits charged for this call (the method's fixed price).
A natural-language answer to a question, grounded in web sources.
Show child attributes
Show child attributes
Method name.
Method version that served the call.
Provider that actually served the call.
Correlation id; quote it in support requests.
Output paths this provider structurally does not supply; such fields are null for a different reason than 'missing on this record'.
Upstream payload, only with include_raw=true. Not a stable contract.
curl --request POST \
--url https://api.agentkey.app/v2/ops/web.answer \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"country": "<string>",
"exclude_domains": [
"<string>"
],
"fields": [
"<string>"
],
"include_domains": [
"<string>"
],
"include_raw": false,
"lang": "<string>",
"provider": "<string>",
"routing": {
"allow_fallbacks": true,
"only": [
"<string>"
],
"order": [
"<string>"
],
"strategy": "auto"
},
"time_range": "all"
}
'import requests
url = "https://api.agentkey.app/v2/ops/web.answer"
payload = {
"query": "<string>",
"country": "<string>",
"exclude_domains": ["<string>"],
"fields": ["<string>"],
"include_domains": ["<string>"],
"include_raw": False,
"lang": "<string>",
"provider": "<string>",
"routing": {
"allow_fallbacks": True,
"only": ["<string>"],
"order": ["<string>"],
"strategy": "auto"
},
"time_range": "all"
}
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: '<string>',
country: '<string>',
exclude_domains: ['<string>'],
fields: ['<string>'],
include_domains: ['<string>'],
include_raw: false,
lang: '<string>',
provider: '<string>',
routing: {
allow_fallbacks: true,
only: ['<string>'],
order: ['<string>'],
strategy: 'auto'
},
time_range: 'all'
})
};
fetch('https://api.agentkey.app/v2/ops/web.answer', 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.agentkey.app/v2/ops/web.answer",
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' => '<string>',
'country' => '<string>',
'exclude_domains' => [
'<string>'
],
'fields' => [
'<string>'
],
'include_domains' => [
'<string>'
],
'include_raw' => false,
'lang' => '<string>',
'provider' => '<string>',
'routing' => [
'allow_fallbacks' => true,
'only' => [
'<string>'
],
'order' => [
'<string>'
],
'strategy' => 'auto'
],
'time_range' => 'all'
]),
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.agentkey.app/v2/ops/web.answer"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"exclude_domains\": [\n \"<string>\"\n ],\n \"fields\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"provider\": \"<string>\",\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n },\n \"time_range\": \"all\"\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.agentkey.app/v2/ops/web.answer")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"exclude_domains\": [\n \"<string>\"\n ],\n \"fields\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"provider\": \"<string>\",\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n },\n \"time_range\": \"all\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentkey.app/v2/ops/web.answer")
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\": \"<string>\",\n \"country\": \"<string>\",\n \"exclude_domains\": [\n \"<string>\"\n ],\n \"fields\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"include_raw\": false,\n \"lang\": \"<string>\",\n \"provider\": \"<string>\",\n \"routing\": {\n \"allow_fallbacks\": true,\n \"only\": [\n \"<string>\"\n ],\n \"order\": [\n \"<string>\"\n ],\n \"strategy\": \"auto\"\n },\n \"time_range\": \"all\"\n}"
response = http.request(request)
puts response.read_body{
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"credits_charged": 123,
"data": {
"answer": "<string>",
"sources": [
{
"snippet": "<string>",
"title": "<string>",
"url": "<string>"
}
]
},
"op": "<string>",
"op_version": 123,
"provider": "<string>",
"request_id": "<string>",
"took_ms": 123,
"unsupported_fields": [
"<string>"
],
"raw": "<unknown>",
"raw_truncated": true
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}{
"code": 123,
"error": "<string>",
"error_type": "<string>",
"attempts": [
{
"provider": "<string>",
"status": 123,
"took_ms": 123,
"tool": "<string>",
"error_type": "<string>",
"refunded": true,
"upstream_status": 123
}
],
"op": "<string>",
"request_id": "<string>"
}