curl --request POST \
--url https://api.onkernel.com/config-registry/lookup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"allowed_proxy_countries": [
"US"
]
}
'import requests
url = "https://api.onkernel.com/config-registry/lookup"
payload = {
"url": "<string>",
"allowed_proxy_countries": ["US"]
}
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: '<string>', allowed_proxy_countries: ['US']})
};
fetch('https://api.onkernel.com/config-registry/lookup', 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.onkernel.com/config-registry/lookup",
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' => '<string>',
'allowed_proxy_countries' => [
'US'
]
]),
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.onkernel.com/config-registry/lookup"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"allowed_proxy_countries\": [\n \"US\"\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.onkernel.com/config-registry/lookup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"allowed_proxy_countries\": [\n \"US\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onkernel.com/config-registry/lookup")
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\": \"<string>\",\n \"allowed_proxy_countries\": [\n \"US\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"recommendation": {
"browser": {
"gpu": true,
"headless": true,
"stealth": true,
"viewport": {
"height": 800,
"width": 1280,
"refresh_rate": 60
}
},
"evidence": {
"accessed": 1,
"blocked": 1,
"inconclusive": 1,
"last_observed_at": "2023-11-07T05:31:56Z",
"run_count": 1,
"sample_size": 1,
"success_rate": 0.5,
"last_supported_at": "2023-11-07T05:31:56Z"
},
"match_scope": "exact",
"matched_target": "<string>",
"proxy": {
"mode": "direct"
},
"type": "recommendation"
},
"target": {
"domain": "<string>",
"host": "<string>",
"normalized": "<string>"
},
"working_configurations": [
{
"browser": {
"gpu": true,
"headless": true,
"stealth": true,
"viewport": {
"height": 800,
"width": 1280,
"refresh_rate": 60
}
},
"evidence": {
"accessed": 1,
"blocked": 1,
"inconclusive": 1,
"last_observed_at": "2023-11-07T05:31:56Z",
"run_count": 1,
"sample_size": 1,
"success_rate": 0.5,
"last_supported_at": "2023-11-07T05:31:56Z"
},
"match_scope": "exact",
"matched_target": "<string>",
"proxy": {
"mode": "direct"
},
"type": "recommendation"
}
],
"guidance": "<string>"
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}Look up a config
Returns current global knowledge without resolving DNS, creating an analysis, or updating config registry data.
curl --request POST \
--url https://api.onkernel.com/config-registry/lookup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"allowed_proxy_countries": [
"US"
]
}
'import requests
url = "https://api.onkernel.com/config-registry/lookup"
payload = {
"url": "<string>",
"allowed_proxy_countries": ["US"]
}
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: '<string>', allowed_proxy_countries: ['US']})
};
fetch('https://api.onkernel.com/config-registry/lookup', 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.onkernel.com/config-registry/lookup",
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' => '<string>',
'allowed_proxy_countries' => [
'US'
]
]),
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.onkernel.com/config-registry/lookup"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"allowed_proxy_countries\": [\n \"US\"\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.onkernel.com/config-registry/lookup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"allowed_proxy_countries\": [\n \"US\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onkernel.com/config-registry/lookup")
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\": \"<string>\",\n \"allowed_proxy_countries\": [\n \"US\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"recommendation": {
"browser": {
"gpu": true,
"headless": true,
"stealth": true,
"viewport": {
"height": 800,
"width": 1280,
"refresh_rate": 60
}
},
"evidence": {
"accessed": 1,
"blocked": 1,
"inconclusive": 1,
"last_observed_at": "2023-11-07T05:31:56Z",
"run_count": 1,
"sample_size": 1,
"success_rate": 0.5,
"last_supported_at": "2023-11-07T05:31:56Z"
},
"match_scope": "exact",
"matched_target": "<string>",
"proxy": {
"mode": "direct"
},
"type": "recommendation"
},
"target": {
"domain": "<string>",
"host": "<string>",
"normalized": "<string>"
},
"working_configurations": [
{
"browser": {
"gpu": true,
"headless": true,
"stealth": true,
"viewport": {
"height": 800,
"width": 1280,
"refresh_rate": 60
}
},
"evidence": {
"accessed": 1,
"blocked": 1,
"inconclusive": 1,
"last_observed_at": "2023-11-07T05:31:56Z",
"run_count": 1,
"sample_size": 1,
"success_rate": 0.5,
"last_supported_at": "2023-11-07T05:31:56Z"
},
"match_scope": "exact",
"matched_target": "<string>",
"proxy": {
"mode": "direct"
},
"type": "recommendation"
}
],
"guidance": "<string>"
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Response
Current recommendation, or a null recommendation when no eligible knowledge exists.
Recommendation or structured no-recommendation result from current knowledge. Only the proxy_restricted code is reported here. Null for every other outcome, including a target analyzed without a working configuration.
- Option 1
- Option 2
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Working configurations for the target, ordered with the recommended configuration first.
Show child attributes
Show child attributes
Short advisory markdown to facilitate navigating this target. Returned even when no configuration reached the target, since knowing what prevented success is useful without a configuration. Not verified against this target. Null when nothing applicable was observed or no notes exist.