curl --request POST \
--url https://api.limitguard.ai/v1/sanctions/wallet \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"wallet_address": "<string>",
"chain_id": "eip155:8453"
}
'import requests
url = "https://api.limitguard.ai/v1/sanctions/wallet"
payload = {
"wallet_address": "<string>",
"chain_id": "eip155:8453"
}
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({wallet_address: '<string>', chain_id: 'eip155:8453'})
};
fetch('https://api.limitguard.ai/v1/sanctions/wallet', 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/sanctions/wallet",
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([
'wallet_address' => '<string>',
'chain_id' => 'eip155:8453'
]),
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/sanctions/wallet"
payload := strings.NewReader("{\n \"wallet_address\": \"<string>\",\n \"chain_id\": \"eip155:8453\"\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/sanctions/wallet")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"wallet_address\": \"<string>\",\n \"chain_id\": \"eip155:8453\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitguard.ai/v1/sanctions/wallet")
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 \"wallet_address\": \"<string>\",\n \"chain_id\": \"eip155:8453\"\n}"
response = http.request(request)
puts response.read_body{
"wallet_address": "<string>",
"chain_id": "<string>",
"sanctioned": true,
"lists": [
"<string>"
],
"status": "ok",
"source": "<string>",
"upgrade": {
"path": "<string>",
"tool": "<string>",
"price_usd": 123,
"adds": [
"<string>"
]
},
"as_of": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Sanctions Wallet
Free yes/no check of a wallet address against the OFAC SDN list.
The full wallet screen (balances, age and activity, contract and delegation,
risk score with rules and advice, linked entities, ERC-8004 identity and
reputation) is POST /v1/mcp/verify-wallet, priced in upgrade.
curl --request POST \
--url https://api.limitguard.ai/v1/sanctions/wallet \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"wallet_address": "<string>",
"chain_id": "eip155:8453"
}
'import requests
url = "https://api.limitguard.ai/v1/sanctions/wallet"
payload = {
"wallet_address": "<string>",
"chain_id": "eip155:8453"
}
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({wallet_address: '<string>', chain_id: 'eip155:8453'})
};
fetch('https://api.limitguard.ai/v1/sanctions/wallet', 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/sanctions/wallet",
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([
'wallet_address' => '<string>',
'chain_id' => 'eip155:8453'
]),
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/sanctions/wallet"
payload := strings.NewReader("{\n \"wallet_address\": \"<string>\",\n \"chain_id\": \"eip155:8453\"\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/sanctions/wallet")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"wallet_address\": \"<string>\",\n \"chain_id\": \"eip155:8453\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitguard.ai/v1/sanctions/wallet")
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 \"wallet_address\": \"<string>\",\n \"chain_id\": \"eip155:8453\"\n}"
response = http.request(request)
puts response.read_body{
"wallet_address": "<string>",
"chain_id": "<string>",
"sanctioned": true,
"lists": [
"<string>"
],
"status": "ok",
"source": "<string>",
"upgrade": {
"path": "<string>",
"tool": "<string>",
"price_usd": 123,
"adds": [
"<string>"
]
},
"as_of": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Body
POST /v1/sanctions/wallet: the fields, defaults and validation of the full wallet screen's body (routers/mcp.py VerifyWalletRequest, then mcp_server.validation.VerifyWalletInput in the route), so a body moves between the two unchanged.
Response
Successful Response
The free wallet sanctions check: yes or no, never a programme or entry id.
The address in canonical form
CAIP-2 chain ID
["OFAC SDN"] on a match, else []
stale when the loaded list is older than the freshness limit
ok, stale The paid full wallet screen the free answer points at.
Show child attributes
Show child attributes
Publication date of the list