Update case status, resolution, or assignee
curl --request PATCH \
--url https://api.range.org/v2/cases/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"resolution": "dismissed",
"assignee": "compliance@example.com"
}
'import requests
url = "https://api.range.org/v2/cases/{id}"
payload = {
"resolution": "dismissed",
"assignee": "compliance@example.com"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({resolution: 'dismissed', assignee: 'compliance@example.com'})
};
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 => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'resolution' => 'dismissed',
'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/{id}"
payload := strings.NewReader("{\n \"resolution\": \"dismissed\",\n \"assignee\": \"compliance@example.com\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.range.org/v2/cases/{id}")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"resolution\": \"dismissed\",\n \"assignee\": \"compliance@example.com\"\n}")
.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::Patch.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resolution\": \"dismissed\",\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
Update case status, resolution, or assignee
PATCH
/
v2
/
cases
/
{id}
Update case status, resolution, or assignee
curl --request PATCH \
--url https://api.range.org/v2/cases/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"resolution": "dismissed",
"assignee": "compliance@example.com"
}
'import requests
url = "https://api.range.org/v2/cases/{id}"
payload = {
"resolution": "dismissed",
"assignee": "compliance@example.com"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({resolution: 'dismissed', assignee: 'compliance@example.com'})
};
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 => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'resolution' => 'dismissed',
'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/{id}"
payload := strings.NewReader("{\n \"resolution\": \"dismissed\",\n \"assignee\": \"compliance@example.com\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.range.org/v2/cases/{id}")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"resolution\": \"dismissed\",\n \"assignee\": \"compliance@example.com\"\n}")
.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::Patch.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resolution\": \"dismissed\",\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.
Path Parameters
The case id (uuid).
Body
application/json
Response
200 - 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?