CEX
Get CEX OHLCV candles
get
/cex/ohlcv
operationId: cex-history

Returns OHLCV candles for a single asset+base from CEX price feed data, aggregated across all venues per bucket (sourced from TimescaleDB continuous aggregates). Includes VWAP alongside standard OHLCV. Candles are returned in ascending time order. endTime defaults to now, startTime defaults to endTime − (interval × limit). Use /cex/exchanges/{exchangeId}/ohlcv for a single venue's raw candles.

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
asset
required
string
Asset symbol to query (e.g. `XRP`).
base
string"USD"
interval
enum<string>"1h"
Available
1m3m5m15m30m1h2h4h
startTime
integer
endTime
integer
limit
integer500
Responses
200
application/json
Successful response
FieldTypeDescription
items
object[]
OHLCV candles in ascending bucket order.
items[].asset
string
Asset symbol.
items[].base
string
Base currency.
items[].bucket
integer
Candle start time, Unix-seconds.
items[].open
object
Opening price (decimal string), or `null` when only ticker-derived close is available.
items[].high
object
Highest price (decimal string), or `null` when only ticker-derived close is available.
items[].low
object
Lowest price (decimal string), or `null` when only ticker-derived close is available.
items[].close
string
Closing price (decimal string).
items[].volume
object
Total volume in the interval, or `null` when only ticker-derived close is available.
items[].vwap
object
Volume-weighted average price.
items[].tradeCount
number
Number of trades aggregated into the candle.
Example
Json
{
  "items": [
    {
      "asset": "XRP",
      "base": "USD",
      "bucket": 1745712000,
      "open": "0.512",
      "high": "0.518",
      "low": "0.509",
      "close": "0.514",
      "volume": "128450.32",
      "vwap": 0.5135,
      "tradeCount": 312
    }
  ]
}
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": []
}