XRPL
Get denominated price / volume / txn rollup for an XRPL token
get
/xrpl/metrics
operationId: xrpl-tokenMetrics

Returns the data-indexer-style metrics rollup for an XRPL IOU (or XRP), denominated in the requested currency. Includes price, price_change and volume and txn over trailing windows (5m / 1h / 6h / 24h / 7d), plus 24h volume dominance vs the rest of the XRPL DEX. Sourced from the 1m OHLCV CAGG (ohlcv_1m) bridged per-bucket through cex_consensus_ohlcv_1m (same path as /xrpl/quote/ohlcv). Trustlines / holders / supply / market_cap / fdv / tvl / vesting / takers / buy_sell / quality_score are NOT included — those come from the data-indexer's metadata pipeline rather than our trade feed.

Unlock protected endpoints

Enter your Bearer token once to enable every protected route in this API reference.

HTTP bearer

Saved for this browser tab only. The credential is never sent until you test an endpoint.

Authorizations
NameLocationDetails
BearerAuthAuthorization header · bearerJWT issued by the Honeycluster auth service for the `oracle` audience. Present as `Authorization: Bearer <token>`.
Query Parameters
NameTypeDefaultDescription
currency
string
issuer
object
tokenSlug
string
denomination
string"USD"
Responses
200
application/json
Successful response
FieldTypeDescription
asset
string
Echoed asset (currency code).
issuer
object
Echoed issuer, or `null` for XRP.
pair
object
Resolved XRPL trade pair the token was found in.
pair.id
string
pair.baseCurrency
string
pair.baseIssuer
object
pair.quoteCurrency
string
pair.quoteIssuer
object
pair.createdAt
string
pair.updatedAt
string
inverted
boolean
True when the source pair stored XRP on the base side. The metrics are always reported in IOU-quoted units regardless.
denomination
string
Echoed denomination.
bridgeBase
object
Same semantics as `/xrpl/quote.bridgeBase`. `null` when `denomination=XRP`.
asOf
integer
Bucket-open of the most recent 1m row used to anchor `price` and the windows, Unix-seconds.
price
object
Latest denominated price (decimal string), or `null` when no recent bucket exists.
price_change
object
price_change.last_5m
object
price_change.last_5m.absolute
object
Absolute price change over the window in `denomination` units (decimal string). `null` when no price exists at the window start.
price_change.last_5m.percent
object
Percent price change over the window (decimal string, e.g. `2.835`). `null` when no price exists at the window start or it was zero.
price_change.last_5m.since_inception
boolean
Only set on `last_24h` and `last_7d`. `true` when the trade pair is younger than the window — the change is anchored at the first trade rather than `now − window`.
price_change.last_1h
object
price_change.last_1h.absolute
object
Absolute price change over the window in `denomination` units (decimal string). `null` when no price exists at the window start.
price_change.last_1h.percent
object
Percent price change over the window (decimal string, e.g. `2.835`). `null` when no price exists at the window start or it was zero.
price_change.last_1h.since_inception
boolean
Only set on `last_24h` and `last_7d`. `true` when the trade pair is younger than the window — the change is anchored at the first trade rather than `now − window`.
price_change.last_6h
object
price_change.last_6h.absolute
object
Absolute price change over the window in `denomination` units (decimal string). `null` when no price exists at the window start.
price_change.last_6h.percent
object
Percent price change over the window (decimal string, e.g. `2.835`). `null` when no price exists at the window start or it was zero.
price_change.last_6h.since_inception
boolean
Only set on `last_24h` and `last_7d`. `true` when the trade pair is younger than the window — the change is anchored at the first trade rather than `now − window`.
price_change.last_24h
object
price_change.last_24h.absolute
object
Absolute price change over the window in `denomination` units (decimal string). `null` when no price exists at the window start.
price_change.last_24h.percent
object
Percent price change over the window (decimal string, e.g. `2.835`). `null` when no price exists at the window start or it was zero.
price_change.last_24h.since_inception
boolean
Only set on `last_24h` and `last_7d`. `true` when the trade pair is younger than the window — the change is anchored at the first trade rather than `now − window`.
price_change.last_7d
object
price_change.last_7d.absolute
object
Absolute price change over the window in `denomination` units (decimal string). `null` when no price exists at the window start.
price_change.last_7d.percent
object
Percent price change over the window (decimal string, e.g. `2.835`). `null` when no price exists at the window start or it was zero.
price_change.last_7d.since_inception
boolean
Only set on `last_24h` and `last_7d`. `true` when the trade pair is younger than the window — the change is anchored at the first trade rather than `now − window`.
volume
object
volume.last_5m
object
volume.last_5m.value
object
Total denominated volume in the window (decimal string), or `null` when no buckets exist for the pair in the window. Distinguishes "no recent activity" (`null`) from "active token with zero in this window" (genuine `0` — uncommon since `ohlcv_1m` only stores buckets that had trades).
volume.last_5m.change_absolute
object
`value` minus the prior-window volume. `null` when either window has no data.
volume.last_5m.change_percent
object
`change_absolute / prior_window_volume × 100` (decimal string). `null` when prior was zero or either window is missing.
volume.last_1h
object
volume.last_1h.value
object
Total denominated volume in the window (decimal string), or `null` when no buckets exist for the pair in the window. Distinguishes "no recent activity" (`null`) from "active token with zero in this window" (genuine `0` — uncommon since `ohlcv_1m` only stores buckets that had trades).
volume.last_1h.change_absolute
object
`value` minus the prior-window volume. `null` when either window has no data.
volume.last_1h.change_percent
object
`change_absolute / prior_window_volume × 100` (decimal string). `null` when prior was zero or either window is missing.
volume.last_6h
object
volume.last_6h.value
object
Total denominated volume in the window (decimal string), or `null` when no buckets exist for the pair in the window. Distinguishes "no recent activity" (`null`) from "active token with zero in this window" (genuine `0` — uncommon since `ohlcv_1m` only stores buckets that had trades).
volume.last_6h.change_absolute
object
`value` minus the prior-window volume. `null` when either window has no data.
volume.last_6h.change_percent
object
`change_absolute / prior_window_volume × 100` (decimal string). `null` when prior was zero or either window is missing.
volume.last_24h
object
volume.last_24h.value
object
Total denominated volume in the window (decimal string), or `null` when no buckets exist for the pair in the window. Distinguishes "no recent activity" (`null`) from "active token with zero in this window" (genuine `0` — uncommon since `ohlcv_1m` only stores buckets that had trades).
volume.last_24h.change_absolute
object
`value` minus the prior-window volume. `null` when either window has no data.
volume.last_24h.change_percent
object
`change_absolute / prior_window_volume × 100` (decimal string). `null` when prior was zero or either window is missing.
volume.last_7d
object
volume.last_7d.value
object
Total denominated volume in the window (decimal string), or `null` when no buckets exist for the pair in the window. Distinguishes "no recent activity" (`null`) from "active token with zero in this window" (genuine `0` — uncommon since `ohlcv_1m` only stores buckets that had trades).
volume.last_7d.change_absolute
object
`value` minus the prior-window volume. `null` when either window has no data.
volume.last_7d.change_percent
object
`change_absolute / prior_window_volume × 100` (decimal string). `null` when prior was zero or either window is missing.
volume.dominance
object
volume.dominance.last_24h
object
This token's 24h denominated volume divided by the sum of every XRPL pair's 24h denominated volume (decimal fraction). `null` when total volume is zero or unavailable.
txn
object
txn.last_5m
object
txn.last_5m.value
object
Trade count in the window, or `null` when no buckets exist for the pair in the window.
txn.last_5m.change_absolute
object
`value` minus the prior-window trade count. `null` when either window has no data.
txn.last_5m.change_percent
object
Percent change vs prior window (decimal string). `null` when prior was zero or either window is missing.
txn.last_1h
object
txn.last_1h.value
object
Trade count in the window, or `null` when no buckets exist for the pair in the window.
txn.last_1h.change_absolute
object
`value` minus the prior-window trade count. `null` when either window has no data.
txn.last_1h.change_percent
object
Percent change vs prior window (decimal string). `null` when prior was zero or either window is missing.
txn.last_6h
object
txn.last_6h.value
object
Trade count in the window, or `null` when no buckets exist for the pair in the window.
txn.last_6h.change_absolute
object
`value` minus the prior-window trade count. `null` when either window has no data.
txn.last_6h.change_percent
object
Percent change vs prior window (decimal string). `null` when prior was zero or either window is missing.
txn.last_24h
object
txn.last_24h.value
object
Trade count in the window, or `null` when no buckets exist for the pair in the window.
txn.last_24h.change_absolute
object
`value` minus the prior-window trade count. `null` when either window has no data.
txn.last_24h.change_percent
object
Percent change vs prior window (decimal string). `null` when prior was zero or either window is missing.
txn.last_7d
object
txn.last_7d.value
object
Trade count in the window, or `null` when no buckets exist for the pair in the window.
txn.last_7d.change_absolute
object
`value` minus the prior-window trade count. `null` when either window has no data.
txn.last_7d.change_percent
object
Percent change vs prior window (decimal string). `null` when prior was zero or either window is missing.
Example
Json
{
  "asset": "USD",
  "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
  "pair": {
    "id": "3c4a3de8-4218-400c-8c55-87dc27206753",
    "baseCurrency": "USD",
    "baseIssuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
    "quoteCurrency": "XRP",
    "quoteIssuer": null,
    "createdAt": "2025-04-26T00:00:00.000Z",
    "updatedAt": "2026-04-29T00:00:00.000Z"
  },
  "inverted": false,
  "denomination": "USD",
  "bridgeBase": "USD",
  "asOf": 1745798400,
  "price": "0.71788944",
  "price_change": {
    "last_5m": {
      "absolute": "0",
      "percent": "0"
    },
    "last_1h": {
      "absolute": "0.00002944",
      "percent": "0.00410"
    },
    "last_6h": {
      "absolute": "0.00367611",
      "percent": "0.51470"
    },
    "last_24h": {
      "absolute": "0.01413186",
      "percent": "2.00805",
      "since_inception": false
    },
    "last_7d": {
      "absolute": "0.01979611",
      "percent": "2.83574",
      "since_inception": false
    }
  },
  "volume": {
    "last_5m": {
      "value": "2241.78",
      "change_absolute": "-12258.46",
      "change_percent": "-84.54"
    },
    "last_1h": {
      "value": "26901.50",
      "change_absolute": "-24427.95",
      "change_percent": "-47.59"
    },
    "last_6h": {
      "value": "241868.44",
      "change_absolute": "-57655.77",
      "change_percent": "-19.24"
    },
    "last_24h": {
      "value": "1793262.59",
      "change_absolute": "576262.37",
      "change_percent": "47.35"
    },
    "last_7d": {
      "value": "22423053.28",
      "change_absolute": null,
      "change_percent": null
    },
    "dominance": {
      "last_24h": "0.000001484"
    }
  },
  "txn": {
    "last_5m": {
      "value": 8,
      "change_absolute": -34,
      "change_percent": "-80.95"
    },
    "last_1h": {
      "value": 404,
      "change_absolute": -157,
      "change_percent": "-27.98"
    },
    "last_6h": {
      "value": 2666,
      "change_absolute": -276,
      "change_percent": "-9.38"
    },
    "last_24h": {
      "value": 15062,
      "change_absolute": 5942,
      "change_percent": "65.15"
    },
    "last_7d": {
      "value": 148574,
      "change_absolute": null,
      "change_percent": null
    }
  }
}
400
application/json
Invalid input data
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "BAD_REQUEST",
  "message": "Invalid input data",
  "issues": []
}
401
application/json
Authorization not provided
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "UNAUTHORIZED",
  "message": "Authorization not provided",
  "issues": []
}
403
application/json
Insufficient access
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "FORBIDDEN",
  "message": "Insufficient access",
  "issues": []
}
404
application/json
Not found
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "NOT_FOUND",
  "message": "Not found",
  "issues": []
}
500
application/json
Internal server error
FieldTypeDescription
message
string
The error message
code
string
The error code
issues
object[]
An array of issues that were responsible for the error
issues[].message
string
Example
Json
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}