/xrpl/metrics/batchxrpl-tokenMetricsBatchPOST 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.
| Name | Location | Details |
|---|---|---|
BearerAuth | Authorization header · bearer | JWT issued by the Honeycluster auth service for the `oracle` audience. Present as `Authorization: Bearer <token>`. |
| Field | Type | Default | Description |
|---|---|---|---|
tokensrequired | 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). |
{
"tokens": [
{
"tokenSlug": "string"
}
],
"denomination": "USD"
}| Field | Type | Default | Description |
|---|---|---|---|
items | object[] | One entry per requested token, in request order. | |
items[]. | string | Echoed currency code. | |
items[]. | object | Echoed issuer, or `null` for XRP. | |
items[]. | object | Resolved trade pair, or `null` when no pair was found. | |
items[]. | boolean | false | True when the source pair stored XRP on the base side. `false` when no pair exists. |
items[]. | 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. |
{
"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"
}| 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": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}