LendEasy/DocsLMS + Servicing·v1
Start integrating
RecipesServicingWork a case with Cookie

Work a case with Cookie

Ask for a verified fact that never touches a model, have Cookie prepare a validated follow-up, and confirm it under your own authority — with the AI's contribution cited, not hidden.

Time
~5 min
Surface
Servicing Plane
Steps
3
Gate
Case scope · proposal expiry · your permissions
EndpointsPOST /v1/servicing/cases/{caseId}/cookie/turnsPOST /v1/servicing/cases/{caseId}/follow-up-tasks
1

Ask for a fact

No model call
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: turn-1001-last-payment" \
  -H "Content-Type: application/json" \
  -d '{ "question": "When was the last successful payment?" }'
{
  "turnId": 5001,
  "threadId": 501,
  "answer": {
    "family": "LAST_SUCCESSFUL_PAYMENT",
    "kind": "VERIFIED_FACT",
    "text": "The last successful payment was $517.14, effective March 12, 2027, posted the same day.",
    "sourceRefs": [{ "type": "LMS_PAYMENT", "ref": "9013" }],
    "asOf": "2027-05-01T16:55:02Z"
  }
}

The question classifies into a closed family and answers directly from the system of record — no provider call, no synthesis, available even when the model is down. The label says exactly what you’re holding: a verified fact with its source and as-of time.

2

Have Cookie prepare the follow-up

Prepared, not done
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: turn-1001-prepare-followup" \
  -H "Content-Type: application/json" \
  -d '{ "question": "Prepare a follow-up task to check the promise after its first commitment date." }'
{
  "turnId": 5002,
  "threadId": 501,
  "answer": {
    "family": "PREPARE_FOLLOW_UP_TASK",
    "kind": "PROPOSED_ACTION",
    "proposal": {
      "proposalRef": "prop-1001-7Q2",
      "taskTypeCode": "PROMISE_FOLLOW_UP",
      "dueAt": "2027-05-09T16:00:00Z",
      "priority": "MEDIUM",
      "summary": "Verify first promise commitment ($260.00 due May 8) against posted payments.",
      "expiresAt": "2027-05-01T17:25:02Z"
    }
  }
}

Preparation resolves the allowed task types, queues, and due-date rules server-side and validates the whole proposal against current facts. The label is PROPOSED_ACTION — nothing has changed business state, and the proposal expires rather than lingering until it’s stale.

3

Confirm under your own authority

Your authority, not Cookie's
POST/v1/servicing/cases/1001/follow-up-tasks
curl -X POST "$BASE/v1/servicing/cases/1001/follow-up-tasks" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender" \
  -H "Idempotency-Key: confirm-prop-1001-7Q2" \
  -H "Content-Type: application/json" \
  -d '{ "proposalRef": "prop-1001-7Q2" }'
{ "taskId": 2005, "taskTypeCode": "PROMISE_FOLLOW_UP", "status": "OPEN", "dueAt": "2027-05-09T16:00:00Z" }

The command is the ordinary task-creation operation, run under your exact permissions — confirmation revalidates the proposal against current facts, and a stale or expired one is refreshed, never submitted as-was. The audit record names you as the submitter and cites Cookie’s session as the cause: the AI’s contribution is visible, not laundered into a human action.

i
Cookie never climbs the ladder on its own. Answers, drafts, and preparation are its ceiling — submission is always a human’s explicit act. The full contract is on Cookie’s page.
Unified search across guides, recipes & the API referenceEsc