Skip to content

Cases API

Case management, interactions, supercases, campaigns, and pre-delinquency rules.

Base permission: IsViewerOrAbove (read), IsCollectorOrAbove (write)

Cases

Method Path Description Permission
GET /cases List all cases IsViewerOrAbove
GET /cases/{id} Get case IsViewerOrAbove
POST /cases Create case IsCollectorOrAbove
PUT /cases/{id} Update case IsCollectorOrAbove
DELETE /cases/{id} Archive case IsCollectorOrAbove
POST /cases/{id}/escalate Escalate case IsCollectorOrAbove
POST /cases/{id}/close Close case IsCollectorOrAbove
POST /cases/{id}/reopen Reopen case IsCollectorOrAbove
POST /cases/{id}/snooze Snooze case IsCollectorOrAbove
POST /cases/{id}/unsnooze Unsnooze case IsCollectorOrAbove

Nested by Borrower/Loan

Method Path Description
GET /borrowers/{id}/cases List borrower's cases
POST /borrowers/{id}/cases Create case for borrower
GET /loans/{id}/cases List loan's cases
POST /loans/{id}/cases Create case for loan

Create Case

POST /api/v1/cases
{
  "borrower_id": "550e8400-e29b-41d4-a716-446655440000",
  "loan_id": "661f9511-f3ac-52e5-b827-557766551111",
  "case_type": "complaint",
  "priority": "high",
  "subject": "Billing dispute - January payment",
  "description": "Borrower reports payment was made but not reflected on statement"
}

Case Types

Type Description
general General inquiry or task
complaint Customer complaint
dispute Payment or billing dispute

Case Lifecycle

open → in_progress → escalated → closed
                   → snoozed → (wake up) → in_progress
       ↘ closed
closed → (reopen) → open

Escalate Case

POST /api/v1/cases/{id}/escalate
{
  "reason": "Requires supervisor review",
  "escalate_to_user_id": "..."
}

Snooze Case

Temporarily pause a case with automatic wake-up.

POST /api/v1/cases/{id}/snooze
{
  "snooze_until": "2026-01-20T09:00:00Z",
  "reason": "Waiting for borrower callback"
}

SLA Tracking

Cases track SLA compliance:

{
  "id": "...",
  "priority": "high",
  "sla_due_at": "2026-01-16T14:30:00Z",
  "sla_breached": false,
  "time_to_first_response": null,
  "time_to_resolution": null
}

Interactions

Record individual interactions with borrowers.

Method Path Description Permission
GET /interactions List all interactions IsViewerOrAbove
GET /interactions/{id} Get interaction IsViewerOrAbove
POST /interactions Create interaction IsCollectorOrAbove
PUT /interactions/{id} Update interaction IsCollectorOrAbove
GET /borrowers/{id}/interactions List borrower's interactions IsViewerOrAbove

Create Interaction

POST /api/v1/interactions
{
  "borrower_id": "...",
  "case_id": "...",
  "direction": "outbound",
  "channel": "phone",
  "interaction_type": "call",
  "theme": "collections",
  "transcript": "Called borrower regarding past-due payment. Borrower agreed to pay by Friday.",
  "duration_seconds": 180
}

Do-Not-Interact Rules

Per-borrower rules that block specific interaction channels.

Method Path Description Permission
GET /do-not-interact List rules IsViewerOrAbove
GET /do-not-interact/{id} Get rule IsViewerOrAbove
POST /do-not-interact Create rule IsCollectorOrAbove
PUT /do-not-interact/{id} Update rule IsCollectorOrAbove
DELETE /do-not-interact/{id} Delete rule IsCollectorOrAbove

Supercases

Group multiple cases for bulk management.

Method Path Description Permission
GET /supercases List supercases IsViewerOrAbove
GET /supercases/{id} Get supercase IsViewerOrAbove
POST /supercases Create supercase IsAdminOrAbove
PUT /supercases/{id} Update supercase IsAdminOrAbove
POST /supercases/{id}/add-cases Add cases to supercase IsAdminOrAbove
POST /supercases/{id}/bulk-action Apply action to all cases IsAdminOrAbove

Populations

Define populations of borrowers for supercase targeting.

Method Path Description Permission
POST /supercases/{id}/populations Create population IsAdminOrAbove
GET /supercases/{id}/populations List populations IsViewerOrAbove
POST /supercases/{id}/populations/{pop_id}/preview Preview matching borrowers IsAdminOrAbove
POST /supercases/{id}/populations/{pop_id}/commit Commit (create cases) IsAdminOrAbove

Campaigns

Mass outreach campaigns with communication tracking.

Method Path Description Permission
GET /campaigns List campaigns IsViewerOrAbove
GET /campaigns/{id} Get campaign IsViewerOrAbove
POST /campaigns Create campaign IsAdminOrAbove
PUT /campaigns/{id} Update campaign IsAdminOrAbove
POST /campaigns/{id}/launch Launch campaign IsAdminOrAbove
POST /campaigns/{id}/pause Pause campaign IsAdminOrAbove

Create Campaign

POST /api/v1/campaigns
{
  "name": "Q1 Retention Outreach",
  "template_id": "...",
  "channel": "email",
  "filter_criteria": {
    "delinquency_bucket": "dpd_1_29",
    "program_id": "..."
  },
  "scheduled_date": "2026-02-01"
}

Pre-Delinquency Rules

Early warning rules that trigger actions before delinquency occurs.

Method Path Description Permission
GET /pre-delinquency-rules List rules IsViewerOrAbove
GET /pre-delinquency-rules/{id} Get rule IsViewerOrAbove
POST /pre-delinquency-rules Create rule IsAdminOrAbove
PUT /pre-delinquency-rules/{id} Update rule IsAdminOrAbove
DELETE /pre-delinquency-rules/{id} Delete rule IsAdminOrAbove

See Also