API Reference
Complete reference for the Lendiro v1 REST API. Base URL: https://api.lendirow.com
Endpoints
Submit a normalized transaction payload to receive a cash-flow decision score, signal breakdown, and adverse action reason codes.
Request body
{
"applicant_ref": "string", // Required. Your internal applicant ID
"lookback_months": 24, // Optional. 6–24. Default 24
"transactions": [...array], // Required. See Data Model
"requested_loan": { // Optional. For DTI context
"amount": number,
"term_months": number
}
}
Response — 200 OK
{
"decision_id": "dec_xxxxxxxx",
"score": 0-100, // 0 = weakest, 100 = strongest
"recommendation": "approve|review|decline",
"reason_codes": ["CF-01", ...], // Reg B–mapped codes
"signals": {
"income_consistency": 0.0-1.0,
"expense_discipline": 0.0-1.0,
"liquidity_cushion": 0.0-1.0,
"payment_reliability": 0.0-1.0
},
"data_freshness": { ... },
"model_version": "string",
"audit_log_ref": "string"
}
Retrieve any previously made decision by its ID. Useful for display in underwriter queues or audit log retrieval.
Path parameters
decision_id— Required. The decision ID returned fromPOST /v1/decisions.
Response — 200 OK
Same structure as POST /v1/decisions response, plus "created_at" timestamp.
Given a decision ID and an adverse action flag, returns plain-English reason statements mapped to Regulation B adverse action notice categories. Use these statements in your consumer adverse action notices.
Request body
{
"decision_id": "dec_xxxxxxxx", // Required
"applicant_ref": "string", // Required
"action_taken": "adverse" // Required. Currently: "adverse"
}
Response — 200 OK
{
"notice_id": "notice_xxxxxxxx",
"action_taken": "Credit denied",
"reason_statements": [
"Insufficient length of income history",
"Insufficient evidence of recurring income"
],
"reg_b_codes": ["CF-01", "CF-04"],
"generated_at": "ISO 8601 timestamp"
}
Webhooks
Register a webhook URL to receive decision results asynchronously. Suitable for high-volume origination pipelines where synchronous waiting is impractical.
Registering a webhook
curl -X POST https://api.lendirow.com/v1/webhooks \
-H "Authorization: Bearer lndr_live_sk_xxxxxxxx" \
-d '{
"url": "https://your-los.example.com/webhooks/lendiro",
"events": ["decision.complete", "decision.failed"]
}'
Payload verification
All webhook deliveries include an X-Lendiro-Signature header containing an HMAC-SHA256 signature of the payload body using your webhook signing secret. Verify this signature before processing the payload.
Compliance Integration Guide
See Compliance page for the full regulatory context. Technical notes:
- Reason codes in the
reason_codesarray follow theCF-XXnaming convention where the number maps to a Reg B adverse action category. - The
/v1/adverse-actionendpoint generates consumer-facing language — review and adapt to your institution's adverse action notice template before sending to applicants. - Decision audit logs are exportable via
GET /v1/decisionswith date range parameters for regulatory examination.
Error codes
| HTTP Status | Code | Description |
|---|---|---|
| 400 | invalid_payload | Malformed request body or missing required fields |
| 400 | insufficient_data | Transaction history below 6-month minimum |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | IP not on allowlist (if configured) |
| 404 | not_found | Decision ID not found in your account |
| 429 | rate_limited | Rate limit exceeded — retry after X-RateLimit-Reset |
| 500 | processing_error | Internal processing error — not billed, safe to retry |