Revelator’s Analytics API data provides consumption (trends) and revenue data.
For analytics with multiple options for aggregation, granularity, and filtering, see Comprehensive Analytics.
For a lightweight endpoint with various pre-calculated, enterprise-level metrics, see Keymetrics.
The primary analytics endpoints follow a standardized URL template with interchangeable components.
/analytics/{dataSet}/{aggregationDimension}?dateGranularity={granularity}
…
Effective September 26, 2025, the trends
aggregation will no longer refresh data and will be removed without
further notice. Please migrate to V3 analytics at /analytics/consumption/{aggregation}
.
For full details, see the Changelog entry.
metadata
will be different, based on the aggregationDimension
and can be implemented as a generic type with a
metadata type parameter - AnalyticsResonseItem<TMetadata>
using a different TMetadata
for each
aggregationDimension
.date
should be excluded or null
if dateGranularity
is null
or all
Component | Passed as | Description |
---|---|---|
Data Set required | URL parameter | Data range to be aggregated. Currently supports:
|
Aggregation Dimension required | URL parameter | Data grouping dimension. Currently supports:
|
Date Granularity optional | Querystring parameter: dateGranularity | Filter Level of date grouping. Options are:
|
Filter | Multiple querystring parameters based on the desired filter. | Filters to be applied to the dataSet before grouping. You can apply multiple filters simultaneously. Currently supports:
Important: How to format array filters in the URL To provide an array of IDs, you must format the query string parameters by encoding the array brackets ( [] ) and providing an index for each value. Example: To filter for releaseIds=[1035587, 1628168] , your query string would look like this:?releaseIds%5B0%5D=1035587&releaseIds%5B1%5D=1628168 |
Page optional | Querystring parameters:
| Controls the amount of response data provided. |
Order optional | Querystring parameters:
| Controls how the response data is ordered, and by what property. |
Date range optional | Querystring parameters:
| Filters the results by date. Both parameters expect an ISO 8601 date format (e.g., YYYY-MM-DD ). Behavior: - If fromDate and toDate are both provided: The API returns results for the specified date range.- If only fromDate is provided: The API returns results for a three-month period starting from the fromDate .- If only toDate is provided: The API returns results for a three-month period ending on the toDate .- If neither is provided: The API returns results for the last three months by default. |
Targer Enterprise optional | Querystring parameter: targetEnterpriseId (integer) | Allows a parent enterprise user to retrieve data specifically for one of their child enterprises. Important: Currently, this parameter is only effective when the Data Set (URL parameter) is revenue . It will be ignored for other Data Sets. |
Example requests for different combinations of Data Sets and Aggregation Dimensions.
trends
) Analyticsrevenue
) AnalyticsThe following endpoints can be used to receive analytics metrics, aggregated by date; Revenue data (segregated monthly) and Trends data (segregated daily).
Effective September 26, 2025, the trends
aggregation will no longer refresh data and will be removed without
further notice. Please migrate to V3 analytics at /analytics/consumption/{aggregation}
.
For full details, see the Changelog entry.
/analytics/trends/metricsByDate
Retrieves trends analytics data, with one object returned for each day within the selected date range.
At least one date parameter (fromDate
or toDate
) is required to retrieve data. Omitting both will result in a
500
error.
Parameter | Type | Description |
---|---|---|
fromDate required* | string | The start date for the date range, in YYYY-MM-DD format. *Required if toDate is not provided. |
toDate required* | string | The end date for the date range, in YYYY-MM-DD format. *Required if fromDate is not provided. |
metrics optional | string | Defaults to all available metrics when a valid date range is provided. To request specific metrics, repeat the parameter for each desired metric (e.g., ?metrics=dayStreams&metrics=daySkipRate ). If metrics is provided without a date range, the endpoint will return an empty array [] . |
/analytics/revenue/metricsByDate
Retrieves revenue analytics data, with one object returned for each month within the selected date range.
Parameter | Type | Description |
---|---|---|
fromDate optional | string | The start date for the date range, in YYYY-MM-DD format. Defaults to the most current date with available data. As Revenue data is segregated monthly, this date should typically be the first of the month. |
toDate optional | string | The end date for the date range, in YYYY-MM-DD format. Defaults to the most current date with available data. As Revenue data is segregated monthly, this date should typically be the first of the month. |
metrics optional | string | Defaults to all available metrics. To request specific metrics, provide the parameter once for each desired metric. Example: metrics=monthRevenue |
targerEnterpriseId optional | integer | Allows a parent enterprise user to retrieve metrics specifically for one of their child enterprises. |
With the goal of providing a more comprehensive analytics solution, we have launched a new version of the Revelator Analytics API (v3).
This is a beta version of the API. Please reach out to us if there are any issues.
The V3 API currently includes only the consumption and engagement data endpoints. More endpoints matching their V2 counterparts, as well as brand new endpoints, will be added in the future.
/analytics/{metric}/{aggregation}
Retrieves analytics data (consumption or engagement metrics) aggregated by different dimensions.
Available Metrics
consumption
- previously trendsengagement
Each one will have its own set of metrics
on the response object
Available Aggregation Dimensions
byArtist
byCountry
byDate
byDeliveryType
byDiscoveryType
byDistributor
byLabel
byRecordingVersion
byRelease
bySourceOfStream
byTrack
Notes:
byDate
endpoint does not have the metadata object in the items.dateGranularity
, results are nested within a metrics
array for each item.releaseIds=2384320&releaseIds=1628168
).Parameter | Type | Description |
---|---|---|
fromDate required | string | Start date for the data range (YYYY-MM-DD ). |
toDate required | string | End date for the data range (YYYY-MM-DD ). |
dateGranularity optional | string | Date granularity for results. Possible values: Daily , Weekly , Monthly , Quarterly , Yearly , All , Null . |
pageSize optional | integer | Number of items per page. |
pageNumber optional | integer | Page number for pagination. |
orderByProperty optional | string | Property to order results by (e.g., streamsCount ). |
orderByDescending optional | boolean | If true, orders results in descending order. |
Filter | Type | Description | Applicable Aggregations |
---|---|---|---|
releaseIds | array of integers | Filter by one or more release IDs. | All |
trackIds | array of integers | Filter by one or more track IDs. | All |
artistIds | array of integers | Filter by one or more artist IDs. | All |
labelIds | array of integers | Filter by one or more label IDs. | All |
distributorIds | array of integers | Filter by one or more distributor IDs. | All |
excludeDistributorIds | array of integers | Exclude specific distributor IDs from the results. | All |
excludeTikTok | boolean | If true, excludes TikTok data from the results. Defaults to false. | All |
countryIds | array of integer | Filter by one or more country IDs. | All |
deliveryTypeIds | array of integers | Filter by one or more delivery type IDs. | byDeliveryType |
discoveryTypeIds | array of integers | Filter by one or more discovery type IDs. | byDiscoveryType |
recordingVersionTypeIds | array of integers | Filter by one or more recording version type IDs. | byRecordingVersion |
sourceOfStreamIds | array of integers | Filter by one or more source of stream IDs. | bySourceOfStream |
isUgc | boolean | If true , filters results to only include User-Generated Content (UGC) metrics. If false or omitted, only includes non-UGC metrics. This affects which metric fields are populated. | All |
isSkipRate | boolean | If true , this filter will exclude entire items from the results where the skipRate metric is 0 . This parameter is only relevant when the {metric} type is engagement . | All |
Parameter | Type | Description |
---|---|---|
totals | object | Aggregated totals for the entire request. Values will differ based on the data set (consumption or engagement). |
totals.streamsCount | integer | [All types ] Total count for streams. |
totals.trackDownloadCount | integer | [consumption ] Total count for track downloads. |
totals.releaseDownloadCount | integer | [consumption ] Total count for release downloads. |
totals.sub30sCount | integer | [enagement ] Total count of streams bellow 30 seconds. |
totals.savesCount | integer | [enagement ] Total count of saves. |
totals.skipRate | float | [enagement ] A float value representing the total skip rate. |
totals.completeRate | float | [enagement ] A float value representing the total complete rate. |
totals.creationsCount | integer | [engagement ] Total count of creations. (Will be 0 if isUgc is false or omitted). |
totals.likesCount | integer | [engagement ] Total count of likes. (Will be 0 if isUgc is false or omitted). |
totals.sharesCount | integer | [enagagement ] Total count of shares. (Will be 0 if isUgc is false or omitted). |
totals.commentsCount | integer | [engagement ] Total count of comments. (Will be 0 if isUgc is false or omitted). |
totals.watchTime | float | [engagement ] Total watch time. (Will be 0 if isUgc is false or omitted). |
fromDate | string | Start date of the data range. |
toDate | string | End date of the data range. |
totalItemsCount | integer | Total number of items in the result set. |
pageNumber | integer | Current page number. |
pageSize | integer | Number of items per page. |
items | array | Resulting array of consumption data items. |
items.metadata | object | Metadata for the item. This value changes depending on the aggregation dimension (null if byDate aggregation is used). |
items.metrics | object | Metrics for the item. TValues will differ between different data set types (consumption or engagement). |
items.metrics.streamsCount | integer | [All types ] Count for streams. (Will be null if isUgc is true ). |
items.metrics.trackDownloadCount | integer | [consumption ] Count for track downloads. (Will be null if isUgc is true ). |
items.metrics.releaseDownloadCount | integer | [consumption ] Count for release downloads. (Will be null if isUgc is true ). |
items.metrics.eventDate | string | [consumption ] Date of the event (null if not applicable) |
items.metrics.sub30sCount | integer | [enagement ] Count of streams bellow 30 seconds. (Will be null if isUgc is true ). |
items.metrics.savesCount | integer | [enagement ] Count saves. (Will be null if isUgc is true ). |
items.metrics.skipRate | float | [enagement ] A float value representing the skip rate for the item. (Will be null if isUgc is true ). |
items.metrics.completeRate | float | [enagement ] A float value representing the complete rate for the item. (Will be null if isUgc is true ). |
items.metrics.viewsCount | integer | [consumption ] Views count for the item. (Will be null if isUgc is false ). |
items.metrics.creationsCount | integer | [engagement ] Total count of creations for the item. (Will be null if isUgc is false ). |
items.metrics.likesCount | integer | [engagement ] Total count of likes for the item. (Will be null if isUgc is false ). |
items.metrics.sharesCount | integer | [enagagement ] Total count of shares for the item. (Will be null if isUgc is false ). |
items.metrics.commentsCount | integer | [engagement ] Total count of comments for the item. (Will be null if isUgc is false ). |
items.metrics.watchTime | float | [engagement ] Total watch time for the item. (Will be null if isUgc is false ). Relevant only for Youtube and will not be populated for /engagement/byRelease?isUgc=true because YT does not have releases. |
consumption
) Examplesengagement
) ExamplesbyDate
AggregationThe byDate
aggregation is unique because it returns a single item in the main items
array. This single item
contains a metrics
array, and the structure of this metrics
array is determined by the dateGranularity
parameter.
When using byDate
, the metadata
object is not present in the response.
Here’s how each dateGranularity
option affects the metrics
array within the byDate
aggregation:
dateGranularity Value | Resulting metrics Array Structure |
---|---|
Daily | An array of objects, one for each day in the requested date range. Each object’s eventDate will be the date of the metrics (e.g., 2024-07-01T00:00:00Z ). |
Weekly | An array of objects, one for each week in the requested date range. Each object’s eventDate will be the start of the week (Monday at midnight UTC, e.g., 2024-07-01T00:00:00Z ). |
Monthly | An array of objects, one for each month in the requested date range. Each object’s eventDate will be the first day of the month (at midnight UTC, e.g., 2024-07-01T00:00:00Z ). |
Quarterly | An array of objects, one for each quarter in the requested date range. Each object’s eventDate will be the first day of the quarter (Jan 1, Apr 1, Jul 1, Oct 1). |
Yearly | An array of objects, one for each year in the requested date range. Each object’s eventDate will be the first day of the year (Jan 1). |
All , Null , or omitted | A single object in the array, containing the aggregated total metrics for the entire specified date range. The eventDate for this object will be null . |
byDate
Aggregation Examples