Cases API
Read case status, intake events, and decision-ready handoff packages
Case reads expose Klarefi's current case record. Use them when your system needs current data; use webhooks as notifications that a read may be useful.
GET /api/v1/cases/{caseId}
Required scope: cases:read
curl "$KLAREFI_API_BASE_URL/api/v1/cases/case_abc123" \
-H "Authorization: Bearer $KLAREFI_API_KEY"The response shape follows the configured workflow and case projection. Unknown fields should be ignored.
{
"case_id": "case_abc123",
"org_id": "org_xyz",
"status": "needs_review",
"features": {
"incident_date": {
"decision": {
"decision_id": "dec_001",
"decision": "keep",
"selected_candidate_id": "cand_001"
},
"candidates": [
{
"candidate_id": "cand_001",
"value_raw": "3 februari 2023",
"value_normalized": "2023-02-03",
"evidence_ids": ["ev_001"]
}
],
"evidence": [
{
"evidence_id": "ev_001",
"doc_id": "doc_def456",
"page_index": 0,
"location": { "char_start": 142, "char_end": 158 },
"quote": "3 februari 2023",
"method": "born_digital_text"
}
]
}
}
}GET /api/v1/cases/{caseId}/events
Required scope: cases:read
curl "$KLAREFI_API_BASE_URL/api/v1/cases/case_abc123/events?after_cursor=0" \
-H "Authorization: Bearer $KLAREFI_API_KEY"{
"case_id": "case_abc123",
"events": [
{
"event_id": "evt_001",
"event_type": "document.uploaded",
"cursor": 1,
"created_at": "2026-01-15T10:30:00.000Z"
}
],
"next_cursor": 1
}Store next_cursor and pass it as after_cursor on the next poll.
GET /api/v1/cases/{caseId}/package
Required scope: cases:read
curl "$KLAREFI_API_BASE_URL/api/v1/cases/case_abc123/package" \
-H "Authorization: Bearer $KLAREFI_API_KEY"{
"case_id": "case_abc123",
"case_file_url": "https://app.klarefi.com/case-file/case_abc123?token=...",
"facts": {},
"documents": []
}case_file_url may be null if a signed case-file link cannot be created for
the deployment.