curl --request GET \
--url https://api.range.org/v1/risk/alert-events/{event_id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.range.org/v1/risk/alert-events/{event_id}"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.range.org/v1/risk/alert-events/{event_id}', 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.range.org/v1/risk/alert-events/{event_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.range.org/v1/risk/alert-events/{event_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.range.org/v1/risk/alert-events/{event_id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v1/risk/alert-events/{event_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "clxyz1234abcd",
"time": "2026-05-10T14:22:00.000Z",
"network": "ethereum",
"addresses_involved": [
"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28"
],
"created_at": "2026-05-10T14:22:05.000Z",
"details": {
"message": "Ekex...8r3c approved a proposal on multisig ROX Klend MS to update the borrow rate curve"
},
"severity": "high",
"caption": "Large USDC transfer detected",
"access_type": "same",
"tx_hash": "0xabc123...def456",
"block_number": 19823401,
"alert_rule_id": "7890123456789012",
"squads": {
"squads_ix": {
"program": "Squads Multisig V4",
"parsed": {
"type": "proposalApprove"
}
},
"embedded_instruction": {
"instruction_groups": [
{
"outer_instruction": {
"program": "Kamino Lending Program",
"parsed": {
"type": "updateReserveConfig"
}
},
"inner_instructions": [],
"human": "Update borrow rate curve for reserve EMyn...zf2s"
}
]
}
}
}Get an Alert Event
Fetches a single alert event by its CUID. Squads events include a decoded proposal on squads; details.message is the human-readable alert sentence.
curl --request GET \
--url https://api.range.org/v1/risk/alert-events/{event_id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.range.org/v1/risk/alert-events/{event_id}"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.range.org/v1/risk/alert-events/{event_id}', 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.range.org/v1/risk/alert-events/{event_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.range.org/v1/risk/alert-events/{event_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.range.org/v1/risk/alert-events/{event_id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v1/risk/alert-events/{event_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "clxyz1234abcd",
"time": "2026-05-10T14:22:00.000Z",
"network": "ethereum",
"addresses_involved": [
"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28"
],
"created_at": "2026-05-10T14:22:05.000Z",
"details": {
"message": "Ekex...8r3c approved a proposal on multisig ROX Klend MS to update the borrow rate curve"
},
"severity": "high",
"caption": "Large USDC transfer detected",
"access_type": "same",
"tx_hash": "0xabc123...def456",
"block_number": 19823401,
"alert_rule_id": "7890123456789012",
"squads": {
"squads_ix": {
"program": "Squads Multisig V4",
"parsed": {
"type": "proposalApprove"
}
},
"embedded_instruction": {
"instruction_groups": [
{
"outer_instruction": {
"program": "Kamino Lending Program",
"parsed": {
"type": "updateReserveConfig"
}
},
"inner_instructions": [],
"human": "Update borrow rate curve for reserve EMyn...zf2s"
}
]
}
}
}Authorizations
Authorization method required to allow user to access the api endpoints.
Path Parameters
CUID of the alert event to retrieve.
"clxyz1234abcd"
Response
Unique identifier of the alert event.
"clxyz1234abcd"
ISO 8601 timestamp of when the on-chain event occurred.
"2026-05-10T14:22:00.000Z"
Network slug where the event occurred.
"ethereum"
List of blockchain addresses involved in the event.
[
"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28"
]
ISO 8601 timestamp of when the event record was created.
"2026-05-10T14:22:05.000Z"
Event details. Only message — the human-readable alert sentence — is returned; empty when the rule emitted none.
{
"message": "Ekex...8r3c approved a proposal on multisig ROX Klend MS to update the borrow rate curve"
}
Risk severity of the event.
low, medium, high "high"
Human-readable caption describing the event.
"Large USDC transfer detected"
Caller's access relationship to this event.
global, same, diff, none "same"
Transaction hash associated with the event.
"0xabc123...def456"
Block number at which the event was detected.
19823401
ID of the alert rule that produced this event.
"7890123456789012"
Decoded Squads multisig proposal: the outer Squads instruction, the inner transaction the proposal would execute, and any multisig config changes. null for non-Squads events.
{
"squads_ix": {
"program": "Squads Multisig V4",
"parsed": { "type": "proposalApprove" }
},
"embedded_instruction": {
"instruction_groups": [
{
"outer_instruction": {
"program": "Kamino Lending Program",
"parsed": { "type": "updateReserveConfig" }
},
"inner_instructions": [],
"human": "Update borrow rate curve for reserve EMyn...zf2s"
}
]
}
}
Was this page helpful?