Skip to main content

Get Purchase Volume

Returns the purchase volume time series of a node and all its descendants: a parent's figures include its children's. The volume is quantity × price of the subtree's settled purchases, across every market, and the count is the number of purchases. The figures come from statistics the platform refreshes periodically, so the newest purchases can take a while to appear.

The series is bucketed by time and split per currency token. Volumes are decimal strings. Unlike most responses, this one uses camelCase field names.

Required permission: node:summary:view

Request​

GET /v2/admin/nodes/{node_id}/analytics/purchase-volume?start_time={start_time}&end_time={end_time}

Parameters​

NameTypeInDescription
node_idstringpathRequired. The node at the top of the subtree to aggregate
start_timestringqueryStart of the window, RFC 3339 (2026-01-01T00:00:00Z). Default: twelve months before now.
end_timestringqueryEnd of the window, RFC 3339. Default: now.

The bucket size follows the window length: hourly up to 2 days, weekly up to 40 days, monthly up to 400 days, yearly beyond.

Headers​

NameDescription
AuthorizationRequired. Bearer <access_token>

Example​

curl --request GET \
--url '{{baseUrl}}/v2/admin/nodes/6901350deb7ed8c1c38de4e9/analytics/purchase-volume?start_time=2026-08-01T00:00:00Z&end_time=2026-10-31T23:59:59Z' \
--header 'Authorization: Bearer <access_token>'

Response​

{
"data": [
{
"volume": "185000",
"totalVolume": "1240000",
"count": 37,
"totalCount": 212,
"createdAt": "2026-09-30T23:00:00Z",
"currencyTokenId": "68fe8c129367fd414b227c7a",
"currencySymbol": "TRYC"
},
{
"volume": "4200.5",
"totalVolume": "4200.5",
"count": 3,
"totalCount": 3,
"createdAt": "2026-10-28T16:00:00Z",
"currencyTokenId": "6901a7c2e4b5d6f708a9b0c1",
"currencySymbol": "USDC"
}
],
"baselineVolume": "1055000",
"baselineCount": 175,
"summary": {
"totalVolume": "1244200.5",
"volume": "189200.5",
"totalCount": 215,
"count": 40
},
"currencySummaries": [
{
"currencyTokenId": "68fe8c129367fd414b227c7a",
"currencySymbol": "TRYC",
"volume": "185000",
"count": 37,
"totalVolume": "1240000",
"totalCount": 212
},
{
"currencyTokenId": "6901a7c2e4b5d6f708a9b0c1",
"currencySymbol": "USDC",
"volume": "4200.5",
"count": 3,
"totalVolume": "4200.5",
"totalCount": 3
}
]
}

The example shows why summary must not be read as one amount when several currencies appear: it adds TRYC and USDC together. Use currencySummaries, or convert with Get Exchange Rates.

Response Fields​

FieldTypeDescription
dataarrayOne item per (time bucket, currency token), oldest first. [] when the window has no data.
data[].volumestringPurchase volume in this bucket
data[].totalVolumestringAll-time cumulative purchase volume at the end of this bucket
data[].countintegerNumber of purchases in this bucket
data[].totalCountintegerAll-time cumulative number of purchases at the end of this bucket
data[].createdAtstringTime of the newest statistics row in the bucket (ISO 8601)
data[].currencyTokenIdstringCurrency token the purchases were paid in
data[].currencySymbolstringSymbol of that currency token
baselineVolumestringCumulative volume before start_time. "0" when start_time is not sent.
baselineCountintegerCumulative count before start_time. 0 when start_time is not sent.
summary.volumestringSum of data[].volume: the window's volume
summary.countintegerSum of data[].count
summary.totalVolumestringbaselineVolume + summary.volume
summary.totalCountintegerbaselineCount + summary.count
currencySummariesarrayThe window's figures per currency token. Omitted when data is empty.
currencySummaries[].currencyTokenIdstringCurrency token
currencySummaries[].currencySymbolstringIts symbol
currencySummaries[].volumestringWindow volume in this currency
currencySummaries[].countintegerWindow count in this currency
currencySummaries[].totalVolumestringHighest cumulative volume reached in this currency during the window
currencySummaries[].totalCountintegerHighest cumulative count reached in this currency during the window

summary and the baseline add every currency together. Without start_time the baseline is zero, so summary.totalVolume then covers only the default twelve-month window.

Errors​

StatusCodeDescription
40010015start_time or end_time is not an RFC 3339 time
40010016node_id is not a valid id
40010001Node not found
40310005The node is outside the API key's node hierarchy

See Errors for the error format and common codes.