curl --request GET \
--url 'https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z' \
--header 'Authorization: ApiKey <key>'import requests
url = "https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z"
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/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z', options)
.then(res => res.json())
.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/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z"
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/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z")
.header("Authorization", "ApiKey <key>")
.asString();{
"time_start": "2026-09-30T00:00:00Z",
"time_end": "2026-10-01T00:00:00Z",
"methodology": {
"version": "liquidity-loan-v1",
"score_weights": {
"volume_share": 0.25,
"depth_share": 0.2,
"volume_to_loan": 0.25,
"depth_to_loan": 0.15,
"volume_to_fdv": 0.05,
"hourly_uptime": 0.1
},
"score_references": {
"volume_share": 0.01,
"depth_share": 0.01,
"volume_to_loan": 1,
"depth_to_loan": 0.1,
"volume_to_fdv": 0.01
},
"loan_amount_unit": "tokens",
"target_window_hours": 24,
"target_hit_ratio": 0.75,
"depth_bps": 100,
"volume_weight": 0.5,
"depth_weight": 0.5,
"missing_liquidity": "Missing components earn no points. Loan scores use fully covered assets and scale by their share of portfolio liquidity. Incomplete scores are provisional."
},
"rankings": [
{
"organization": {
"slug": "example-mm",
"name": "Example Market Maker"
},
"score": 52.5,
"component_scores": {
"volume_share": 50,
"depth_share": 50,
"volume_to_loan": 50,
"depth_to_loan": 50,
"volume_to_fdv": 50,
"hourly_uptime": 75
},
"ratios": {
"volume_share": 0.01,
"depth_share": 0.01,
"volume_to_loan": 1,
"depth_to_loan": 0.1,
"volume_to_fdv": 0.01,
"hourly_uptime": 0.75
},
"data_tier": "shield",
"loan_value_usd": 7750000,
"loan_coverage": 1,
"provisional": false,
"hit_target_count": 13,
"target_count": 13,
"total_volume": 7750000,
"total_depth": 775000,
"assets": [
{
"asset": "ONDO",
"score": 100,
"hit_target_count": 13,
"target_count": 13,
"volume": 7750000,
"depth": 775000,
"volume_share": 1,
"depth_share": 1,
"weight": 1,
"hourly_uptime": 0.75,
"loan_value_usd": 7750000,
"loan_coverage": 1,
"fdv": 775000000
}
],
"weighting": {
"volume_weight": 0.5,
"depth_weight": 0.5,
"equal_weight": 0
},
"rank": 1
}
]
}Rank market makers
Staff rankings combine market volume/depth contribution, daily volume and depth relative to loan value, daily volume relative to FDV, and hourly target reliability. Shield-backed market makers rank before reported-only ones. Loan scores use fully covered assets and scale by their share of portfolio volume or depth. Non-staff rankings use liquidity-weighted target hit rates. The window must contain completed whole hours and span at most 366 days. Targets hit when at least 75% of hourly buckets pass, or a full UTC day range has all daily buckets and their average passes. methodology describes the weighting.
curl --request GET \
--url 'https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z' \
--header 'Authorization: ApiKey <key>'import requests
url = "https://api.glassmarkets.io/v2/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z"
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/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z', options)
.then(res => res.json())
.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/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z"
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/organizations/market-maker-metrics/uptime/rankings/?time_start=2026-10-01T00%3A00%3A00Z&time_end=2026-10-02T00%3A00%3A00Z")
.header("Authorization", "ApiKey <key>")
.asString();{
"time_start": "2026-09-30T00:00:00Z",
"time_end": "2026-10-01T00:00:00Z",
"methodology": {
"version": "liquidity-loan-v1",
"score_weights": {
"volume_share": 0.25,
"depth_share": 0.2,
"volume_to_loan": 0.25,
"depth_to_loan": 0.15,
"volume_to_fdv": 0.05,
"hourly_uptime": 0.1
},
"score_references": {
"volume_share": 0.01,
"depth_share": 0.01,
"volume_to_loan": 1,
"depth_to_loan": 0.1,
"volume_to_fdv": 0.01
},
"loan_amount_unit": "tokens",
"target_window_hours": 24,
"target_hit_ratio": 0.75,
"depth_bps": 100,
"volume_weight": 0.5,
"depth_weight": 0.5,
"missing_liquidity": "Missing components earn no points. Loan scores use fully covered assets and scale by their share of portfolio liquidity. Incomplete scores are provisional."
},
"rankings": [
{
"organization": {
"slug": "example-mm",
"name": "Example Market Maker"
},
"score": 52.5,
"component_scores": {
"volume_share": 50,
"depth_share": 50,
"volume_to_loan": 50,
"depth_to_loan": 50,
"volume_to_fdv": 50,
"hourly_uptime": 75
},
"ratios": {
"volume_share": 0.01,
"depth_share": 0.01,
"volume_to_loan": 1,
"depth_to_loan": 0.1,
"volume_to_fdv": 0.01,
"hourly_uptime": 0.75
},
"data_tier": "shield",
"loan_value_usd": 7750000,
"loan_coverage": 1,
"provisional": false,
"hit_target_count": 13,
"target_count": 13,
"total_volume": 7750000,
"total_depth": 775000,
"assets": [
{
"asset": "ONDO",
"score": 100,
"hit_target_count": 13,
"target_count": 13,
"volume": 7750000,
"depth": 775000,
"volume_share": 1,
"depth_share": 1,
"weight": 1,
"hourly_uptime": 0.75,
"loan_value_usd": 7750000,
"loan_coverage": 1,
"fdv": 775000000
}
],
"weighting": {
"volume_weight": 0.5,
"depth_weight": 0.5,
"equal_weight": 0
},
"rank": 1
}
]
}Authorizations
Scoped API key with required prefix "ApiKey ". Available scopes: metrics:read, reported_metrics:write and mm_metrics:read.
Query Parameters
Comma seperated list of assets <asset>,<asset>.Defaults to all assets the user has access to if not provided.
10030-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
30-minutes, 1-hour, 3-hours, 6-hours, 12-hours, 1-day, 7-days, 1-month, 3-months, 6-months, 1-year 1Comma seperated list of organization slugs <slug>,<slug>.Defaults to all organizations the user is member of, if not provided.Available organizations are returned in the /v1/organizations endpoint.
100"2026-10-02T00:00:00Z"
"2026-10-01T00:00:00Z"

