---
title: "XLS-66 cross-broker lending exposure — aggregate (API key, free tier)"
method: GET
path: "/api/lending/exposure"
tags: ["Lending"]
---

# XLS-66 cross-broker lending exposure — aggregate (API key, free tier)

`GET /api/lending/exposure`

## Request

- Base URL: `https://www.xrplhub.io`
- URL: `https://www.xrplhub.io/api/lending/exposure`
- Auth: none declared

A borrower's total XLS-66 lending exposure across ALL loan brokers in one call: total outstanding by asset, loan count, distinct broker count, defaults/impairments, XRPLScore, and an observation summary. The XRP Ledger has no aggregate borrower-debt object. It reflects the validated ledger NOW — a defaulted loan zeroes its own amounts and either party can delete a paid/defaulted loan, so absence is not proof of no borrowing history. `disposition` distinguishes 'no-loans-ever' (we have never observed one — not proof of none) from 'history-only' (loans seen before, none now). EVERY call persists an immutable, Merkle-anchored snapshot — verify at /api/attest/verify?queryId=. Pre-activation returns 503 with the live XRPLScore; serves automatically when the LendingProtocol amendment enables. Not underwriting or credit advice. Full per-loan detail + per-broker first-loss context: /api/x402/lending/exposure ($0.01 USDC).

## Query parameters

- `borrower` string, required

## Response `200`

Aggregate exposure + observation summary.

- object
  - `borrower` string, required
  - `amendmentActive` boolean, required: false = XLS-66 not yet enabled on mainnet; response still carries the XRPLScore.
  - `ledgerIndex` integer
  - `ledgerCloseAt` string, date-time, nullable
  - `disposition` 'amendment-not-active' | 'active-exposure' | 'history-only' | 'no-loans-ever', required: no-loans-ever = we have never observed a loan (not proof of none). history-only = loans were observed before but none are on the ledger now.
  - `exposure` object, required
    - `byAsset` object: Keyed by asset: 'XRP', '<currency>.<issuer>', or 'MPT:<id>'.
    - `loanCount` integer: Loan objects visible on the ledger now.
    - `brokerCount` integer: distinct loan brokers.
  - `events` object, required
    - `defaulted` integer
    - `impaired` integer
    - `overdue` integer
    - `overdueGraceExpired` integer: past NextPaymentDueDate + GracePeriod — a broker can default it now.
  - `worstStatus` 'none' | 'current' | 'overdue' | 'overdueGraceExpired' | 'impaired' | 'defaulted' | 'paid'
  - `earliestNextPaymentDue` string, date-time, nullable
  - `xrplScore` integer, nullable
  - `grade` string, nullable
  - `observation` object, required
    - `everObservedLoans` boolean
    - `firstObservedAt` string, date-time, nullable: when XRPLHub first saw ANY loan for this borrower — history before this is invisible to us.
    - `totalLoansEverObserved` integer
    - `currentlyVisible` integer
    - `vanished` integer: loans we observed before that are no longer on the ledger (deleted by borrower or broker).
    - `vanishedLastSeenDefaultedOrImpaired` integer: of the vanished, the ones last seen in default or impairment.
    - `note` string
  - `leafHash` string: SHA-256(0x00 || canonical leaf). This snapshot is Merkle-anchored on-ledger daily; verify at /api/attest/verify?queryId=.
  - `disclaimer` string, required

## Other responses

- `401`: Missing or invalid API key.
- `503`: LendingProtocol (XLS-66) not yet enabled on mainnet — body carries the XRPLScore.

---

[API](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions.md) · [All operations](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions/llms.txt) · [OpenAPI document](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions/revisions/a5d4e13aff32?raw)
