Start risk analysis
curl --request POST \
--url https://api.wavynode.com/v1/risk \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"address": "<string>",
"fromDate": "<string>",
"toDate": "<string>",
"chainId": 123
}
'import requests
url = "https://api.wavynode.com/v1/risk"
payload = {
"address": "<string>",
"fromDate": "<string>",
"toDate": "<string>",
"chainId": 123
}
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({address: '<string>', fromDate: '<string>', toDate: '<string>', chainId: 123})
};
fetch('https://api.wavynode.com/v1/risk', 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.wavynode.com/v1/risk",
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([
'address' => '<string>',
'fromDate' => '<string>',
'toDate' => '<string>',
'chainId' => 123
]),
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.wavynode.com/v1/risk"
payload := strings.NewReader("{\n \"address\": \"<string>\",\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"chainId\": 123\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.wavynode.com/v1/risk")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"address\": \"<string>\",\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"chainId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wavynode.com/v1/risk")
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 \"address\": \"<string>\",\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"chainId\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"jobId": "<string>"
}
}{
"error": "<string>",
"message": "<string>"
}Risk Analysis
Start risk analysis
Starts an asynchronous risk analysis for a wallet address on a specific chain and date range.
POST
/
risk
Start risk analysis
curl --request POST \
--url https://api.wavynode.com/v1/risk \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"address": "<string>",
"fromDate": "<string>",
"toDate": "<string>",
"chainId": 123
}
'import requests
url = "https://api.wavynode.com/v1/risk"
payload = {
"address": "<string>",
"fromDate": "<string>",
"toDate": "<string>",
"chainId": 123
}
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({address: '<string>', fromDate: '<string>', toDate: '<string>', chainId: 123})
};
fetch('https://api.wavynode.com/v1/risk', 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.wavynode.com/v1/risk",
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([
'address' => '<string>',
'fromDate' => '<string>',
'toDate' => '<string>',
'chainId' => 123
]),
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.wavynode.com/v1/risk"
payload := strings.NewReader("{\n \"address\": \"<string>\",\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"chainId\": 123\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.wavynode.com/v1/risk")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"address\": \"<string>\",\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"chainId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wavynode.com/v1/risk")
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 \"address\": \"<string>\",\n \"fromDate\": \"<string>\",\n \"toDate\": \"<string>\",\n \"chainId\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"jobId": "<string>"
}
}{
"error": "<string>",
"message": "<string>"
}This endpoint starts an asynchronous analysis job. The response includes a
jobId that you must poll to retrieve the results.Polling for results
After starting an analysis, poll the Get risk analysis result endpoint with thejobId to check for completion:
const jobId = "abc123...";
async function pollResult(jobId) {
while (true) {
const res = await fetch(`https://api.wavynode.com/v1/risk/${jobId}`, {
headers: { "x-api-key": "ApiKey wavy_..." }
});
const { data } = await res.json();
if (data.status === "completed") return data.result;
if (data.status === "failed") throw new Error(data.error);
await new Promise(r => setTimeout(r, 1000));
}
}
Related resources
Quick risk
Synchronous risk check for fast single-address analysis.
Get risk result
Poll for the result of an async risk analysis job.
Risk scores
Learn how risk scores are calculated and interpreted.
Authorizations
Enter the full value with the ApiKey prefix. Example: ApiKey wavy_your-api-key. The prefix is required for authentication.
Body
application/json
⌘I