Get Fee Revenue
Returns the fee revenue time series of a node and all its descendants: a parent's figures include what its children earned. Each node's rows record that node's cut of the buyer and seller fees on its confirmed purchases; the platform owner node's rows record the platform owner's cut of every purchase. 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/fee-revenue?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/fee-revenue?start_time=2026-08-01T00:00:00Z&end_time=2026-10-31T23:59:59Z' \
--header 'Authorization: Bearer <access_token>'
Response
{
"data": [
{
"volume": "1250.5",
"totalVolume": "8420.75",
"count": 14,
"totalCount": 96,
"createdAt": "2026-08-31T23:00:00Z",
"currencyTokenId": "68fe8c129367fd414b227c7a",
"currencySymbol": "TRYC"
},
{
"volume": "980",
"totalVolume": "9400.75",
"count": 11,
"totalCount": 107,
"createdAt": "2026-09-30T23:00:00Z",
"currencyTokenId": "68fe8c129367fd414b227c7a",
"currencySymbol": "TRYC"
}
],
"baselineVolume": "7170.25",
"baselineCount": 82,
"summary": {
"totalVolume": "9400.75",
"volume": "2230.5",
"totalCount": 107,
"count": 25
},
"currencySummaries": [
{
"currencyTokenId": "68fe8c129367fd414b227c7a",
"currencySymbol": "TRYC",
"volume": "2230.5",
"count": 25,
"totalVolume": "9400.75",
"totalCount": 107
}
]
}
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 | Fee revenue earned in this bucket |
data[].totalVolume | string | All-time cumulative fee revenue at the end of this bucket |
data[].count | integer | Number of purchases counted in this bucket |
data[].totalCount | integer | All-time cumulative count 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 figures are in |
data[].currencySymbol | string | Symbol of that currency token |
baselineVolume | string | Cumulative fee revenue before start_time. "0" when start_time is not sent. |
baselineCount | integer | Cumulative count before start_time. 0 when start_time is not sent. |
summary.volume | string | Sum of data[].volume: the window's revenue |
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 revenue in this currency |
currencySummaries[].count | integer | Window count in this currency |
currencySummaries[].totalVolume | string | Highest cumulative revenue 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 earns 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.