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 testinglndr_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 key400 invalid_token— bank data token is expired or malformed400 insufficient_data— lookback window returns fewer than 90 days of transactions429 rate_limit_exceeded— request rate exceeds your tier limit503 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_codesarray on DECLINED responses - Email [email protected] to upgrade from sandbox to production or discuss Growth/Scale plan access