REST API reference
Public, no key required, rate-limited per IP (120 requests/minute). Data honesty rules: volume and analytics are null when unmeasured (never fabricated zeros); the token list is discovered from chain, refreshed about every 30 minutes; price history is forward-only sampled and never backfilled.
Endpoints
text
GET https://splitshot-dex-be.onrender.com/healthz
{ ok, chain, db, degraded }
GET https://splitshot-dex-be.onrender.com/v1/quote -> see Swap API
GET https://splitshot-dex-be.onrender.com/v1/tokens
{ chainId, updatedAt, degraded, indexableCount, volumeCoverage,
tokens: [{ symbol, name, address, decimals, priceUsd, tvlUsd,
volume24hUsd, volume24hMeasured, priceChange1hPct,
priceChange24hPct, sparkline: [[t, priceUsd]...],
fdvUsd, poolCount, slug, indexable, flagged, anchor }] }
Honest-null convention: null means NOT MEASURED, never zero.
GET https://splitshot-dex-be.onrender.com/v1/pools
{ chainId, pools: [{ address, venue, fee, token0, token1, tvlUsd,
priceToken0InToken1, token0Reserve, token1Reserve }] }
GET https://splitshot-dex-be.onrender.com/v1/stats
{ chainId, pools, tvlUsd, volume24hUsd, routesComputed, updatedAt }
GET https://splitshot-dex-be.onrender.com/v1/transactions?limit=25
recent Swap/Mint/Burn across live pools
GET https://splitshot-dex-be.onrender.com/v1/portfolio?address=0x...
{ address, totalUsd, tokens, positions, activity }
GET https://splitshot-dex-be.onrender.com/v1/price-history?token=0x...&range=1D
forward-only sampled series; never backfilled