Appearance
List price buckets​
GET
/v1/public/{currencyPair}/buckets
Public: no API key needed. Send the request as is, without signing it.
Returns the open, high, low and close prices and traded volume of a currency pair in buckets (candles) of periodSeconds, newest first. The current, unfinished bucket is included unless you skip results or endTime is in the past; responses are cached for up to 5 seconds.
Parameters​
Path Parameters
currencyPair*
Currency pair symbol, e.g. BTCZAR.
Type
Requiredstring
Example
"BTCZAR"Query Parameters
periodSeconds
Length of each bucket in seconds: 60, 300, 900, 1800, 3600, 21600 or 86400.
Type
integer
Valid values
60300900180036002160086400Example
60Default
60startTime
Only buckets that start at or after this time, as an ISO 8601 timestamp or Unix seconds. A value in neither format is ignored.
Type
string
Example
"2026-10-23T00:00:00Z"endTime
Only buckets that start at or before this time, as an ISO 8601 timestamp or Unix seconds. A value in neither format is ignored.
Type
string
Example
"2026-10-23T09:00:00Z"skip
Number of buckets to skip, for paging.
Type
integer
Example
0Default
0limit
Maximum number of buckets to return, up to 400.
Type
integer
Example
300Default
300includeEmpty
false to leave out buckets with no trades.
Type
boolean
Example
falseDefault
trueResponses​
OK
application/json
JSON
[
{
"currencyPairSymbol": "BTCZAR",
"bucketPeriodInSeconds": 60,
"startTime": "2026-10-23T08:51:00Z",
"open": "1849800",
"high": "1850012",
"low": "1849800",
"close": "1849900",
"volume": "0.0517",
"quoteVolume": "95638.42"
},
{
"currencyPairSymbol": "BTCZAR",
"bucketPeriodInSeconds": 60,
"startTime": "2026-10-23T08:50:00Z",
"open": "1849500",
"high": "1849900",
"low": "1849500",
"close": "1849800",
"volume": "0.2105",
"quoteVolume": "389372.3"
}
]
Samples​
Errors
| HTTP | Error | When |
|---|---|---|
| 400 | -21INVALID_CURRENCY_PAIR | currencyPair isn't a currency pair VALR supports. |
| 400 | -11INVALID_REQUEST | periodSeconds isn't one of the supported periods, skip or limit isn't a whole number, limit is more than 400, or includeEmpty isn't true or false. |
Public endpoints are not signed, so they never return authentication errors.