Execute Saved Metric
curl --request GET \
--url https://production.hifibridge.com/v2/reporting/metrics/{id}/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://production.hifibridge.com/v2/reporting/metrics/{id}/results"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://production.hifibridge.com/v2/reporting/metrics/{id}/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://production.hifibridge.com/v2/reporting/metrics/{id}/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production.hifibridge.com/v2/reporting/metrics/{id}/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://production.hifibridge.com/v2/reporting/metrics/{id}/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production.hifibridge.com/v2/reporting/metrics/{id}/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": [
{
"periodStart": "2025-11-06",
"grossVolume": 0
},
{
"periodStart": "2025-11-05",
"grossVolume": 0
},
{
"periodStart": "2025-11-04",
"grossVolume": 0
},
{
"periodStart": "2025-11-03",
"grossVolume": 0
},
{
"periodStart": "2025-11-02",
"grossVolume": 0
},
{
"periodStart": "2025-11-01",
"grossVolume": 0
}
],
"metadata": {
"template": "GROSS_VOLUME",
"recordCount": 6,
"projectedRowCount": null,
"filledCount": 6,
"calculationInterval": "day",
"dateRange": {
"start": "2025-11-01",
"end": "2025-11-07"
},
"filters": {
"createdAfter": {
"applied": "subset",
"specified": true,
"values": "2025-11-01"
},
"createdBefore": {
"applied": "subset",
"specified": true,
"values": "2025-11-07"
},
"calculationInterval": {
"applied": "subset",
"specified": true,
"values": "day"
},
"transactionTypes": {
"applied": "subset",
"specified": true,
"count": 2,
"values": [
"onramp",
"offramp"
]
},
"userIds": {
"applied": "all",
"specified": false,
"count": 1000,
"note": "1000 total (list omitted for brevity)"
}
},
"breakdowns": null
}
}Reporting
Execute Saved Metric
Runs the calculation for an existing saved metric and returns the dataset.
GET
/
v2
/
reporting
/
metrics
/
{id}
/
results
Execute Saved Metric
curl --request GET \
--url https://production.hifibridge.com/v2/reporting/metrics/{id}/results \
--header 'Authorization: Bearer <token>'import requests
url = "https://production.hifibridge.com/v2/reporting/metrics/{id}/results"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://production.hifibridge.com/v2/reporting/metrics/{id}/results', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://production.hifibridge.com/v2/reporting/metrics/{id}/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production.hifibridge.com/v2/reporting/metrics/{id}/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://production.hifibridge.com/v2/reporting/metrics/{id}/results")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production.hifibridge.com/v2/reporting/metrics/{id}/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": [
{
"periodStart": "2025-11-06",
"grossVolume": 0
},
{
"periodStart": "2025-11-05",
"grossVolume": 0
},
{
"periodStart": "2025-11-04",
"grossVolume": 0
},
{
"periodStart": "2025-11-03",
"grossVolume": 0
},
{
"periodStart": "2025-11-02",
"grossVolume": 0
},
{
"periodStart": "2025-11-01",
"grossVolume": 0
}
],
"metadata": {
"template": "GROSS_VOLUME",
"recordCount": 6,
"projectedRowCount": null,
"filledCount": 6,
"calculationInterval": "day",
"dateRange": {
"start": "2025-11-01",
"end": "2025-11-07"
},
"filters": {
"createdAfter": {
"applied": "subset",
"specified": true,
"values": "2025-11-01"
},
"createdBefore": {
"applied": "subset",
"specified": true,
"values": "2025-11-07"
},
"calculationInterval": {
"applied": "subset",
"specified": true,
"values": "day"
},
"transactionTypes": {
"applied": "subset",
"specified": true,
"count": 2,
"values": [
"onramp",
"offramp"
]
},
"userIds": {
"applied": "all",
"specified": false,
"count": 1000,
"note": "1000 total (list omitted for brevity)"
}
},
"breakdowns": null
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The UUID of the saved metric to execute
Response
Metric calculation results
Response from metric calculation endpoints. The structure of data array items
varies based on the breakdowns parameter in the request.
Base structure (no breakdowns):
- Each item has:
periodStart, plus metric-specific fields (e.g.,grossVolume,transactionCount)
With breakdowns:
- Each item includes breakdown dimension fields (e.g.,
transactionType,transactionStatus,userId) - Field names match the breakdown dimension names from the request
Example without breakdowns:
{
"status": "success",
"data": [
{ "periodStart": "2025-01-01T00:00:00Z", "grossVolume": 1000.50 },
{ "periodStart": "2025-01-02T00:00:00Z", "grossVolume": 2000.75 }
],
"metadata": { ... }
}
Example with breakdowns: ["transactionType"]:
{
"status": "success",
"data": [
{ "periodStart": "2025-01-01T00:00:00Z", "transactionType": "onramp", "grossVolume": 500.25 },
{ "periodStart": "2025-01-01T00:00:00Z", "transactionType": "offramp", "grossVolume": 500.25 }
],
"metadata": { ... }
}
Response status
Available options:
success Array of metric calculation results. Each object structure depends on:
- The metric template (determines metric value fields)
- The breakdowns parameter (adds dimension fields)
Show child attributes
Show child attributes
Metadata about the metric calculation
Show child attributes
Show child attributes
⌘I