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
| Name | Type | In | Description |
|---|---|---|---|
node_id | string | path | Required. The node at the top of the subtree to aggregate |
start_time | string | query | Start of the window, RFC 3339 (2026-01-01T00:00:00Z). Default: twelve months before now. |
end_time | string | query | End 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
| Name | Description |
|---|---|
Authorization | Required. 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
| Field | Type | Description |
|---|---|---|
data | array | One item per (time bucket, currency token), oldest first. [] when the window has no data. |
data[].volume | string | OTC volume in this bucket |
data[].totalVolume | string | All-time cumulative OTC volume at the end of this bucket |
data[].count | integer | Tokens sold in this bucket |
data[].totalCount | integer | All-time cumulative tokens sold at the end of this bucket |
data[].createdAt | string | Time of the newest statistics row in the bucket (ISO 8601) |
data[].currencyTokenId | string | Currency token the offers were priced in |
data[].currencySymbol | string | Symbol of that currency token |
baselineVolume | string | Cumulative volume before start_time. "0" when start_time is not sent. |
baselineCount | integer | Cumulative tokens sold before start_time. 0 when start_time is not sent. |
summary.volume | string | Sum of data[].volume: the window's volume |
summary.count | integer | Sum of data[].count |
summary.totalVolume | string | baselineVolume + summary.volume |
summary.totalCount | integer | baselineCount + summary.count |
currencySummaries | array | The window's figures per currency token. Omitted when data is empty. |
currencySummaries[].currencyTokenId | string | Currency token |
currencySummaries[].currencySymbol | string | Its symbol |
currencySummaries[].volume | string | Window volume in this currency |
currencySummaries[].count | integer | Window tokens sold in this currency |
currencySummaries[].totalVolume | string | Highest cumulative volume reached in this currency during the window |
currencySummaries[].totalCount | integer | Highest 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
| Status | Code | Description |
|---|---|---|
| 400 | 10015 | start_time or end_time is not an RFC 3339 time |
| 400 | 10016 | node_id is not a valid id |
| 400 | 10001 | Node not found |
| 403 | 10005 | The node is outside the API key's node hierarchy |
See Errors for the error format and common codes.