Case Management
When a screening returns REVIEW_REQUIRED, create a case for your compliance team to investigate.
Case Lifecycle
┌──────┐ ┌───────────┐ ┌──────────────────┐ ┌────────┐
│ OPEN │────▶│ IN_REVIEW │────▶│ PENDING_APPROVAL │────▶│ CLOSED │
└──────┘ └─────┬─────┘ └──────────────────┘ └────────┘
│
▼
┌───────────┐
│ ESCALATED │
└───────────┘
Create a Case
Create a case linked to a screening result:
- cURL
- Python
curl -X POST https://api.korastratum.com/api/v1/cases \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"screening_id": "scr_abc123",
"subject_id": "subj_def456",
"priority": "HIGH",
"notes": "PEP match found — requires senior analyst review"
}'
response = requests.post(
f"{BASE_URL}/cases",
headers=HEADERS,
json={
"screening_id": "scr_abc123",
"subject_id": "subj_def456",
"priority": "HIGH",
"notes": "PEP match found — requires senior analyst review",
},
)
case = response.json()
print(f"Case ID: {case['case_id']}, Status: {case['status']}")
Response:
{
"case_id": "cas_abc123",
"screening_id": "scr_abc123",
"subject_id": "subj_def456",
"status": "OPEN",
"priority": "HIGH",
"notes": "PEP match found — requires senior analyst review",
"created_at": "2025-06-01T12:00:00Z"
}
Assign a Case
Assign the case to a compliance analyst:
curl -X PUT https://api.korastratum.com/api/v1/cases/cas_abc123/assign \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"assigned_to": "analyst@yourcompany.com"
}'
Add Case Events
Log investigation activity on a case:
curl -X POST https://api.korastratum.com/api/v1/cases/cas_abc123/activities \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"type": "NOTE",
"content": "Contacted customer to verify identity. Awaiting response."
}'
Add Attachments
Attach supporting documents to a case:
curl -X POST https://api.korastratum.com/api/v1/cases/cas_abc123/attachments \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "customer_passport.pdf",
"type": "DOCUMENT",
"url": "https://your-storage.com/docs/passport.pdf"
}'
Escalate a Case
Escalate to a senior reviewer when needed:
curl -X PUT https://api.korastratum.com/api/v1/cases/cas_abc123/escalate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"reason": "Potential sanctions match requires MLRO review",
"escalated_to": "mlro@yourcompany.com"
}'
Dispose a Case
Set the final disposition when the investigation is complete:
curl -X PUT https://api.korastratum.com/api/v1/cases/cas_abc123/disposition \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"disposition": "FALSE_POSITIVE",
"reason": "Name similarity but different date of birth and nationality confirmed"
}'
Disposition types:
| Disposition | Description |
|---|---|
TRUE_POSITIVE | Confirmed match — take action (block, report) |
FALSE_POSITIVE | Not a real match — safe to proceed |
ESCALATED | Requires further investigation at a higher level |
NO_ACTION_REQUIRED | Reviewed and determined no action needed |
Record a Decision Override
Override the automated decision with a manual decision and audit trail:
curl -X POST https://api.korastratum.com/api/v1/cases/cas_abc123/override \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"original_decision": "BLOCK",
"new_decision": "APPROVE_WITH_MONITORING",
"reason": "False positive confirmed by senior analyst. Customer cleared with enhanced monitoring.",
"approved_by": "mlro@yourcompany.com"
}'
List and Filter Cases
# List all open cases
curl "https://api.korastratum.com/api/v1/cases?status=OPEN" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"
# List escalated high-priority cases
curl "https://api.korastratum.com/api/v1/cases?status=ESCALATED&priority=HIGH" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"
Webhook Events
Case lifecycle events are delivered via webhook:
| Event | Trigger |
|---|---|
case.created | New case created |
case.updated | Case details changed |
case.assigned | Case assigned to analyst |
case.escalated | Case escalated |
case.closed | Case disposed and closed |
case.reopened | Closed case reopened |