Request
curl https://sandbox.api.lendeasy.ai /v1/servicing/admin/hardship-policies/$PROGRAM_CODE \
-H "Authorization: Bearer $TOKEN" \
-H "LendEasy-Tenant: $TENANT" await fetch(`https://sandbox.api.lendeasy.ai /v1/servicing/admin/hardship-policies/${programCode}` , {
method: "GET" ,
headers: { Authorization: `Bearer ${token}` , "LendEasy-Tenant" : tenant },
});requests.get(
f"https://sandbox.api.lendeasy.ai /v1/servicing/admin/hardship-policies/{program_code}" ,
headers={"Authorization" : f"Bearer {token}" , "LendEasy-Tenant" : tenant},
)200 400 401 403 404
{
"programCode": "MEDICAL_LEAVE_DEFERRAL_V1",
"displayName": "Medical Leave Deferral",
"hardshipReasonCode": "MEDICAL_LEAVE",
"description": "Defers the loan-repayment portion of scheduled payments to maturity during documented temporary medical leave.",
"commonGuardrails": {
"version": 2 ,
"activatedAt": "2026-07-01T09: 00 :00Z",
"guardrails": {
"guardrailVersion": 2 ,
"minimumLoanAgeInstallments": 1 ,
"maximumActiveHardshipCasesPerLoan": 1 ,
"requireVerifiedContactForOffer": true ,
"requireWorkflowConfirmedEvidence": true ,
"prohibitPrincipalForgiveness": true ,
"prohibitRateChange": true ,
"specialistConditions": [
"BANKRUPTCY",
"LITIGATION",
"FRAUD_INVESTIGATION",
"DECEASED",
"LEGAL_HOLD",
"RECOVERY_PLACEMENT"
],
"offerValidityHoursMaximum": 168 ,
"documentDeadlineHoursMaximum": 504 ,
"maximumDeferredPayments": 6 ,
"reevaluateOnMaterialLoanDrift": true
}
},
"versions": [
{
"versionId": 9302 ,
"version": 2 ,
"status": "VALIDATED",
"definitionDigest": "8c1f6a2d9b304e57",
"effectiveFrom": null ,
"effectiveTo": null ,
"reason": "Extends the arrears eligibility rule from 90 to 120 days overdue.",
"createdAt": "2026-07-20T10: 00 :00Z",
"validatedAt": "2026-07-21T09: 30 :00Z",
"activatedAt": null ,
"retiredAt": null ,
"expectedVersion": 2 ,
"simulationCount": 1 ,
"validation": {
"valid": true ,
"findings": []
}
},
{
"versionId": 9301 ,
"version": 1 ,
"status": "ACTIVE",
"definitionDigest": "5d20c7e1a94f6b83",
"effectiveFrom": "2026-01-01",
"effectiveTo": null ,
"reason": "Seeded lender-approved medical-leave deferral policy.",
"createdAt": "2026-01-01T00: 00 :00Z",
"validatedAt": "2026-01-01T00: 00 :00Z",
"activatedAt": "2026-01-01T00: 00 :00Z",
"retiredAt": null ,
"expectedVersion": 1 ,
"simulationCount": 2
}
],
"audit": [
{
"version": 2 ,
"operation": "VALIDATE",
"outcome": "ACCEPTED",
"reason": "The version validates",
"actorType": "HUMAN",
"actorRef": "4101",
"occurredAt": "2026-07-21T09: 30 :00Z"
},
{
"version": 2 ,
"operation": "DRAFT",
"outcome": "ACCEPTED",
"reason": "Extends the arrears eligibility rule from 90 to 120 days overdue.",
"actorType": "HUMAN",
"actorRef": "4101",
"occurredAt": "2026-07-20T10: 00 :00Z"
}
]
}{
"developerMessage": "Request was understood but rejected; inspect errors for field-level causes.",
"httpStatusCode": "400",
"defaultUserMessage": "The request could not be applied.",
"userMessageGlobalisationCode": "validation.msg.validation.errors.exist",
"errors": []
}{
"developerMessage": "Request was understood but rejected; inspect errors for field-level causes.",
"httpStatusCode": "401",
"defaultUserMessage": "The request could not be applied.",
"userMessageGlobalisationCode": "error.msg.not.authenticated",
"errors": []
}{
"developerMessage": "Request was understood but rejected; inspect errors for field-level causes.",
"httpStatusCode": "403",
"defaultUserMessage": "The request could not be applied.",
"userMessageGlobalisationCode": "error.msg.not.authorized",
"errors": []
}{
"developerMessage": "Request was understood but rejected; inspect errors for field-level causes.",
"httpStatusCode": "404",
"defaultUserMessage": "The request could not be applied.",
"userMessageGlobalisationCode": "error.msg.resource.not.found",
"errors": []
}