---
title: "XLS-66 cross-broker lending exposure — full detail (x402, $0.01 USDC on Base or RLUSD on XRPL)"
method: GET
path: "/api/x402/lending/exposure"
tags: ["Lending"]
---

# XLS-66 cross-broker lending exposure — full detail (x402, $0.01 USDC on Base or RLUSD on XRPL)

`GET /api/x402/lending/exposure`

## Request

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

Everything /api/lending/exposure returns PLUS every loan decoded (rates in bps, days-to-due / days-overdue, flags), the per-broker first-loss context (the counterparty broker's own DebtTotal / CoverAvailable / CoverRateMinimum), the last-known state of every vanished loan, and the Merkle-anchored attestation receipt. $0.01 USDC on Base via the CDP x402 facilitator, no signup. Amendment-gated: 503 until XLS-66 enables, then serves automatically. Attests to OBSERVED STATE, not a complete borrowing history. Not underwriting or credit advice.

## Query parameters

- `borrower` string, required

## Response `200`

Full exposure — loans[], brokers[], vanishedLoans[], attestation.

- 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

- `402`: Payment Required — x402 challenge. Pay EITHER in USDC on Base (v1 body; retry with X-PAYMENT) OR in RLUSD on the XRP Ledger (v2: PAYMENT-REQUIRED header, network xrpl:0; retry with PAYMENT-SIGNATURE, result wrapped as { data, x402 }).
- `503`: LendingProtocol (XLS-66) not yet enabled on mainnet.

---

[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)
