API Reference

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.

Case lifecycle

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.

On this page