curl --request POST \
--url https://api.limitguard.ai/v1/kyb/check \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"entity_id": "<string>",
"registration_number": "<string>",
"country": "<string>",
"entity_name": "<string>",
"vat_number": "<string>",
"domain": "<string>"
}
'import requests
url = "https://api.limitguard.ai/v1/kyb/check"
payload = {
"entity_id": "<string>",
"registration_number": "<string>",
"country": "<string>",
"entity_name": "<string>",
"vat_number": "<string>",
"domain": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
entity_id: '<string>',
registration_number: '<string>',
country: '<string>',
entity_name: '<string>',
vat_number: '<string>',
domain: '<string>'
})
};
fetch('https://api.limitguard.ai/v1/kyb/check', 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.limitguard.ai/v1/kyb/check",
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([
'entity_id' => '<string>',
'registration_number' => '<string>',
'country' => '<string>',
'entity_name' => '<string>',
'vat_number' => '<string>',
'domain' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <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.limitguard.ai/v1/kyb/check"
payload := strings.NewReader("{\n \"entity_id\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"country\": \"<string>\",\n \"entity_name\": \"<string>\",\n \"vat_number\": \"<string>\",\n \"domain\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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.limitguard.ai/v1/kyb/check")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"entity_id\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"country\": \"<string>\",\n \"entity_name\": \"<string>\",\n \"vat_number\": \"<string>\",\n \"domain\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitguard.ai/v1/kyb/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"entity_id\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"country\": \"<string>\",\n \"entity_name\": \"<string>\",\n \"vat_number\": \"<string>\",\n \"domain\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"entity_id": "<string>",
"registration_number": "<string>",
"country": "<string>",
"verified": true,
"register_verified": true,
"register_checked": "KVK",
"sanctions_flagged": true,
"kyb_status": "<string>",
"trust_score": 50,
"trust_level": "<string>",
"cluster": "<string>",
"recommendation": "<string>",
"confidence": 0.5,
"top_factors": [
{
"source": "<string>",
"signal": "<string>",
"impact": "<string>",
"weight": 123
}
],
"sources_checked": 123,
"processing_time_ms": 123,
"risk_flags": [
"<string>"
],
"correlations": {},
"findings": [
{
"action": "<string>",
"why": "<string>",
"expected_result": "<string>"
}
],
"group_structure": {},
"group_chain": {},
"company_profile": {
"status": "active",
"headline": "<string>",
"stopped_on": "<string>",
"industry": {
"code": "01241",
"is_main": true,
"description": "Teelt van appels en peren"
},
"other_activities": [],
"employees": {
"total": 123,
"full_time": 123,
"part_time": 123
},
"branches": {
"total": 123,
"commercial": 123
},
"kvk_non_mailing": true,
"statutory_name": "<string>",
"trade_names": [],
"extended_legal_form": "<string>",
"websites": [],
"lines": [],
"personal_data_withheld": false
},
"response_quality": "<string>",
"disclaimers": [
"<string>"
]
}{
"title": "<string>",
"status": 123,
"retry": {
"price_usdc": 123,
"price_raw": 123,
"header": "X-Response-Quality",
"value": "fresh"
},
"type": "about:blank",
"detail": "<string>",
"instance": "<string>",
"errorCode": "not_cached"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}KYB Check
Full KYB (Know Your Business) verification.
Combines entity trust check with sanctions screening and company
registration verification. Returns comprehensive KYB result with
verification status, risk flags, and compliance recommendations.
verified means trust_score 60 or more; register_verified says whether
the KVK or KBO register found the company.
Priced at $1.50 per call via x402 (see ENDPOINT_PRICING).
curl --request POST \
--url https://api.limitguard.ai/v1/kyb/check \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"entity_id": "<string>",
"registration_number": "<string>",
"country": "<string>",
"entity_name": "<string>",
"vat_number": "<string>",
"domain": "<string>"
}
'import requests
url = "https://api.limitguard.ai/v1/kyb/check"
payload = {
"entity_id": "<string>",
"registration_number": "<string>",
"country": "<string>",
"entity_name": "<string>",
"vat_number": "<string>",
"domain": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
entity_id: '<string>',
registration_number: '<string>',
country: '<string>',
entity_name: '<string>',
vat_number: '<string>',
domain: '<string>'
})
};
fetch('https://api.limitguard.ai/v1/kyb/check', 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.limitguard.ai/v1/kyb/check",
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([
'entity_id' => '<string>',
'registration_number' => '<string>',
'country' => '<string>',
'entity_name' => '<string>',
'vat_number' => '<string>',
'domain' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <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.limitguard.ai/v1/kyb/check"
payload := strings.NewReader("{\n \"entity_id\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"country\": \"<string>\",\n \"entity_name\": \"<string>\",\n \"vat_number\": \"<string>\",\n \"domain\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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.limitguard.ai/v1/kyb/check")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"entity_id\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"country\": \"<string>\",\n \"entity_name\": \"<string>\",\n \"vat_number\": \"<string>\",\n \"domain\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitguard.ai/v1/kyb/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"entity_id\": \"<string>\",\n \"registration_number\": \"<string>\",\n \"country\": \"<string>\",\n \"entity_name\": \"<string>\",\n \"vat_number\": \"<string>\",\n \"domain\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"entity_id": "<string>",
"registration_number": "<string>",
"country": "<string>",
"verified": true,
"register_verified": true,
"register_checked": "KVK",
"sanctions_flagged": true,
"kyb_status": "<string>",
"trust_score": 50,
"trust_level": "<string>",
"cluster": "<string>",
"recommendation": "<string>",
"confidence": 0.5,
"top_factors": [
{
"source": "<string>",
"signal": "<string>",
"impact": "<string>",
"weight": 123
}
],
"sources_checked": 123,
"processing_time_ms": 123,
"risk_flags": [
"<string>"
],
"correlations": {},
"findings": [
{
"action": "<string>",
"why": "<string>",
"expected_result": "<string>"
}
],
"group_structure": {},
"group_chain": {},
"company_profile": {
"status": "active",
"headline": "<string>",
"stopped_on": "<string>",
"industry": {
"code": "01241",
"is_main": true,
"description": "Teelt van appels en peren"
},
"other_activities": [],
"employees": {
"total": 123,
"full_time": 123,
"part_time": 123
},
"branches": {
"total": 123,
"commercial": 123
},
"kvk_non_mailing": true,
"statutory_name": "<string>",
"trade_names": [],
"extended_legal_form": "<string>",
"websites": [],
"lines": [],
"personal_data_withheld": false
},
"response_quality": "<string>",
"disclaimers": [
"<string>"
]
}{
"title": "<string>",
"status": 123,
"retry": {
"price_usdc": 123,
"price_raw": 123,
"header": "X-Response-Quality",
"value": "fresh"
},
"type": "about:blank",
"detail": "<string>",
"instance": "<string>",
"errorCode": "not_cached"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Body
Request model for KYB verification.
Internal entity identifier
KVK (NL) or KBO/CBE (BE) company number. For other countries it is not checked against a company register; it is only used to find the company's LEI in GLEIF (group_structure)
ISO 3166-1 alpha-2 country code
2Legal entity name (optional, used for sanctions)
VAT number for VIES verification
Company domain for web presence check
Response
KYB result
Response body of POST /v1/kyb/check.
The entity_id sent in the request
The registration_number sent in the request
ISO 3166-1 alpha-2 country code, upper case
True when trust_score is 60 or more. It is a score threshold, not a register match: it can be true when no company register was checked. See register_verified.
True only when the company register in register_checked found the company (KVK for NL, KBO for BE). False when it did not, when the lookup failed, and when register_checked is null.
The company register this check asked: KVK (NL) or KBO (BE). Null when none was asked: the country is not NL or BE, a BE check had no CBE number, or the register was busy and skipped.
KVK, KBO True when the sanctions screen matched the entity
One of approved, review_required, edd_required or rejected
0-100 trust score. Higher = more trustworthy
0 <= x <= 100Trust level derived from trust_score
Entity cluster classification
Action recommendation
Confidence in the assessment (0-1)
0 <= x <= 1Top factors behind the score
Show child attributes
Show child attributes
Number of data sources that answered
Time taken to produce the answer
Negative factors and register flags, as source: signal
Cross-source correlation scores
Show child attributes
Show child attributes
What to do about each correlation
Show child attributes
Show child attributes
LEI and parents from GLEIF; informational, never scored
Belgian parent chain from the NBB filing; null otherwise
What the KVK register says about the company; null when it has no record
Show child attributes
Show child attributes
The tier this answer was served at
Notes about this answer, e.g. a retired tier