Create a case (manual)
curl --request POST \
--url https://api.range.org/v2/cases \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"subject": {
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
"network": "ethereum",
"tx_hash": "0xabc...",
"name": "<string>"
},
"source_id": "<string>",
"title": "High-risk address detected: 0x742d...bD28",
"assignee": "compliance@example.com"
}
'import requests
url = "https://api.range.org/v2/cases"
payload = {
"subject": {
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
"network": "ethereum",
"tx_hash": "0xabc...",
"name": "<string>"
},
"source_id": "<string>",
"title": "High-risk address detected: 0x742d...bD28",
"assignee": "compliance@example.com"
}
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({
subject: {
address: '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28',
network: 'ethereum',
tx_hash: '0xabc...',
name: '<string>'
},
source_id: '<string>',
title: 'High-risk address detected: 0x742d...bD28',
assignee: 'compliance@example.com'
})
};
fetch('https://api.range.org/v2/cases', 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",
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([
'subject' => [
'address' => '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28',
'network' => 'ethereum',
'tx_hash' => '0xabc...',
'name' => '<string>'
],
'source_id' => '<string>',
'title' => 'High-risk address detected: 0x742d...bD28',
'assignee' => 'compliance@example.com'
]),
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.range.org/v2/cases"
payload := strings.NewReader("{\n \"subject\": {\n \"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28\",\n \"network\": \"ethereum\",\n \"tx_hash\": \"0xabc...\",\n \"name\": \"<string>\"\n },\n \"source_id\": \"<string>\",\n \"title\": \"High-risk address detected: 0x742d...bD28\",\n \"assignee\": \"compliance@example.com\"\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.range.org/v2/cases")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": {\n \"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28\",\n \"network\": \"ethereum\",\n \"tx_hash\": \"0xabc...\",\n \"name\": \"<string>\"\n },\n \"source_id\": \"<string>\",\n \"title\": \"High-risk address detected: 0x742d...bD28\",\n \"assignee\": \"compliance@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/cases")
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 \"subject\": {\n \"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28\",\n \"network\": \"ethereum\",\n \"tx_hash\": \"0xabc...\",\n \"name\": \"<string>\"\n },\n \"source_id\": \"<string>\",\n \"title\": \"High-risk address detected: 0x742d...bD28\",\n \"assignee\": \"compliance@example.com\"\n}"
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,
"available_actions": [
{
"id": "set_status",
"label": "<string>",
"kind": "select",
"options": [
"open"
]
}
],
"comments": [
{
"id": "<string>",
"author": "analyst@range.org",
"body": "<string>",
"created_at": "<string>"
}
],
"resolution": "dismissed",
"source_id": "<string>",
"assignee": "<string>",
"created_by": "<string>",
"resolved_at": "<string>",
"evidence_summary": {}
}Cases
Create a case (manual)
POST
/
v2
/
cases
Create a case (manual)
curl --request POST \
--url https://api.range.org/v2/cases \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"subject": {
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
"network": "ethereum",
"tx_hash": "0xabc...",
"name": "<string>"
},
"source_id": "<string>",
"title": "High-risk address detected: 0x742d...bD28",
"assignee": "compliance@example.com"
}
'import requests
url = "https://api.range.org/v2/cases"
payload = {
"subject": {
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
"network": "ethereum",
"tx_hash": "0xabc...",
"name": "<string>"
},
"source_id": "<string>",
"title": "High-risk address detected: 0x742d...bD28",
"assignee": "compliance@example.com"
}
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({
subject: {
address: '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28',
network: 'ethereum',
tx_hash: '0xabc...',
name: '<string>'
},
source_id: '<string>',
title: 'High-risk address detected: 0x742d...bD28',
assignee: 'compliance@example.com'
})
};
fetch('https://api.range.org/v2/cases', 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",
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([
'subject' => [
'address' => '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28',
'network' => 'ethereum',
'tx_hash' => '0xabc...',
'name' => '<string>'
],
'source_id' => '<string>',
'title' => 'High-risk address detected: 0x742d...bD28',
'assignee' => 'compliance@example.com'
]),
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.range.org/v2/cases"
payload := strings.NewReader("{\n \"subject\": {\n \"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28\",\n \"network\": \"ethereum\",\n \"tx_hash\": \"0xabc...\",\n \"name\": \"<string>\"\n },\n \"source_id\": \"<string>\",\n \"title\": \"High-risk address detected: 0x742d...bD28\",\n \"assignee\": \"compliance@example.com\"\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.range.org/v2/cases")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"subject\": {\n \"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28\",\n \"network\": \"ethereum\",\n \"tx_hash\": \"0xabc...\",\n \"name\": \"<string>\"\n },\n \"source_id\": \"<string>\",\n \"title\": \"High-risk address detected: 0x742d...bD28\",\n \"assignee\": \"compliance@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.range.org/v2/cases")
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 \"subject\": {\n \"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28\",\n \"network\": \"ethereum\",\n \"tx_hash\": \"0xabc...\",\n \"name\": \"<string>\"\n },\n \"source_id\": \"<string>\",\n \"title\": \"High-risk address detected: 0x742d...bD28\",\n \"assignee\": \"compliance@example.com\"\n}"
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,
"available_actions": [
{
"id": "set_status",
"label": "<string>",
"kind": "select",
"options": [
"open"
]
}
],
"comments": [
{
"id": "<string>",
"author": "analyst@range.org",
"body": "<string>",
"created_at": "<string>"
}
],
"resolution": "dismissed",
"source_id": "<string>",
"assignee": "<string>",
"created_by": "<string>",
"resolved_at": "<string>",
"evidence_summary": {}
}Authorizations
AuthorizationAuthorization
Authorization method required to allow user to access the api endpoints.
Body
application/json
Available options:
risk_screen, sanctions_screen, alert_event, manual, regulatory_filing Show child attributes
Show child attributes
Required for risk_screen and alert_event (screen_id / event_id).
Maximum string length:
256Maximum string length:
200Example:
"High-risk address detected: 0x742d...bD28"
Required when source_type is manual; inherited from the source otherwise.
Available options:
severe, high, medium, low Example:
"compliance@example.com"
Response
201 - application/json
Available options:
open, in_review, resolved Available options:
severe, high, medium, low Available options:
risk_screen, sanctions_screen, alert_event, manual, regulatory_filing Show child attributes
Show child attributes
Whether the calling user has opened this case before.
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
Available options:
dismissed, escalated Last modified on October 2, 2026
Was this page helpful?