/liquidity/poolspool-listPaginated list of indexed AMM pools. Uses 1-indexed page + pageSize and returns total / pageCount. Optional search filters case-insensitively across amm_id, owner_address, both asset currency codes / issuer addresses, and each asset's display name / ticker. Optional denomination (XRP or currency.issuer) filters to pools where one side matches AND flips the response so the matched asset always lands in assets.asset1 — useful for rendering "all USDC pools" with USDC consistently on the denominator side. Default sort is top (composite depth+flow ranking, descending). metadata defaults to true; metrics defaults to false (opt in explicitly because the windowed aggregates cost extra DB work). When metadata=true each row carries per-asset metadata (assets.asset1.metadata, assets.asset2.metadata) and pool-level metadata (metadata.pair_label, metadata.trading_fee_percent, metadata.owner_metadata); when metrics=true each row carries metrics.tvl.{value, change.last_24h}, windowed metrics.volume (5m/1h/6h/24h/7d + total + dominance.last_24h) and metrics.swaps (5m/1h/6h/24h/7d), windowed metrics.deposits.last_24h / metrics.withdrawals.last_24h, metrics.fees.last_24h, metrics.apr.last_24h, metrics.price ratios with metrics.price_change.last_24h.{absolute, percent}, metrics.lp_holders, metrics.indicators.{is_destroyed, is_empty}.
| Name | Location | Details |
|---|---|---|
BearerAuth | Authorization header · bearer | JWT issued by the Honeycluster auth service for the `indexer` audience. Present as `Authorization: Bearer <token>`. |
| Name | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | |
pageSize | integer | 20 | |
search | string | ||
denomination | string | ||
metadata | boolean | ||
metrics | boolean | ||
sort | enum<string> | "top" | Available createdupdatedledger_indextrading_feetvlvolume_24hswaps_24hlp_holders |
sortDir | enum<string> | "desc" | Available ascdesc |
| Field | Type | Description |
|---|---|---|
items | object[] | Items on the current page. |
items[]. | string | Internal UUID primary key for the pool. |
items[]. | string | On-ledger AMM account identifier. |
items[]. | object | Address that created the AMM; NULL when unknown. |
items[]. | object | LP token reference (currency + issuer = the AMM account). |
items[]. | string | Currency code (3-char ISO or 40-char hex). |
items[]. | object | Issuer XRPL address; NULL for native XRP. |
items[]. | integer | Ledger sequence of the most recent pool state update. |
items[]. | integer | Record creation timestamp, Unix-seconds. |
items[]. | integer | Record update timestamp, Unix-seconds. |
items[]. | object | The two pool assets with current reserves and joined token metadata. |
items[]. | object | |
items[]. | string | Currency code (3-char ISO or 40-char hex). |
items[]. | object | Issuer XRPL address; NULL for native XRP. |
items[]. | string | Raw on-chain currency code (3-char ISO or 40-char hex). |
items[]. | string | UTF-8-decoded currency code when the raw code is hex-encoded; otherwise the raw code unchanged. |
items[]. | object | Display ticker (≤5 chars uppercased). Falls back to a normalized currency code when no curated ticker is available. |
items[]. | string | Current reserve balance, decimal string. |
items[]. | object | Token metadata for this asset, or NULL for native XRP / unknown tokens. |
items[]. | object | |
items[]. | string | Currency code (3-char ISO or 40-char hex). |
items[]. | object | Issuer XRPL address; NULL for native XRP. |
items[]. | string | Raw on-chain currency code (3-char ISO or 40-char hex). |
items[]. | string | UTF-8-decoded currency code when the raw code is hex-encoded; otherwise the raw code unchanged. |
items[]. | object | Display ticker (≤5 chars uppercased). Falls back to a normalized currency code when no curated ticker is available. |
items[]. | string | Current reserve balance, decimal string. |
items[]. | object | Token metadata for this asset, or NULL for native XRP / unknown tokens. |
items[]. | object | Pool-level curated / derived metadata. Present only when the request had `metadata=true` (default). |
items[]. | string | `<asset1 ticker> / <asset2 ticker>` label. Falls back to raw currency codes when tickers are unavailable. |
items[]. | integer | Trading fee in basis points (0–1000; 1000 = 1%). |
items[]. | string | Trading fee as a percentage decimal string (e.g. "0.5" for 50 bps). |
items[]. | object | Metadata for the AMM's `owner_address`, or NULL when the owner is unknown / anonymous. |
items[]. | object | Live and rolling pool metrics (TVL, volume, swaps, fees, price, depth). Present only when the request had `metrics=true` (defaults to `false`). |
items[]. | string | Outstanding LP tokens, decimal string. |
items[]. | object | |
items[]. | object | Latest TVL for the pool, decimal string denominated in XRP — sum of each side's reserve × that side's XRP-price (sourced from `token_xrp_price_v`). NULL when neither side has a resolvable XRP price. |
items[]. | object | Asset1 reserve × asset1 XRP-price, decimal string in XRP. NULL when the asset1 side has no resolvable XRP price. |
items[]. | object | Asset2 reserve × asset2 XRP-price, decimal string in XRP. NULL when the asset2 side has no resolvable XRP price. |
items[]. | object | Pricing-confidence label. `direct` — XRP-paired pool (TVL/volume use the AMM's own implied rate, not a bridge price), or an IOU/IOU pool where both sides are priced via their own XRP-paired ohlcv data and fresh (last 24h). `bridged` — IOU/IOU pool with stablecoin-shortcut pricing on at least one side. `stale` — IOU/IOU pool where any side's last close is older than 24h. `unpriced` — IOU/IOU pool with at least one side that has no resolvable XRP price. |
items[]. | object | TVL change per window. Currently only `last_24h`; additional windows may light up over time. |
items[]. | object | |
items[]. | object | asset1_reserve / asset2_reserve — price of asset2 in asset1 terms. NULL when asset2_reserve is zero. |
items[]. | object | asset2_reserve / asset1_reserve — price of asset1 in asset2 terms. NULL when asset1_reserve is zero. |
items[]. | object | Rolling price change per window, sourced from per-pool OHLCV (`pool_ohlcv_1h`). `absolute` is the `asset2_per_asset1` swap-implied price delta; `percent` is dimensionless. Window entries are `null/null` when the pool had no swap in the window. Mirrors `tokenMetrics.price_change`. |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | object | Rolling swap volume per window, denominated in XRP (each side's asset amount × XRP-price, summed across buckets). |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | string | Cumulative lifetime swap volume, decimal string in raw asset1 currency units (this is the only column that has not been re-priced into XRP yet — kept as-is for backwards compatibility with existing dashboards; will be revisited). |
items[]. | object | This pool's share of all-pools volume, per window. |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | object | |
items[]. | integer | Swap count over the last 7d. |
items[]. | object | Deposit-event counts per window. |
items[]. | object | |
items[]. | object | Withdraw-event counts per window. |
items[]. | object | |
items[]. | object | Trading fees collected per window, denominated in XRP. |
items[]. | string | Estimated trading fees collected in the last 24h — `volume_24h × trading_fee_bps / 10000`, decimal string in XRP. |
items[]. | string | Estimated trading fees collected in the last 7d — `volume_7d × trading_fee_bps / 10000`, decimal string in XRP. |
items[]. | object | Annualised-fee return on TVL per window. |
items[]. | object | APR annualised from the last 24h of fees — `fees.last_24h × 365 / tvl × 100` (percentage decimal). NULL when TVL is unknown / zero. Both fees and TVL are XRP-denominated, so this is a true APR figure. |
items[]. | object | APR annualised from the last 7d of fees — `fees.last_7d × (365 / 7) / tvl × 100` (percentage decimal). NULL when TVL is unknown / zero. |
items[]. | integer | Distinct accounts holding a positive LP-token trustline balance. |
items[]. | object | |
items[]. | boolean | True when the AMM has been removed from the ledger. |
items[]. | boolean | True when both reserves are zero / near-zero. |
page | integer | 1-indexed page number of the returned page. |
pageSize | integer | Items per page (echoed from the request). |
total | integer | Total number of items across all pages. |
pageCount | integer | Total number of pages at the requested pageSize. |
{
"items": [
{
"id": "3c4a3de8-4218-400c-8c55-87dc27206753",
"amm_id": "rEgH8Y8nF9XuvvRECnp6e9VRZqKM3KZUtN",
"owner_address": "rOwnerExample1234567890",
"lp_token": {
"currency": "03CE3395056E7BEDE14E4CA83D6B80FF83D51F97",
"issuer": "rEgH8Y8nF9XuvvRECnp6e9VRZqKM3KZUtN"
},
"ledger_index": 103801288,
"created_at": 1745212800,
"updated_at": 1745798400,
"assets": {
"asset1": {
"currency": "XRP",
"issuer": null,
"code": "XRP",
"code_normalized": "XRP",
"ticker": "XRP",
"reserve": "639300",
"metadata": null
},
"asset2": {
"currency": "5048494E495800000000000000000000000000",
"issuer": "rPHNIXIssuerExample1234567890",
"code": "5048494E495800000000000000000000000000",
"code_normalized": "PHNIX",
"ticker": "PHNIX",
"reserve": "589000000",
"metadata": {
"name": "Phineas",
"ticker": "PHNIX",
"icon": "https://cdn.honeycluster.dev/icons/phnix.png",
"asset_class": null,
"verified": true
}
}
},
"metadata": {
"pair_label": "XRP / PHNIX",
"trading_fee_bps": 34,
"trading_fee_percent": "0.34",
"owner_metadata": {
"name": null,
"verified": false
}
},
"metrics": {
"lp_token_supply": "267207784.32",
"tvl": {
"value": "639300",
"asset1_xrp_value": "319650",
"asset2_xrp_value": "319650",
"confidence": "direct",
"change": {
"last_24h": {
"absolute": "12500",
"percent": "1.99"
}
}
},
"price": {
"asset1_per_asset2": "0.00108540",
"asset2_per_asset1": "921.42"
},
"price_change": {
"last_5m": {
"absolute": null,
"percent": null
},
"last_1h": {
"absolute": null,
"percent": null
},
"last_6h": {
"absolute": "0.00004",
"percent": "4.10"
},
"last_24h": {
"absolute": "0.00012",
"percent": "12.4"
},
"last_7d": {
"absolute": "0.00031",
"percent": "31.5"
}
},
"volume": {
"last_5m": {
"value": "420.5",
"change_absolute": "15",
"change_percent": "3.7"
},
"last_1h": {
"value": "4120.8",
"change_absolute": "120",
"change_percent": "3.0"
},
"last_6h": {
"value": "14580.2",
"change_absolute": "1500",
"change_percent": "11.5"
},
"last_24h": {
"value": "46300",
"change_absolute": "5800",
"change_percent": "14.3"
},
"last_7d": "956100",
"total": "4218750",
"dominance": {
"last_24h": "2.1093"
}
},
"swaps": {
"last_5m": {
"value": 4,
"change_absolute": 1,
"change_percent": "33.3"
},
"last_1h": {
"value": 38,
"change_absolute": 6,
"change_percent": "18.7"
},
"last_6h": {
"value": 187,
"change_absolute": 22,
"change_percent": "13.3"
},
"last_24h": {
"value": 1675,
"change_absolute": 188,
"change_percent": "12.6"
},
"last_7d": 11842
},
"deposits": {
"last_24h": {
"value": 3,
"change_absolute": -1,
"change_percent": "-25.0"
}
},
"withdrawals": {
"last_24h": {
"value": 4,
"change_absolute": 1,
"change_percent": "33.3"
}
},
"fees": {
"last_24h": "155.98",
"last_7d": "3250.75"
},
"apr": {
"last_24h": "8.9",
"last_7d": "26.3"
},
"lp_holders": 485,
"indicators": {
"is_destroyed": false,
"is_empty": false
}
}
}
],
"page": 0,
"pageSize": 0,
"total": 0,
"pageCount": 0
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}