/xrpl/quote/ohlcv/batchxrpl-quoteOhlcvBatchPOST batch variant of /xrpl/quote/ohlcv. Body: { tokens: [...], denomination, interval, startTime, endTime, limit } (max 50 tokens). Returns one row per token as { currency, issuer, pair, inverted, candles: [...] } — tokens with no matching pair surface as pair: null, candles: []. The 2-hop intermediary is server-chosen (USD) and echoed on the output as bridgeBase.
| 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 denominated OHLCV for. Each entry is `{tokenSlug}` or `{currency, issuer}`. Max 50 per request. | |
denomination | string | "USD" | Target denomination. Defaults to `USD` so a bare-args call returns the token's USD price (1-hop bridge through `XRP/USD`). Pass `XRP` to get the raw XRPL DEX price with no conversion — the XRP/USD bridge is still surfaced on `legs.bridge` as informational context. Other direct CEX bases (`USDT`, `USDC`) also use a 1-hop bridge; any other CEX-tracked asset (`BTC`, `ETH`, etc.) uses a 2-hop bridge via the server-chosen intermediary (USD), echoed on the response as `bridgeBase`. |
interval | enum<string> | "1h" | OHLCV candle interval. Defaults to `1h`. Available 1m3m5m15m30m1h2h4h |
startTime | integer | Inclusive lower bound for candle time, Unix-seconds. Defaults to `endTime − (interval × limit)`. | |
endTime | integer | Exclusive upper bound for candle time, Unix-seconds. Defaults to the current server time. | |
limit | integer | 500 | Per-token maximum number of candles to return (1–1000). Defaults to 500. |
{
"tokens": [
{
"tokenSlug": "string"
}
],
"denomination": "USD",
"interval": "1h",
"startTime": 1745798400,
"endTime": 1745798400,
"limit": 500
}| Field | Type | Default | Description |
|---|---|---|---|
items | object[] | One entry per requested token, in request order. | |
items[]. | string | Echoed currency code. | |
items[]. | object | Echoed issuer address, or `null` for XRP. | |
items[]. | object | Resolved trade pair, or `null` when no pair was found for the token. | |
items[]. | boolean | false | True when the source pair stored XRP on the base side. |
items[]. | object[] | Denominated OHLCV candles for the token. Empty when no pair / data exists. | |
items[]. | integer | Start of the candle interval, Unix-seconds. | |
items[]. | string | Opening denominated price (decimal string). | |
items[]. | string | Highest denominated price seen in the interval (decimal string). | |
items[]. | string | Lowest denominated price seen in the interval (decimal string). | |
items[]. | string | Closing denominated price (decimal string). | |
items[]. | string | Total volume traded in the interval, expressed in the requested `denomination` (decimal string). Approximated as native base-side volume × bucket close × bridge factor — the OHLCV view stores `sum(base_amount)` only, so an exact figure would require summing quote amounts per trade. | |
items[]. | number | Number of trades that make up the native candle. | |
denomination | string | Echoed denomination. | |
bridgeBase | object | Echoed bridge base, or `null` when no bridge was used. |
{
"items": [
{
"currency": "string",
"issuer": "string",
"pair": {
"id": "00000000-0000-0000-0000-000000000000",
"baseCurrency": "string",
"baseIssuer": "string",
"quoteCurrency": "string",
"quoteIssuer": "string",
"createdAt": "string",
"updatedAt": "string"
},
"inverted": false,
"candles": [
{
"bucket": 1745798400,
"open": "string",
"high": "string",
"low": "string",
"close": "string",
"volume": "string",
"tradeCount": 0
}
]
}
],
"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": []
}