curl --request GET \
--url https://api.range.org/v2/cases/{id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.range.org/v2/cases/{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/v2/cases/{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/v2/cases/{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/v2/cases/{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/v2/cases/{id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/cases/{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": "<string>",
"workspace_id": "<string>",
"title": "<string>",
"status": "open",
"severity": "severe",
"source_type": "risk_screen",
"subject": {
"type": "address",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
"network": "ethereum",
"tx_hash": "0xabc...",
"name": "<string>"
},
"created_at": "<string>",
"updated_at": "<string>",
"viewed": true,
"autopilot_status": "queued",
"autopilot_recommendation": "escalate",
"available_actions": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"label": "<string>",
"kind": "select",
"options": [
"open"
],
"requires_note": true
}
],
"comments": [
{
"id": "<string>",
"author": "analyst@range.org",
"body": "<string>",
"created_at": "<string>"
}
],
"autopilot": {
"run_id": "<string>",
"status": "queued",
"runs_count": 123,
"recommendation": "escalate",
"confidence": "low",
"headline": "<string>",
"report": {},
"started_at": "<string>",
"completed_at": "<string>"
},
"resolution": "dismissed",
"source_id": "<string>",
"client_entity_id": "550e8400-e29b-41d4-a716-446655440000",
"assignee": "<string>",
"created_by": "<string>",
"resolved_at": "<string>",
"counterparty_deleted": true,
"evidence_summary": {}
}Get case details
Return a case with its comments, evidence summary, and available actions.
curl --request GET \
--url https://api.range.org/v2/cases/{id} \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.range.org/v2/cases/{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/v2/cases/{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/v2/cases/{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/v2/cases/{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/v2/cases/{id}")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/cases/{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": "<string>",
"workspace_id": "<string>",
"title": "<string>",
"status": "open",
"severity": "severe",
"source_type": "risk_screen",
"subject": {
"type": "address",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
"network": "ethereum",
"tx_hash": "0xabc...",
"name": "<string>"
},
"created_at": "<string>",
"updated_at": "<string>",
"viewed": true,
"autopilot_status": "queued",
"autopilot_recommendation": "escalate",
"available_actions": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"label": "<string>",
"kind": "select",
"options": [
"open"
],
"requires_note": true
}
],
"comments": [
{
"id": "<string>",
"author": "analyst@range.org",
"body": "<string>",
"created_at": "<string>"
}
],
"autopilot": {
"run_id": "<string>",
"status": "queued",
"runs_count": 123,
"recommendation": "escalate",
"confidence": "low",
"headline": "<string>",
"report": {},
"started_at": "<string>",
"completed_at": "<string>"
},
"resolution": "dismissed",
"source_id": "<string>",
"client_entity_id": "550e8400-e29b-41d4-a716-446655440000",
"assignee": "<string>",
"created_by": "<string>",
"resolved_at": "<string>",
"counterparty_deleted": true,
"evidence_summary": {}
}Authorizations
Authorization method required to allow user to access the api endpoints.
Path Parameters
The case id (uuid).
"550e8400-e29b-41d4-a716-446655440000"
Response
open, in_review, resolved severe, high, medium, low risk_screen, sanctions_screen, alert_event, manual, regulatory_filing, tie_out_break, corridor_discrepancy, agreement_break, redemption, transaction_screening, counterparty_screening Show child attributes
Show child attributes
In list responses, whether this case is read for the caller.
Status of the latest Autopilot run on this case, or null when Autopilot has not touched it.
queued, running, completed, failed, skipped Recommendation of the latest Autopilot run, or null when it has none yet.
escalate, dismiss, review Actions supported by this source and status. Existing write permissions still apply. Resolving via set_status requires resolution=dismissed.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The latest Autopilot run on this case, or null. Its report is model output: render it as text, never as HTML.
Show child attributes
Show child attributes
dismissed, escalated, paid, explained The client entity the case concerns (screening cases).
"550e8400-e29b-41d4-a716-446655440000"
Counterparty screening cases on one counterparty address or wallet: true when that counterparty entity or wallet account has since been deleted from the register. The case stays open. Absent on other cases.
What the case was opened on. A redemption case carries redemption_id, burn_time and deadline, linking it to GET /v2/redemptions/{id}. An agreement_break case carries declared_gap ({ tape, reason }, or null): when its cause is source_missing, it can be explained only if declared_gap is set. It also carries unverified_by_custodian (boolean): true when the custodian marked the asset unverified, which is information only and never the cause (absent on cases filed before it existed).
Was this page helpful?