Quickstart Guide

This guide walks you from API key to your first credit decision in under 10 minutes. We'll cover authentication, a minimal decision request, and parsing the response.

Step 1 — Get your API key

Create a Lendiro account to receive your API key. Accounts on the Explorer tier receive a key immediately. Growth and Scale accounts receive keys after a brief integration review.

Your API key has two forms:

  • lndr_sandbox_<key> — sandbox environment, no real bank data, safe for testing
  • lndr_live_<key> — production environment, requires approved integration

Start development with the sandbox key. The sandbox returns realistic mock decisions against synthetic applicant data.

Step 2 — Make your first request

Send a POST request to /v1/decision with your API key in the Authorization header and a JSON body describing the applicant.

Using curl

# Replace YOUR_API_KEY with your sandbox key
curl -X POST https://api.lendirow.com/v1/decision \
  -H "Authorization: Bearer lndr_sandbox_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "applicant_id": "app_test_001",
    "bank_data_token": "tok_sandbox_8xKpR2mN",
    "lookback_months": 24,
    "requested_amount": 2500
  }'

Using Python

import requests

API_KEY = "lndr_sandbox_YOUR_API_KEY"
BASE_URL = "https://api.lendirow.com"

response = requests.post(
    f"{BASE_URL}/v1/decision",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    },
    json={
        "applicant_id": "app_test_001",
        "bank_data_token": "tok_sandbox_8xKpR2mN",
        "lookback_months": 24,
        "requested_amount": 2500,
    }
)

decision = response.json()
print(decision["decision"])       # APPROVED, REVIEW, or DECLINED
print(decision["lendiro_score"])  # 300–850

Step 3 — Parse the response

A successful decision returns HTTP 200 with a JSON body. Here is a sample response from the sandbox:

{
  "request_id": "req_9c4f1a2b",
  "applicant_id": "app_test_001",
  "lendiro_score": 742,
  "decision": "APPROVED",
  "confidence_band": "high",
  "lookback_months": 24,
  "primary_factors": [
    "recurring_payment_consistency",
    "inflow_velocity_trend",
    "low_overdraft_frequency"
  ],
  "adverse_action_codes": [],
  "latency_ms": 847
}

Routing based on decision

decision_value = decision["decision"]

if decision_value == "APPROVED":
    route_to_approval_flow(decision)
elif decision_value == "REVIEW":
    route_to_manual_queue(decision)
elif decision_value == "DECLINED":
    # adverse_action_codes is populated on DECLINED
    generate_adverse_action_notice(
        decision["adverse_action_codes"]
    )

Step 4 — Handle error responses

Non-200 responses follow a standard error envelope:

{
  "error": "invalid_token",
  "message": "The bank_data_token provided has expired or is invalid.",
  "request_id": "req_err_4d2c9f"
}

Common error codes:

  • 401 unauthorized — invalid or missing API key
  • 400 invalid_token — bank data token is expired or malformed
  • 400 insufficient_data — lookback window returns fewer than 90 days of transactions
  • 429 rate_limit_exceeded — request rate exceeds your tier limit
  • 503 service_unavailable — temporary infrastructure issue; retry with exponential backoff

Next steps

You're making decisions. From here:

  • Read the full API reference for batch endpoints, webhook configuration, and all request parameters
  • Configure your score thresholds — the default APPROVED/REVIEW/DECLINED breakpoints can be adjusted per your integration settings
  • Test adverse action notice generation using the adverse_action_codes array on DECLINED responses
  • Email [email protected] to upgrade from sandbox to production or discuss Growth/Scale plan access