Pay-per-call Solana Jupiter Lend data via x402. Pay in USDC on Base or Solana. No signup, no API keys.
| Endpoint | Per call |
|---|---|
GET /liquidationsJupiter Lend vault liquidations (newest first), optional vault id / liquidator / since-day filter. ?vault=40&limit=10 | $0.005 |
GET /rates/dailyDaily per-token liquidity-layer stats for the last `days` UTC days of the dataset: last borrow rate & utilization (bps), exchange prices (1e12-scaled), net supply/borrow change. ?mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&days=7 | $0.002 |
GET /earn/walletOne wallet's Jupiter Lend Earn deposit/withdraw history (as receiver/owner/sender). ?wallet=7z9nBbRYkregqubfaXjVdCpRgNTMee7rSEqawXugejDQ&limit=10 | $0.003 |
GET /dex/swaps/dailyDaily Jupiter Lend DEX pool stats for the last `days` UTC days of the dataset: swaps, volume and fees per token side, with pool token mints/decimals. ?days=7 | $0.002 |
GET /lend-jupiter-joinLend DEX swaps that were routed through the Jupiter aggregator in the same tx (joined on signature), with the outer Jupiter route. Requires the jupiter_swaps table; returns 503 (no charge) until it is loaded. ?limit=5 | $0.01 |
Paid routes need an x402 client (e.g. @x402/fetch). Free routes are only /coverage, /api, /health, and /stats — call a priced path to get HTTP 402 + PAYMENT-REQUIRED.
Call any endpoint. Without payment you get HTTP 402 with a PAYMENT-REQUIRED header describing the price and accepted networks. An x402 client (e.g. @x402/fetch) pays in USDC and retries automatically. Invalid parameters return 400 before any payment is requested.
$ curl -i "https://lend-api-production.up.railway.app/liquidations?vault=40&limit=3"
HTTP/1.1 402 Payment Required
payment-required: eyJ4NDAyVmVyc2lvbiI6Mi... # base64 JSON: price, network, payTo
$ curl https://lend-api-production.up.railway.app/api # machine-readable endpoint list (free)
$ curl https://lend-api-production.up.railway.app/coverage # dataset time range (free)
$ curl https://lend-api-production.up.railway.app/health # {"ok":true}
~30 days of Solana Jupiter Lend data, refreshed every 6 hours (America/New_York). Exact range at /coverage. The first and last UTC day are partial (partial: true). Not block-by-block real-time; days counts back from the latest day in the dataset. Unknown tokens have symbol: null plus a display-only shortened mint_label. Daily borrow rate/utilization are null on days with no on-chain rate-update event (see rate_source). Decoded with the jupiter-lend-substreams package.
Every response is {rows, count, coverage}. Raw on-chain amounts are base-unit integer strings (exact); *_ui fields are decimal-adjusted numbers. days (1–31, default 7) counts back from the latest day in the dataset.