XRPL
Batch fetch metrics rollups for many XRPL tokens
post
/xrpl/metrics/batch
operationId: xrpl-tokenMetricsBatch

POST batch variant of /xrpl/metrics. Body: { tokens: [...], denomination } (max 50 tokens, default denomination USD). Returns one row per token as { asset, issuer, pair, inverted, metrics } — tokens with no matching XRPL pair surface as pair: null, metrics: null so a single missing token doesn't fail the whole batch.

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>`.
Request Body
application/json
required
FieldTypeDefaultDescription
tokens
required
object[]
Tokens to fetch metrics for. Each entry is `{tokenSlug}` or `{currency, issuer}`. Max 50 per request.
denomination
string"USD"
Denomination for every monetary field (`price`, `price_change.*.absolute`, `volume.*.value`, `volume.*.change_absolute`). Defaults to `USD`. `XRP` returns native XRPL DEX numbers with no CEX bridge. Direct CEX bases (`USD`, `USDT`, `USDC`) use a 1-hop bridge; any other CEX-tracked asset bridges in two hops via the server-chosen intermediary (USD).
Example
Json
{
  "tokens": [
    {
      "tokenSlug": "string"
    }
  ],
  "denomination": "USD"
}
Responses
200
application/json
Successful response
FieldTypeDefaultDescription
items
object[]
One entry per requested token, in request order.
items[].asset
string
Echoed currency code.
items[].issuer
object
Echoed issuer, or `null` for XRP.
items[].pair
object
Resolved trade pair, or `null` when no pair was found.
items[].inverted
booleanfalse
True when the source pair stored XRP on the base side. `false` when no pair exists.
items[].metrics
object
Per-token metrics. `null` when no pair was found.
denomination
string
Echoed denomination.
bridgeBase
object
Echoed bridge base, or `null` when no bridge was used.
Example
Json
{
  "items": [
    {
      "asset": "string",
      "issuer": "string",
      "pair": {
        "id": "00000000-0000-0000-0000-000000000000",
        "baseCurrency": "string",
        "baseIssuer": "string",
        "quoteCurrency": "string",
        "quoteIssuer": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "inverted": false,
      "metrics": {
        "asOf": 1745798400,
        "price": "string",
        "price_change": {
          "last_5m": {
            "absolute": "string",
            "percent": "string",
            "since_inception": false
          },
          "last_1h": {
            "absolute": "string",
            "percent": "string",
            "since_inception": false
          },
          "last_6h": {
            "absolute": "string",
            "percent": "string",
            "since_inception": false
          },
          "last_24h": {
            "absolute": "string",
            "percent": "string",
            "since_inception": false
          },
          "last_7d": {
            "absolute": "string",
            "percent": "string",
            "since_inception": false
          }
        },
        "volume": {
          "last_5m": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "last_1h": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "last_6h": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "last_24h": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "last_7d": {
            "value": "string",
            "change_absolute": "string",
            "change_percent": "string"
          },
          "dominance": {
            "last_24h": "string"
          }
        },
        "txn": {
          "last_5m": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          },
          "last_1h": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          },
          "last_6h": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          },
          "last_24h": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          },
          "last_7d": {
            "value": 0,
            "change_absolute": 0,
            "change_percent": "string"
          }
        }
      }
    }
  ],
  "denomination": "string",
  "bridgeBase": "string"
}
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": []
}
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": []
}