Support/API Documentation

API Documentation

Integrate Loan Intel data into your workflows. Programmatic access to loan book management, payment monitoring, company search, and market intelligence.

Getting Started

Authentication

All API requests require a JWT bearer token. Obtain your token via POST /auth/login and include it in every request header:

Authorization: Bearer <token>

Base URL

All API endpoints are relative to the following base URL:

https://www.loan-intel.com/api

All requests and responses use JSON. Set Content-Type: application/json on POST requests.

Rate Limits

API requests are rate-limited per authenticated account:

Standard100 req / min
Burst limit20 req / sec

A 429 Too Many Requests response is returned when limits are exceeded. Retry after the duration specified in the Retry-After header.

Endpoints Reference

POST/auth/login

Authenticate and receive a JWT bearer token. Tokens expire after 24 hours.

Parameters

NameTypeRequiredDescription
emailstringrequiredRegistered user email address
passwordstringrequiredAccount password

Example Response

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "bearer",
  "expires_in": 86400
}
GET/loanbook

Retrieve all loan book entries for the authenticated lender account.

Parameters

NameTypeRequiredDescription
pageintegeroptionalPage number (default: 1)
limitintegeroptionalResults per page (default: 50, max: 200)
statusstringoptionalFilter by status: active, redeemed, default

Example Response

{
  "total": 142,
  "page": 1,
  "results": [
    {
      "id": "lb_8f3a2c1d",
      "spv_name": "ACACIA CAPITAL SPV 12 LTD",
      "company_number": "14823901",
      "facility_ref": "BL-2024-0341",
      "facility_amount": 2500000,
      "outstanding_balance": 2500000,
      "status": "active",
      "origination_date": "2024-03-15"
    }
  ]
}
POST/loanbook

Add a new loan book entry. The SPV company number is validated against Companies House.

Parameters

NameTypeRequiredDescription
company_numberstringrequiredCompanies House registration number
facility_refstringrequiredYour internal facility reference
facility_amountnumberrequiredFacility amount in GBP
origination_datestringrequiredLoan origination date (YYYY-MM-DD)
property_addressstringoptionalSecurity property address

Example Response

{
  "id": "lb_9e4b3d2e",
  "spv_name": "MERIDIAN PROPERTY HOLDINGS LTD",
  "company_number": "15012876",
  "facility_ref": "BL-2024-0342",
  "status": "active",
  "created_at": "2024-11-20T14:32:01Z"
}
DELETE/loanbook/{id}

Remove a loan book entry. This action is irreversible.

Parameters

NameTypeRequiredDescription
idstringrequiredLoan book entry ID (path parameter)

Example Response

{
  "success": true,
  "message": "Loan book entry lb_8f3a2c1d deleted"
}
GET/payments

Retrieve payment records for the authenticated lender. Includes status history.

Parameters

NameTypeRequiredDescription
loan_idstringoptionalFilter by loan book entry ID
fromstringoptionalStart date filter (YYYY-MM-DD)
tostringoptionalEnd date filter (YYYY-MM-DD)

Example Response

{
  "total": 18,
  "results": [
    {
      "id": "pmt_7c1e9a4f",
      "loan_id": "lb_8f3a2c1d",
      "due_date": "2024-11-01",
      "status": "paid_on_time",
      "days_late": 0,
      "recorded_at": "2024-11-03T09:14:22Z"
    }
  ]
}
POST/payments

Record a payment event for a loan. Triggers network notifications where applicable.

Parameters

NameTypeRequiredDescription
loan_idstringrequiredLoan book entry ID
due_datestringrequiredPayment due date (YYYY-MM-DD)
statusstringrequiredStatus: paid_on_time, late, missed, default
days_lateintegeroptionalDays late (required if status is late)

Example Response

{
  "id": "pmt_2a8d5b6c",
  "loan_id": "lb_8f3a2c1d",
  "status": "late",
  "days_late": 12,
  "network_notification_sent": true,
  "recorded_at": "2024-11-15T11:02:44Z"
}
GET/search?q=

