cURL
curl --request GET \
--url 'https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day' \
--header 'Authorization: ApiKey <key>'import requests
url = "https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day"
headers = {"Authorization": "ApiKey <key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'ApiKey <key>'}};
fetch('https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day', options)
.then(res => res.text())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "ApiKey <key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day")
.header("Authorization", "ApiKey <key>")
.asString();exchange,pair,timestamp,volume
Binance,BTC/USDT,2026-09-29T00:00:00Z,45340134.17
Bitfinex,BTC/USD,2026-09-29T00:00:00Z,579820.08Market data
Download a chart as CSV
Returns the series of one chart as a CSV file. specific_metric picks the metric and group_by how series are grouped. Every other query parameter goes to the endpoint behind the metric, including the ones it requires such as interval, and is validated the same way. Endpoint per metric:
volume,twap,vwap,volumeContribution,perpSpotArbitrage:GET /v2/metrics/volume/rollingVolume,rollingTwap,rollingVwap:GET /v2/metrics/rolling_volume/spreadAbs,spreadBps,midPrice,midPriceMovement:GET /v2/metrics/spread/topOfBookBidPrice,topOfBookBidAmount,topOfBookBidAmountUsd,topOfBookAskPrice,topOfBookAskAmount,topOfBookAskAmountUsd:GET /v2/metrics/top_of_book/depthBid,depthAsk,countBid,countAsk:GET /v2/metrics/depth/slippageBuy,slippageSell:GET /v2/metrics/slippage/spreadUptime:GET /v2/metrics/uptime/spread/depthUptime:GET /v2/metrics/uptime/depth/fundingRate8h,fundingRateAnnualized,oiWeightedFundingRate8h,oiWeightedFundingRateAnnualized,openInterestUsd,openInterestBase:GET /v2/metrics/futures/marketMakerVolume:GET /v2/organizations/market-maker-metrics/volume/marketMakerDepthBid,marketMakerDepthAsk:GET /v2/organizations/market-maker-metrics/depth/marketMakerSpreadBps:GET /v2/organizations/market-maker-metrics/spread/marketMakerVolumeCoverage:GET /v2/organizations/market-maker-metrics/coverage/volume/marketMakerDepthCoverageBid,marketMakerDepthCoverageAsk:GET /v2/organizations/market-maker-metrics/coverage/depth/reportedVolume:GET /v2/organizations/reported-metrics/volume/reportedVolumeCoverage:GET /v2/organizations/reported-metrics/coverage/volume/reportedSpreadBps:GET /v2/organizations/reported-metrics/spread/reportedSpreadUptime:GET /v2/organizations/reported-metrics/uptime/spread/reportedDepthBid,reportedDepthAsk:GET /v2/organizations/reported-metrics/depth/reportedDepthUptimeBid,reportedDepthUptimeAsk:GET /v2/organizations/reported-metrics/uptime/depth/reportedDepthCoverageBid,reportedDepthCoverageAsk:GET /v2/organizations/reported-metrics/coverage/depth/
GET
/
v2
/
metrics
/
chart-csv
/
cURL
curl --request GET \
--url 'https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day' \
--header 'Authorization: ApiKey <key>'import requests
url = "https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day"
headers = {"Authorization": "ApiKey <key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'ApiKey <key>'}};
fetch('https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day', options)
.then(res => res.text())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "ApiKey <key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.glassmarkets.io/v2/metrics/chart-csv/?specific_metric=volume&group_by=pair&interval=1h&lookback=1-day")
.header("Authorization", "ApiKey <key>")
.asString();exchange,pair,timestamp,volume
Binance,BTC/USDT,2026-09-29T00:00:00Z,45340134.17
Bitfinex,BTC/USD,2026-09-29T00:00:00Z,579820.08Authorizations
metricsApiKeyAuthtokenAuth
Query Parameters
1M- Aggregated in 1 month periods.1w- Aggregated in 1 week periods.1d- Aggregated in 1 day periods.4h- Aggregated in 4 hour periods.1h- Aggregated in 1 hour periods.30m- Aggregated in 30 minute periods.15m- Aggregated in 15 minute periods.5m- Aggregated in 5 minute periods.1m- Aggregated in 1 minute periods.c- Will return all the data for the specified time range using the biggest periods possible.a- Will return the aggregate of the data for the specified time range.
Available options:
1M, 1w, 1d, 4h, 1h, 30m, 15m, 5m, 1m, c, a Minimum string length:
1Example:
"1h"
Relative window ending now. Can't be combined with time_start/time_end.
30-minutes- 30-minutes1-hour- 1-hour3-hours- 3-hours6-hours- 6-hours12-hours- 12-hours1-day- 1-day7-days- 7-days1-month- 1-month3-months- 3-months6-months- 6-months1-year- 1-year
Available options:
30-minutes, 1-hour, 3-hours, 6-hours, 12-hours, 1-day, 7-days, 1-month, 3-months, 6-months, 1-year Minimum string length:
1Example:
"1-day"
Trading session to restrict the window to. Requires market_hours_days; can't be combined with time_start/time_end or lookback.
pre-market- pre-marketopening-bell- opening-bellmarket-hours- market-hoursclosing-bell- closing-bellafter-hours- after-hoursblue-ocean- blue-oceanweekend-hours- weekend-hours
Available options:
pre-market, opening-bell, market-hours, closing-bell, after-hours, blue-ocean, weekend-hours Minimum string length:
1volume- volumetwap- twapvwap- vwaprollingVolume- rollingVolumerollingTwap- rollingTwaprollingVwap- rollingVwapspreadAbs- spreadAbsspreadBps- spreadBpsmidPrice- midPricemidPriceMovement- midPriceMovementtopOfBookBidPrice- topOfBookBidPricetopOfBookBidAmount- topOfBookBidAmounttopOfBookBidAmountUsd- topOfBookBidAmountUsdtopOfBookAskPrice- topOfBookAskPricetopOfBookAskAmount- topOfBookAskAmounttopOfBookAskAmountUsd- topOfBookAskAmountUsddepthBid- depthBiddepthAsk- depthAskcountBid- countBidcountAsk- countAskslippageBuy- slippageBuyslippageSell- slippageSellspreadUptime- spreadUptimedepthUptime- depthUptimevolumeContribution- volumeContributionfundingRate8h- fundingRate8hfundingRateAnnualized- fundingRateAnnualizedoiWeightedFundingRate8h- oiWeightedFundingRate8hoiWeightedFundingRateAnnualized- oiWeightedFundingRateAnnualizedopenInterestUsd- openInterestUsdopenInterestBase- openInterestBaseperpSpotArbitrage- perpSpotArbitragemarketMakerVolume- marketMakerVolumemarketMakerDepthBid- marketMakerDepthBidmarketMakerDepthAsk- marketMakerDepthAskmarketMakerSpreadBps- marketMakerSpreadBpsmarketMakerVolumeCoverage- marketMakerVolumeCoveragemarketMakerDepthCoverageBid- marketMakerDepthCoverageBidmarketMakerDepthCoverageAsk- marketMakerDepthCoverageAskreportedVolume- reportedVolumereportedVolumeCoverage- reportedVolumeCoveragereportedSpreadBps- reportedSpreadBpsreportedSpreadUptime- reportedSpreadUptimereportedDepthBid- reportedDepthBidreportedDepthAsk- reportedDepthAskreportedDepthUptimeBid- reportedDepthUptimeBidreportedDepthUptimeAsk- reportedDepthUptimeAskreportedDepthCoverageBid- reportedDepthCoverageBidreportedDepthCoverageAsk- reportedDepthCoverageAsk
Available options:
volume, twap, vwap, rollingVolume, rollingTwap, rollingVwap, spreadAbs, spreadBps, midPrice, midPriceMovement, topOfBookBidPrice, topOfBookBidAmount, topOfBookBidAmountUsd, topOfBookAskPrice, topOfBookAskAmount, topOfBookAskAmountUsd, depthBid, depthAsk, countBid, countAsk, slippageBuy, slippageSell, spreadUptime, depthUptime, volumeContribution, fundingRate8h, fundingRateAnnualized, oiWeightedFundingRate8h, oiWeightedFundingRateAnnualized, openInterestUsd, openInterestBase, perpSpotArbitrage, marketMakerVolume, marketMakerDepthBid, marketMakerDepthAsk, marketMakerSpreadBps, marketMakerVolumeCoverage, marketMakerDepthCoverageBid, marketMakerDepthCoverageAsk, reportedVolume, reportedVolumeCoverage, reportedSpreadBps, reportedSpreadUptime, reportedDepthBid, reportedDepthAsk, reportedDepthUptimeBid, reportedDepthUptimeAsk, reportedDepthCoverageBid, reportedDepthCoverageAsk Minimum string length:
1Example:
"volume"
Response
CSV file download.
The response is of type string.

