curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/statistics/?date_from=2026-06-01&date_to=2026-06-30' \
-H 'x-api-key: YOUR_API_KEY'import requests
url = "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/"
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://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/', 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://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/",
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://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/"
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://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/")
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{
"series": [
{
"date": "2023-12-25",
"created": 123,
"reviewed": 123
}
],
"tables": {
"officer": [
{
"key": "<string>",
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
}
],
"blueprint": [
{
"key": "<string>",
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
}
],
"source": [
{
"key": "<string>",
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
}
],
"status": [
{
"key": "<string>",
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
}
]
},
"totals": {
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
},
"queue": {
"open": 123,
"overdue": 123
}
}Case Analytics
Aggregate case analytics for the date range (defaults to the last 30 days; max 731 days). Charts, tables, totals, assignment events, and current queue counts use the same application-scoped filters. Filters use current case values. Dates apply to each metric event, so older cases assigned or resolved during the period remain included. Queue depth is independent of the date range. Invalid filters return 400; an unknown blueprint or assignee returns an empty result.
curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/statistics/?date_from=2026-06-01&date_to=2026-06-30' \
-H 'x-api-key: YOUR_API_KEY'import requests
url = "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/"
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://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/', 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://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/",
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://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/"
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://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/statistics/")
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{
"series": [
{
"date": "2023-12-25",
"created": 123,
"reviewed": 123
}
],
"tables": {
"officer": [
{
"key": "<string>",
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
}
],
"blueprint": [
{
"key": "<string>",
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
}
],
"source": [
{
"key": "<string>",
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
}
],
"status": [
{
"key": "<string>",
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
}
]
},
"totals": {
"created": 123,
"assigned": 123,
"resolved": 123,
"threat_rate": 123,
"false_positive_rate": 123,
"unresolved": 123,
"reassignment_rate": 123,
"escalation_rate": 123,
"avg_assign_hours": 123,
"avg_resolve_hours": 123,
"avg_handling_hours": 123
},
"queue": {
"open": 123,
"overdue": 123
}
}Related
Authorizations
Path Parameters
Organization UUID.
Application UUID.
Query Parameters
Range start (inclusive). Defaults to 30 days ago.
Range end (inclusive). Defaults to today.
Filter by the current blueprint UUID.
Filter by the current assigned reviewer user UUID.
Filter by current case priority.
LOW, MEDIUM, HIGH Filter by case creation source.
MANUAL, AML_SCREENING, TRANSACTION_RULE, WORKFLOW_BUILDER Filter by current case status.
OPEN, AWAITING_USER, RESOLVED