Search for companies, SPVs, and sponsor groups by name or Companies House number.

Parameters

NameTypeRequiredDescription
qstringrequiredSearch query: company name or registration number
typestringoptionalFilter: spv, parent, lender (default: all)
limitintegeroptionalResults to return (default: 20, max: 100)

Example Response

{
  "query": "Acacia Capital",
  "total": 4,
  "results": [
    {
      "company_name": "ACACIA CAPITAL GROUP LTD",
      "company_number": "11483029",
      "type": "parent",
      "spv_count": 12,
      "health_score": 74
    }
  ]
}
GET/spv-detail/{cn}

Retrieve detailed intelligence for a specific company by Companies House number.

Parameters

NameTypeRequiredDescription
cnstringrequiredCompanies House registration number (path parameter)

Example Response

{
  "company_number": "14823901",
  "company_name": "ACACIA CAPITAL SPV 12 LTD",
  "status": "active",
  "health_score": 68,
  "parent_company": "ACACIA CAPITAL GROUP LTD",
  "active_charges": 2,
  "payment_signals": { "late_count": 1, "lender_count": 2 },
  "experian_score": 72
}
GET/financials/platforms

Retrieve aggregated market-level platform statistics across all participating lenders.

Example Response

{
  "active_lenders": 47,
  "total_active_loans": 3821,
  "total_book_value_gbp": 2840000000,
  "late_payment_rate_pct": 3.4,
  "default_rate_pct": 0.8,
  "as_of": "2024-11-01"
}
GET/financials/snapshot

Retrieve a portfolio snapshot for the authenticated lender, including performance metrics.

Parameters

NameTypeRequiredDescription
as_ofstringoptionalSnapshot date (YYYY-MM-DD, default: today)

Example Response

{
  "lender": "Bridgepoint Capital Ltd",
  "as_of": "2024-11-20",
  "active_loans": 142,
  "book_value_gbp": 87500000,
  "late_count": 5,
  "late_pct": 3.52,
  "defaulted_count": 1,
  "avg_health_score": 71
}

Code Examples

JavaScript — fetch
// JavaScript — Fetch API example
// Retrieve your active loan book entries

const token = 'your_jwt_token_here';

const response = await fetch('https://www.loan-intel.com/api/loanbook?status=active', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json',
  },
});

const data = await response.json();
console.log(`${data.total} active loans`);
data.results.forEach(loan => {
  console.log(`${loan.spv_name}: £${loan.facility_amount.toLocaleString()}`);
});
Python — requests
# Python — requests library example
# Record a payment event

import requests

TOKEN = "your_jwt_token_here"
BASE_URL = "https://www.loan-intel.com/api"

headers = {
    "Authorization": f"Bearer {TOKEN}",
    "Content-Type": "application/json",
}

payload = {
    "loan_id": "lb_8f3a2c1d",
    "due_date": "2024-11-01",
    "status": "late",
    "days_late": 12,
}

response = requests.post(f"{BASE_URL}/payments", json=payload, headers=headers)
result = response.json()

print(f"Payment recorded: {result['id']}")
print(f"Network notification sent: {result['network_notification_sent']}")

Webhooks

Webhook Notifications

Coming Soon

We are developing a webhook system that will allow you to receive real-time push notifications for platform events — including network payment alerts, new charge registrations, and health score changes for companies in your loan book.

Planned webhook events include: payment.late, payment.missed, charge.registered, health_score.changed. Contact us to register interest and receive early access.

SDK

Official SDK Libraries

Coming Soon

Official SDK packages for JavaScript/TypeScript and Python are under development. The SDKs will provide typed client libraries, automatic token refresh, and simplified error handling, reducing the amount of boilerplate needed to integrate with the Loan Intel API.

Planned package names: @tp-finance/api-client (npm) and tp-finance (PyPI).

API Access & Support

API access is available to registered platform users. To request API credentials, discuss integration requirements, or get technical support, contact our team.

support@loan-intel.com