API Reference
Base URL for all requests: https://api.lendirow.com
Authentication: pass your API key as a Bearer token in the Authorization header on every request.
POST /v1/decision
Submit a credit decision request for a single applicant. Returns a scored decision with contributing factors in under one second.
Request body
{
"applicant_id": "string", // required · your internal applicant ID
"bank_data_token": "string", // required · open banking token
"lookback_months": 24, // optional · 6, 12, or 24 (default: 24)
"requested_amount": 2500 // optional · loan amount in USD
}
Response — 200 OK
{
"request_id": "string", // unique request identifier
"applicant_id": "string", // echoed from request
"lendiro_score": 300-850, // cash-flow score
"decision": "APPROVED|REVIEW|DECLINED",
"confidence_band": "high|medium|low",
"lookback_months": integer,
"primary_factors": ["string"], // max 5, ranked
"adverse_action_codes": ["string"], // DECLINED only
"latency_ms": integer
}
GET /v1/decision/{id}
Retrieve a previously made decision by its request_id. Decision records are available for 90 days after creation.
Path parameters
request_id— therequest_idvalue returned in the original decision response
Response — 200 OK
Returns the same decision object as POST /v1/decision, plus a created_at timestamp (ISO 8601).
{
"request_id": "req_9c4f1a2b",
"created_at": "2026-06-15T14:32:01Z",
"applicant_id": "app_7f3a9c2b",
"lendiro_score": 742,
"decision": "APPROVED",
"confidence_band": "high",
"primary_factors": ["recurring_payment_consistency", "inflow_velocity_trend"],
"adverse_action_codes": [],
"latency_ms": 847
}
POST /v1/batch
Submit a batch of up to 500 decision requests in a single API call. Asynchronous — returns a batch_id immediately. Results available via webhook or polling on the batch status endpoint.
Available on Growth and Scale tiers only.
Request body
{
"requests": [
{
"applicant_id": "string",
"bank_data_token": "string",
"lookback_months": 24
}
// ... up to 500 items
],
"webhook_url": "https://yourplatform.com/webhooks/lendiro" // optional
}
Response — 202 Accepted
{
"batch_id": "batch_a2f7c1e9",
"status": "queued",
"request_count": 50,
"estimated_completion_ms": 12000
}
GET /v1/status
Returns the current API status, your account's decision quota, and usage for the current billing period.
Response — 200 OK
{
"api_status": "operational",
"account_tier": "growth",
"decisions_used_this_period": 4821,
"decisions_included": 10000,
"period_resets_at": "2026-07-01T00:00:00Z"
}
Error codes
| HTTP status | Error code | Description |
|---|---|---|
| 401 | unauthorized | Missing or invalid API key |
| 400 | invalid_token | bank_data_token is expired or malformed |
| 400 | insufficient_data | Fewer than 90 days of transaction data available |
| 400 | invalid_request | Missing required field or type mismatch |
| 429 | rate_limit_exceeded | Request rate exceeds tier limit; retry after header provided |
| 402 | quota_exceeded | Monthly decision quota exhausted; upgrade or wait for reset |
| 503 | service_unavailable | Temporary infrastructure issue; retry with exponential backoff |
Rate limits
Rate limits are applied per API key per second.
| Tier | Requests per second | Monthly quota |
|---|---|---|
| Explorer | 5 req/s | 500 decisions |
| Growth | 50 req/s | 10,000 decisions |
| Scale | Negotiated | Contracted volume |
When a rate limit is exceeded, the API returns 429 with a Retry-After header indicating seconds until the next request window opens.
Webhooks
Configure a webhook URL on your Growth or Scale account to receive decision events without polling. Lendiro sends a signed POST request to your endpoint for each completed decision or batch.
Webhook payload
{
"event": "decision.completed",
"timestamp": "2026-06-15T14:32:01Z",
"data": {
"request_id": "req_9c4f1a2b",
"applicant_id": "app_7f3a9c2b",
"decision": "APPROVED",
"lendiro_score": 742
}
}
Verify webhook authenticity using the X-Lendiro-Signature header — an HMAC-SHA256 signature of the raw request body using your webhook secret. Configure your webhook URL and retrieve your signing secret in your account dashboard.