Skip to main content

Get OTC Volume

Returns the OTC volume time series of a node and all its descendants: a parent's figures include its children's. The volume is sold quantity × price of the subtree's accepted OTC offers, and the count is the number of tokens sold (not the number of offers). The figures come from statistics the platform refreshes periodically, so the newest trades 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/otc-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/otc-volume?start_time=2026-11-01T00:00:00Z&end_time=2026-11-02T23:59:59Z' \
--header 'Authorization: Bearer <access_token>'

Response​

{
"data": [
{
"volume": "36000",
"totalVolume": "512000",
"count": 30,
"totalCount": 420,
"createdAt": "2026-11-01T14:00:00Z",
"currencyTokenId": "68fe8c129367fd414b227c7a",
"currencySymbol": "TRYC"
}
],
"baselineVolume": "476000",
"baselineCount": 390,
"summary": {
"totalVolume": "512000",
"volume": "36000",
"totalCount": 420,
"count": 30
},
"currencySummaries": [
{
"currencyTokenId": "68fe8c129367fd414b227c7a",
"currencySymbol": "TRYC",
"volume": "36000",
"count": 30,
"totalVolume": "512000",
"totalCount": 420
}
]
}

Response Fields​

FieldTypeDescription
dataarrayOne item per (time bucket, currency token), oldest first. [] when the window has no data.
data[].volumestringOTC volume in this bucket
data[].totalVolumestringAll-time cumulative OTC volume at the end of this bucket
data[].countintegerTokens sold in this bucket
data[].totalCountintegerAll-time cumulative tokens sold at the end of this bucket
data[].createdAtstringTime of the newest statistics row in the bucket (ISO 8601)
data[].currencyTokenIdstringCurrency token the offers were priced in
data[].currencySymbolstringSymbol of that currency token
baselineVolumestringCumulative volume before start_time. "0" when start_time is not sent.
baselineCountintegerCumulative tokens sold 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 tokens sold 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. When the subtree trades in more than one currency, read currencySummaries, or convert each currency with Get Exchange Rates before adding. 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.