Revenue
Revenue analytics report the streams, downloads, and earnings that DSPs report for your catalog. Choose how the
results are grouped with the dimension parameter.
All amounts are in the currency set for your organization.
For the date range, pagination, sorting, and shared filters, see the Analytics Overview.
Moving from the V1.0 API? Responses are unchanged—only the route and a few parameters differ. See Migrating from the V1.0 API.
Dimensions
| Dimension | Groups by | Populated metadata fields |
|---|---|---|
track | Track. A track earning as both audio and video returns one row per asset type. | id, name, version, imageId, assetType, artistId, artistName, releaseId, releaseName, releaseVersion |
release | Release. | id, name, version, artistId, artistName |
artist | Artist. | id, name |
label | Label. | id, name |
country | Country where the revenue was generated. | id, iso2Code |
distributor | DSP. | id, name |
deliveryType | Delivery type (e.g., Subscription Streaming, Ad-Supported Streaming). | id, name |
assetType | Asset type. Breaks your revenue down into tracks, releases, videos, and other asset types. | id (asset type ID), name (asset type key, e.g., track, release, video) |
youTubeChannel | YouTube channel. | id, name |
youTubeVideo | YouTube video. | id, name, channelId, channelName |
date | Nothing. Returns totals for the whole range, or one row per period. | None |
Date Granularity & Rows
Revenue rows are flat: each item carries its metrics (streamsCount, netRevenue, …) directly, with no metrics
array. Revenue supports monthly, yearly, and all. Other values are not supported.
- Omitted or
all: one row per dimension value.dateisnull. monthlyoryearly: one row per dimension value per period, with the period start indate(YYYY-MM-DD). For example,dimension=country&dateGranularity=monthlyover three months returns up to three rows for each country.
Sorting applies across all rows, so with a granularity set, rows of the same dimension value are not necessarily adjacent.
Asset Types
Use assetTypes (repeatable) to restrict revenue to specific kinds of assets. Omit it to include all.
| Value | Includes |
|---|---|
track | Audio tracks, including tracks sold as part of a release. |
video | Videos, including videos sold as part of a release. |
release | Releases sold as a whole (e.g., album downloads). |
physicalRelease | Physical releases. |
musicalWork | Musical works (compositions). |
youTubeChannel | YouTube channels. |
youTubeVideo | YouTube videos. |
unknown | Revenue that could not be attributed to a known asset type. |
assetTypes is ignored for the youTubeChannel and youTubeVideo dimensions.
Sorting
orderByProperty accepts a metric column (streamscount, downloadscount, streamsrevenue, downloadsrevenue, or
netrevenue) or a column of the requested dimension. For how sorting works, see the
Analytics Overview.
| Dimension | Dimension columns |
|---|---|
track | trackid, trackname, trackversion, releaseid, releasename, releaseversion, artistid, artistname, assettypeid |
release | releaseid, releasename, releaseversion, artistid, artistname |
artist | artistid, artistname |
label | labelid, labelname |
country | countryid, iso2code |
distributor | distributorid, distributorname |
deliveryType | deliverytypeid, deliverytypename |
assetType | assettypeid |
youTubeChannel | channelid, channelname |
youTubeVideo | videoid, videoname, channelid, channelname |
date | None |
Get Revenue
/analytics/v1/revenue Retrieves streams, downloads, and revenue grouped by the requested dimension.
Query Parameters
| Parameter | Description |
|---|---|
dimension * string | How to group the results (case-insensitive). See the Dimensions section above. Examples: track, artist, country, distributor, date |
payeeIds integer[] | Restrict to revenue assigned to these payees. Ignored for payee portal accounts, which are always scoped to their own payee. |
assetTypes WellKnownRevenueAssetTypes[] | Restrict to these asset types. Omit to include all. See the Asset Types section above. Examples: track, video, release, unknown |
countryIds integer[] | Restrict to these countries. Ignored for dimensions whose underlying data has no country breakdown. Retrieved from GET /common/lookup/countries on the V1.0 API. |
distributorIds integer[] | Restrict to these DSPs. Ignored for the |
excludeDistributorIds integer[] | Leave out these DSPs. Ignored for the same dimensions as |
excludeTikTok boolean | Leave out TikTok. Equivalent to adding TikTok to |
deliveryTypeIds integer[] | Restrict to these delivery types. Only applied with |
channelIds integer[] | Restrict to these YouTube channels. Only applied with |
videoIds integer[] | Restrict to these YouTube videos. Only applied with |
releaseIds integer[] | Restrict to these releases. |
trackIds integer[] | Restrict to these tracks. |
artistIds integer[] | Restrict to these artists. Do not send for artist portal accounts—the request is rejected with |
labelIds integer[] | Restrict to these labels. Do not send for label portal accounts—the request is rejected with |
dateGranularity string | Splits each row into periods (case-insensitive). See the Date Granularity & Rows section above. Examples: monthly, yearly, all |
onlyNew boolean | Return only data first loaded today. Cannot be combined with |
orderByProperty string | Sort column (case-insensitive). The accepted values depend on Examples: netrevenue, streamsrevenue, downloadsrevenue, streamscount, downloadscount |
orderByDescending boolean | Sort in descending order. Defaults to |
pageSize integer | Items per page. Defaults to 2000, which is also the maximum. |
pageNumber integer | 1-based page number. Defaults to 1. |
fromDate string | Inclusive start date ( |
toDate string | Inclusive end date ( |
targetEnterpriseId integer | Scope the request to a single client by passing its ID. |
Responses
object totals RevenueTotalsModel streamsCount integer downloadsCount integer streamsRevenue number downloadsRevenue number netRevenue number fromDate string | null YYYY-MM-DD) after defaults were applied. toDate string | null YYYY-MM-DD) after defaults were applied. totalItemsCount integer pageNumber integer | null pageSize integer | null totalPagesCount number items RevenueListModel[] date string | null YYYY-MM-DD) when a dateGranularity other than all is set; null otherwise. metadata RevenueMetadataModel null. See the Dimensions section above. id integer | null track, a DSP ID for distributor, an asset type ID for assetType, and so on). name string | null assetType, the asset type key (e.g., track, release, video). version string | null imageId string | null track dimension. assetType string | null track row (e.g., track or video), since a track can earn as more than one asset type. Populated for the track dimension only; dimension=assetType returns the asset type in id and name. artistId integer | null artistName string | null releaseId integer | null releaseName string | null releaseVersion string | null iso2Code string | null country dimension. channelId integer | null channelName string | null streamsCount integer downloadsCount integer streamsRevenue number downloadsRevenue number netRevenue number /analytics/v1/revenue curl -X GET "https://platform.revelator.com/analytics/v1/revenue?dimension=track&fromDate=2026-01-01&toDate=2026-06-30&orderByProperty=netrevenue&orderByDescending=true&pageSize=2" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/analytics/v1/revenue?dimension=track&fromDate=2026-01-01&toDate=2026-06-30&orderByProperty=netrevenue&orderByDescending=true&pageSize=2" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
{
"totals": {
"streamsCount": 16129208357,
"downloadsCount": 19712,
"streamsRevenue": 10092544.2787628055,
"downloadsRevenue": 12968.98259,
"netRevenue": 10105513.2613528055
},
"fromDate": "2026-01-01",
"toDate": "2026-06-30",
"totalItemsCount": 82253,
"pageNumber": 1,
"pageSize": 2,
"totalPagesCount": 41127,
"items": [
{
"date": null,
"metadata": {
"id": 4148661,
"name": "Track Title",
"version": "Remix",
"imageId": null,
"assetType": "track",
"artistId": 901466,
"artistName": "Artist Name",
"releaseId": 1637054,
"releaseName": "Release Title",
"releaseVersion": "Remix",
"iso2Code": null,
"channelId": null,
"channelName": null
},
"streamsCount": 31963351,
"downloadsCount": 93,
"streamsRevenue": 53073.4892367297,
"downloadsRevenue": 66.23145,
"netRevenue": 53139.7206867297
},
{
"date": null,
"metadata": {
"id": 6226647,
"name": "Another Track",
"version": null,
"imageId": null,
"assetType": "track",
"artistId": 585943,
"artistName": "Another Artist",
"releaseId": 2750299,
"releaseName": "Another Release",
"releaseVersion": null,
"iso2Code": null,
"channelId": null,
"channelName": null
},
"streamsCount": 9694779,
"downloadsCount": 2,
"streamsRevenue": 49004.1964553248,
"downloadsRevenue": 1.379,
"netRevenue": 49005.5754553248
}
]
} {
"totals": {
"streamsCount": 16129208357,
"downloadsCount": 19712,
"streamsRevenue": 10092544.2787628055,
"downloadsRevenue": 12968.98259,
"netRevenue": 10105513.2613528055
},
"fromDate": "2026-01-01",
"toDate": "2026-06-30",
"totalItemsCount": 82253,
"pageNumber": 1,
"pageSize": 2,
"totalPagesCount": 41127,
"items": [
{
"date": null,
"metadata": {
"id": 4148661,
"name": "Track Title",
"version": "Remix",
"imageId": null,
"assetType": "track",
"artistId": 901466,
"artistName": "Artist Name",
"releaseId": 1637054,
"releaseName": "Release Title",
"releaseVersion": "Remix",
"iso2Code": null,
"channelId": null,
"channelName": null
},
"streamsCount": 31963351,
"downloadsCount": 93,
"streamsRevenue": 53073.4892367297,
"downloadsRevenue": 66.23145,
"netRevenue": 53139.7206867297
},
{
"date": null,
"metadata": {
"id": 6226647,
"name": "Another Track",
"version": null,
"imageId": null,
"assetType": "track",
"artistId": 585943,
"artistName": "Another Artist",
"releaseId": 2750299,
"releaseName": "Another Release",
"releaseVersion": null,
"iso2Code": null,
"channelId": null,
"channelName": null
},
"streamsCount": 9694779,
"downloadsCount": 2,
"streamsRevenue": 49004.1964553248,
"downloadsRevenue": 1.379,
"netRevenue": 49005.5754553248
}
]
} Migrating from the V1.0 API
This endpoint replaces the V1.0 GET /analytics/revenue/{aggregation} routes and the Keymetrics endpoint
(GET /analytics/revenue/metricsByDate). The V1.0 routes are deprecated: after November 25, 2026, they are no longer supported and may stop working
without prior notice.
For the by… routes, the response is identical, field for field, and you keep using the same access token. Only the
route changes: the by… path segment becomes the dimension query parameter.
| V1.0 | V2.0 |
|---|---|
https://api.revelator.com/analytics/revenue/by{Aggregation} | https://platform.revelator.com/analytics/v1/revenue?dimension={dimension} |
| V1.0 aggregation | dimension |
|---|---|
byTrack | track |
byRelease | release |
byArtist | artist |
byLabel | label |
byCountry | country |
byDistributor | distributor |
byDeliveryType | deliveryType |
byYouTubeChannel | youTubeChannel |
byYouTubeVideo | youTubeVideo |
byFormat | assetType |
byFormat is not carried over. Use dimension=assetType instead: the response has the same structure and the same
totals, but the rows are grouped by asset type (track, release, video, …) rather than by sales format, so the
individual rows differ.
The date dimension is new and has no direct V1.0 equivalent; it also replaces Keymetrics (see below).
All other query parameters—fromDate, toDate, dateGranularity, pagination, sorting, and filters—keep their names
and behavior. Array filters work both in the indexed format used by V1.0
(releaseIds%5B0%5D=1&releaseIds%5B1%5D=2) and by repeating the parameter (releaseIds=1&releaseIds=2). We recommend
repeating the parameter, as with all other V2.0 endpoints.
- GET https://api.revelator.com/analytics/revenue/byCountry?fromDate=2026-04-01&toDate=2026-06-30&dateGranularity=Monthly
+ GET https://platform.revelator.com/analytics/v1/revenue?dimension=country&fromDate=2026-04-01&toDate=2026-06-30&dateGranularity=monthly
Keymetrics
Keymetrics (GET /analytics/revenue/metricsByDate) has no one-to-one replacement—its response, a list of
{ metric, value } pairs per month, does not carry over. Use dimension=date instead, which returns the same figures as
flat fields:
- Monthly figures (
monthRevenue…): requestdimension=date&dateGranularity=monthly. Each row is one month. - Lifetime figures (
lifetimeRevenue…): requestdimension=date&dateGranularity=allwithfromDateset before your earliest revenue (e.g.,2000-01-01) andtoDateset to the end of the month you want the running total for. Without an explicitfromDate, only the last three months are included.
| Keymetrics metric | V2.0 field |
|---|---|
monthRevenue, lifetimeRevenue | netRevenue |
…FromStreams | streamsRevenue |
…FromDownloads | downloadsRevenue |
…FromStreamsQuantity | streamsCount |
…FromDownloadsQuantity | downloadsCount |
monthRevenueQuantity, lifetimeRevenueQuantity | streamsCount + downloadsCount |
- GET https://api.revelator.com/analytics/revenue/metricsByDate?fromDate=2026-05-01&toDate=2026-06-30
+ GET https://platform.revelator.com/analytics/v1/revenue?dimension=date&dateGranularity=monthly&fromDate=2026-05-01&toDate=2026-06-30
+ GET https://platform.revelator.com/analytics/v1/revenue?dimension=date&dateGranularity=all&fromDate=2000-01-01&toDate=2026-06-30