LendEasy/DocsLMS + Servicing·v1
Start integrating
RecipesServicingHandle a delinquency case

Handle a delinquency case

Work a Harbor delinquency with the full roster: open the case, brief with Cookie, dispatch Nova on a compliant call, record the promise she negotiated, and export exam-ready evidence.

Time
~12 min
Surface
Servicing Plane
Steps
6
Gate
Consent · quiet hours · contact budget · autonomy
EndpointsPOST /v1/servicing/casesPOST /v1/servicing/tasks/reserve-nextPOST /v1/servicing/cases/{caseId}/cookie/turnsPOST /v1/servicing/voice-dispatchesPOST /v1/servicing/cases/{caseId}/promisesGET /v1/servicing/cases/{caseId}/evidence-export

On May 1, 2027, Harbor is past due — the April 12 installment of $517.14 never arrived. This recipe runs the matter from signal to evidence with the roster doing what it’s for: Cookie briefs, Nova calls, and every boundary applies current-fact policy.

1

Open or deduplicate the matter

Exact dedup
POST/v1/servicing/cases
curl -X POST "$BASE/v1/servicing/cases" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Idempotency-Key: harbor-collections-2027-05-01" \
  -H "Content-Type: application/json" \
  -d '{
    "customerRef": "412",
    "caseTypeCode": "COLLECTIONS",
    "reasonCode": "DELINQUENCY_SIGNAL",
    "priority": "HIGH",
    "loanRefs": ["7204"],
    "sourceType": "LMS_EVENT",
    "sourceRef": "signal-2027-05-01-HBR"
  }'
{
  "caseId": 1001,
  "externalCaseRef": "LE-CASE-1001",
  "status": "OPEN",
  "deduplicated": false,
  "resourceId": 1001
}

Exact-source deduplication means tomorrow’s delinquency signal returns this case instead of creating a daily duplicate.

2

Reserve and accept the work

Atomic
POST/v1/servicing/tasks/reserve-next
curl -X POST "$BASE/v1/servicing/tasks/reserve-next" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Content-Type: application/json" \
  -d '{ "queueCodes": ["COLLECTIONS"] }'
{ "taskId": 2001, "taskTypeCode": "COLLECTIONS_OUTREACH", "queueCode": "COLLECTIONS", "status": "RESERVED", "reservationExpiresAt": "2027-05-01T17:10:00Z" }

Reservation is atomic — two workers can never reserve the same task. POST /v1/servicing/tasks/2001/accept confirms it; releasing or letting the reservation lapse returns the work to the queue.

3

Brief with Cookie

Grounded
POST/v1/servicing/cases/{caseId}/cookie/turns
curl -X POST "$BASE/v1/servicing/cases/1001/cookie/turns" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Idempotency-Key: brief-1001-2027-05-01" \
  -H "Content-Type: application/json" \
  -d '{ "question": "Brief me on this case." }'

Cookie answers with the label AI analysis, citations to the delinquency facts and contact history, and the next safe step — voice outreach is permitted, no restriction or budget blocks it, and the last successful payment was $517.14 on March 12. The brief costs one turn; the payoff and last-payment facts inside it are deterministic reads that never touched a model.

4

Dispatch Nova

Pre-dial re-check
POST/v1/servicing/voice-dispatches
curl -X POST "$BASE/v1/servicing/voice-dispatches" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Idempotency-Key: dispatch-2001-2027-05-01" \
  -H "Content-Type: application/json" \
  -d '{ "taskId": 2001 }'
{ "dispatchId": 6001, "taskId": 2001, "workerCode": "COLLECTIONS_VOICE_PRIMARY", "status": "CREATED" }

Nova redeems her dial authorization at the moment of dial — consent, local time, contact budget, and debt state re-checked against current facts — then works the call inside her packet. On this one, Maya agrees to a two-part commitment: $260.00 by May 8 and $257.14 by May 22. The disposition maps that conversation to typed records: interaction 3001, a promise proposal, and the follow-up work. See Dispatch Nova on a call for the connector detail.

5

Record the promise

No money movement
POST/v1/servicing/cases/1001/promises
curl -X POST "$BASE/v1/servicing/cases/1001/promises" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Idempotency-Key: promise-1001-2027-05-01" \
  -H "Content-Type: application/json" \
  -d '{
    "loanRef": "7204",
    "commitments": [
      { "amount": { "amount": 260.00, "currency": "USD" }, "dueDate": "2027-05-08" },
      { "amount": { "amount": 257.14, "currency": "USD" }, "dueDate": "2027-05-22" }
    ],
    "sourceInteractionId": 3001,
    "borrowerConfirmedAt": "2027-05-01T10:18:42-07:00"
  }'
{
  "promiseId": 5001,
  "caseId": 1001,
  "status": "ACTIVE",
  "guardrailDecision": "WITHIN_POLICY",
  "version": 1
}

An in-guardrail promise records immediately. Out-of-policy terms return an explainable approval requirement — the borrower’s words are never silently clipped to fit policy.

6

Export the evidence

Exam-ready
GET/v1/servicing/cases/1001/evidence-export
curl "$BASE/v1/servicing/cases/1001/evidence-export" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender"

The audited bundle carries the whole chain: the signal, the case, the reservation, Cookie’s cited brief, the pre-dial compliance decision, Nova’s disclosure and script versions, the disposition, and the promise — each edge explicit, none inferred from timestamps.

The promise settles itself. When Maya pays $517.14 in the portal on May 6, event-driven evaluation marks the promise kept from posted facts — see Record a promise-to-pay and Take a payment in the portal.
Unified search across guides, recipes & the API referenceEsc