/kharon/briefs/search
curl --request POST \
--url https://api.anysite.io/api/kharon/briefs/search \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"count": 1000,
"timeout": 300,
"search": "<string>",
"topics": [],
"types": [],
"regions": []
}
'import requests
url = "https://api.anysite.io/api/kharon/briefs/search"
payload = {
"count": 1000,
"timeout": 300,
"search": "<string>",
"topics": [],
"types": [],
"regions": []
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
count: 1000,
timeout: 300,
search: '<string>',
topics: [],
types: [],
regions: []
})
};
fetch('https://api.anysite.io/api/kharon/briefs/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.anysite.io/api/kharon/briefs/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([
'count' => 1000,
'timeout' => 300,
'search' => '<string>',
'topics' => [
],
'types' => [
],
'regions' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-token: <api-key>"
],
]);
$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.anysite.io/api/kharon/briefs/search"
payload := strings.NewReader("{\n \"count\": 1000,\n \"timeout\": 300,\n \"search\": \"<string>\",\n \"topics\": [],\n \"types\": [],\n \"regions\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-token", "<api-key>")
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.anysite.io/api/kharon/briefs/search")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"count\": 1000,\n \"timeout\": 300,\n \"search\": \"<string>\",\n \"topics\": [],\n \"types\": [],\n \"regions\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/kharon/briefs/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"count\": 1000,\n \"timeout\": 300,\n \"search\": \"<string>\",\n \"topics\": [],\n \"types\": [],\n \"regions\": []\n}"
response = http.request(request)
puts response.read_body[
{
"@type": "KharonBriefCard",
"id": "<string>",
"alias": "<string>",
"url": "<string>",
"headline": "<string>",
"summary": "<string>",
"main_category": "<string>",
"read_time": "<string>",
"published_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"is_external": true,
"external_link": {
"@type": "KharonLink",
"text": "<string>",
"url": "<string>",
"link_type": "<string>",
"target": "<string>"
},
"image": {
"@type": "KharonAsset",
"id": "<string>",
"url": "<string>",
"alt": "<string>",
"width": 123,
"height": 123,
"mime_type": "<string>"
},
"topics": [],
"types": [],
"regions": []
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/kharon
/kharon/briefs/search
Search The Brief, Kharon’s sanctions and export-control investigative desk, newest article first. Narrows by free-text query and by the desk’s own topic, content-type and region tags. Returns article cards with the URL alias, headline, standfirst, abstract, publication and revision dates, reading time, lede image and the full tag set; entries that point at an outside publication carry the outbound link.
Price: 5 credits per 100 results
⚠️ Common errors: 412: No brief matched the query and filters
POST
/
api
/
kharon
/
briefs
/
search
/kharon/briefs/search
curl --request POST \
--url https://api.anysite.io/api/kharon/briefs/search \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"count": 1000,
"timeout": 300,
"search": "<string>",
"topics": [],
"types": [],
"regions": []
}
'import requests
url = "https://api.anysite.io/api/kharon/briefs/search"
payload = {
"count": 1000,
"timeout": 300,
"search": "<string>",
"topics": [],
"types": [],
"regions": []
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
count: 1000,
timeout: 300,
search: '<string>',
topics: [],
types: [],
regions: []
})
};
fetch('https://api.anysite.io/api/kharon/briefs/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.anysite.io/api/kharon/briefs/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([
'count' => 1000,
'timeout' => 300,
'search' => '<string>',
'topics' => [
],
'types' => [
],
'regions' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-token: <api-key>"
],
]);
$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.anysite.io/api/kharon/briefs/search"
payload := strings.NewReader("{\n \"count\": 1000,\n \"timeout\": 300,\n \"search\": \"<string>\",\n \"topics\": [],\n \"types\": [],\n \"regions\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-token", "<api-key>")
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.anysite.io/api/kharon/briefs/search")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"count\": 1000,\n \"timeout\": 300,\n \"search\": \"<string>\",\n \"topics\": [],\n \"types\": [],\n \"regions\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/kharon/briefs/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"count\": 1000,\n \"timeout\": 300,\n \"search\": \"<string>\",\n \"topics\": [],\n \"types\": [],\n \"regions\": []\n}"
response = http.request(request)
puts response.read_body[
{
"@type": "KharonBriefCard",
"id": "<string>",
"alias": "<string>",
"url": "<string>",
"headline": "<string>",
"summary": "<string>",
"main_category": "<string>",
"read_time": "<string>",
"published_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"is_external": true,
"external_link": {
"@type": "KharonLink",
"text": "<string>",
"url": "<string>",
"link_type": "<string>",
"target": "<string>"
},
"image": {
"@type": "KharonAsset",
"id": "<string>",
"url": "<string>",
"alt": "<string>",
"width": 123,
"height": 123,
"mime_type": "<string>"
},
"topics": [],
"types": [],
"regions": []
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
API token from the dashboard
Headers
Body
application/json
Required range:
1 <= x <= 2000Required range:
20 <= x <= 1500Minimum string length:
1Available options:
artificial_intelligence, enforcement, evasion, export_controls, forced_labor, global_trade_and_supply_chains, investment, military_end_use, national_security, research_security, sanctions, terrorism, transnational_crime Available options:
article, report, snapshot, webinar, column, story_collection, data_viz Available options:
africa, asia_pacific, central_asia, china, europe, iran, latin_america, middle_east, north_america, north_korea, oceania, russia, south_asia Response
Successful Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes