Skip to content
Request Access

API Reference

Complete reference for the Lendiro v1 REST API. Base URL: https://api.lendirow.com

Endpoints

POST /v1/decisions Submit transaction data for decisioning

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"
}
GET /v1/decisions/{decision_id} Retrieve a prior decision

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 from POST /v1/decisions.

Response — 200 OK

Same structure as POST /v1/decisions response, plus "created_at" timestamp.

POST /v1/adverse-action Generate Reg B adverse action notice content

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_codes array follow the CF-XX naming convention where the number maps to a Reg B adverse action category.
  • The /v1/adverse-action endpoint 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/decisions with date range parameters for regulatory examination.

Error codes

HTTP StatusCodeDescription
400invalid_payloadMalformed request body or missing required fields
400insufficient_dataTransaction history below 6-month minimum
401unauthorizedMissing or invalid API key
403forbiddenIP not on allowlist (if configured)
404not_foundDecision ID not found in your account
429rate_limitedRate limit exceeded — retry after X-RateLimit-Reset
500processing_errorInternal processing error — not billed, safe to retry