Underwriting Intelligence for Developers

Simple JSON API to turn loan documents into underwriting intelligence. Upload directly and get structured JSON and audit trails in minutes (Google Drive sync add-on available).

See It In Action

Send documents, get intelligence in under 3 minutes

Submit Documents via API

Request
curl -X POST https://api.loanintelligence.ai/api/v1/process \
  -H "Authorization: Bearer li_live_abc123..." \
  -F "documents=@loan_application.pdf" \
  -F "documents=@bank_statement.pdf" \
  -F "[email protected]"

Receive Complete Dashboard

All extracted data, calculations, and underwriting assessment:
Response Dashboard
{
  "statusUrl": "https://api.loanintelligence.ai/api/v1/jobs/job_abc123",
  "downloadUrl": "https://api.loanintelligence.ai/api/v1/jobs/job_abc123/report",
  "accessToken": "eyJhbGciOiJIUzI1NiIs...",
  "customerKey": "Rq7xK... (save securely)",
  "status": "queued",
  "estimatedCompletion": "2025-11-21T10:05:00Z",
  "expiresAt": "2025-11-23T10:00:00Z",
  "report": {
    "onDemand": true,
    "downloadUrl": "https://api.loanintelligence.ai/api/v1/jobs/job_abc123/report",
    "expiresAt": "2025-11-23T10:00:00Z"
  },
  "security": {
    "encrypted": true,
    "algorithm": "aes-256-gcm",
    "warning": "Use accessToken + X-Customer-Key to fetch status and download"
  }
}

Quick Start

Get started in 3 simple steps

1

Get Your API Key

Sign up via Stripe and receive your API key instantly. No sales calls, no contracts.

2

Upload Documents

POST your loan documents (any format: PDF, Word, Excel, images) to our processing endpoint.

3

Receive JSON

Get structured loan data with financial calculations and risk analysis in minutes.

Authentication

All API requests require an API key passed via the Authorization header.

Example Request

Authorization Header
Authorization: Bearer li_live_abc123xyz...

API keys start with li_live_ (production) or li_test_ (sandbox)

Keep your API key secure. Never expose it in client-side code or public repositories.

API Endpoints

POST/api/v1/process

Process Documents

Upload loan documents and receive structured underwriting intelligence.

Parameters

documentsFile[]Required

Loan documents in any format: PDF, Word, Excel, or images (max 50MB each, max 20 files per request)

propertyNamestringOptional

Property identifier (defaults to auto-detected address)

Response

Returns comprehensive loan intelligence including borrower info, property details, financial calculations, and risk analysis.

POST /api/v1/process -> 200 OK
{
  "statusUrl": "https://api.loanintelligence.ai/api/v1/jobs/job_abc123",
  "downloadUrl": "https://api.loanintelligence.ai/api/v1/jobs/job_abc123/report",
  "accessToken": "eyJhbGciOiJIUzI1NiIs...",
  "customerKey": "Rq7xK... (save securely)",
  "status": "queued",
  "estimatedCompletion": "2025-11-21T10:05:00Z",
  "expiresAt": "2025-11-23T10:00:00Z",
  "report": {
    "onDemand": true,
    "downloadUrl": "https://api.loanintelligence.ai/api/v1/jobs/job_abc123/report",
    "expiresAt": "2025-11-23T10:00:00Z"
  },
  "security": {
    "encrypted": true,
    "algorithm": "aes-256-gcm",
    "warning": "Use accessToken + X-Customer-Key to fetch status and download"
  }
}
GET/api/v1/health

Health Check

Check API availability. No authentication required.

GET /api/v1/health -> 200 OK
{
  "status": "healthy",
  "service": "ldis-api",
  "timestamp": "2025-11-08T12:00:00Z",
  "version": "2.2.0"
}

Code Examples

Integration examples in multiple languages

cURL

example.sh
curl -X POST https://api.loanintelligence.ai/api/v1/process \
  -H "Authorization: Bearer li_live_abc123..." \
  -F "documents=@loan_application.pdf" \
  -F "documents=@bank_statement.pdf" \
  -F "[email protected]"

JavaScript

upload.js
const FormData = require('form-data');
const fs = require('fs');
const axios = require('axios');

const form = new FormData();
form.append('documents', fs.createReadStream('loan_application.pdf'));
form.append('documents', fs.createReadStream('bank_statement.pdf'));
form.append('propertyName', '123 Easy St');

const response = await axios.post(
  'https://api.loanintelligence.ai/api/v1/process',
  form,
  {
    headers: {
      'Authorization': 'Bearer li_live_abc123...',
      ...form.getHeaders()
    }
  }
);

console.log(response.data.dashboard);

Python

upload.py
import requests

files = [
    ('documents', open('loan_application.pdf', 'rb')),
    ('documents', open('bank_statement.pdf', 'rb')),
    ('documents', open('appraisal.pdf', 'rb'))
]

data = {'propertyName': '123 Easy St'}

response = requests.post(
    'https://api.loanintelligence.ai/api/v1/process',
    headers={'Authorization': 'Bearer li_live_abc123...'},
    files=files,
    data=data
)

dashboard = response.json()['dashboard']
print(f"Borrower: {dashboard['loanInfo']['borrowerInfo']['borrowerName']}")
print(f"Property: {dashboard['loanInfo']['propertyInfo']['address']}")
print(f"DSCR: {dashboard['loanInfo']['loanCalculations']['debtServiceCoverageRatio']}")

Error Codes

Common error responses

Error Response Format

Error Response
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "Account is out of credits. Add more credits to continue.",
    "sessionId": "req_abc123"
  }
}

Start Processing Loans Today

Turn every loan package into complete underwriting intelligence in under three minutes.

Instant activation. No setup fees. Cancel anytime.