Consumption
Consumption analytics report how often your catalog is played or downloaded on streaming services, and how often it is viewed in user-generated content (UGC) on platforms such as YouTube and TikTok.
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.
Media Types
The mediaType parameter is required and selects which data you read. The metrics of the other media type are
returned as null (or 0 when a dateGranularity is set).
mediaType | Data | Metrics |
|---|---|---|
streaming | Streaming services and download stores. | streamsCount, trackDownloadsCount, releaseDownloadsCount |
ugc | User-generated content platforms. | viewsCount |
Dimensions
| Dimension | Groups by | Populated metadata fields |
|---|---|---|
track | Track. With mediaType=streaming, a track played as both audio and video returns one row per asset type; a video row carries the video’s ID and name. | id, name, version, imageId, assetType |
release | Release. | id, name, version, imageId |
artist | Artist. | id, name, imageId |
label | Label. | id, name, imageId |
country | Listener country. | id, iso2Code |
distributor | DSP. | id, name |
consumptionType | Consumption type, such as the listener’s subscription plan (e.g., Premium Family Subscriptions, Bundled Subscriptions). | id, name |
deliveryType | Delivery type (e.g., Subscription Streaming, Ad-Supported Streaming). | id, name |
recordingVersion | Audio format (e.g., stereo, Dolby Atmos). Always audio. | id, name |
sourceOfStream | Where the stream started on the DSP (e.g., a playlist, radio, the listener’s collection). Streaming only. | sourceOfStreamId, sourceOfStreamName, discoveryTypeId, discoveryTypeName, distributorId, distributorName |
discoveryType | How the listener found the music (e.g., active discovery, passive discovery, listener’s collection). Streaming only. | discoveryTypeId, discoveryTypeName |
assetType | Asset type: 1 (Audio) or 6 (Video). Streaming only. | id, name |
date | Nothing. Returns totals for the whole range, or a time series with dateGranularity. | None |
Requesting a streaming-only dimension with mediaType=ugc returns 400 Bad Request.
With dimension=date and a dateGranularity other than all, the response has a single item whose metrics array
holds one entry per period, and totalItemsCount equals the number of periods rather than the number of items. See
Pagination.
The IDs used by the dimension-specific filters (deliveryTypeIds, consumptionTypeIds, recordingVersionTypeIds,
sourceOfStreamIds, discoveryTypeIds) are the ones returned in metadata when you group by that dimension.
Asset Types
With mediaType=streaming, use assetTypes (repeatable) to restrict the data to audio or video. Omit it to include
both.
| Value | Includes |
|---|---|
track | Audio tracks. Data without an asset type is counted here. |
video | Videos. |
unknown | Data whose asset type is neither audio nor video. |
assetTypes is ignored for mediaType=ugc, and dimension=recordingVersion always covers audio only.
Estimated Revenue
Every response includes an estimatedRevenue object with an earnings estimate for the requested period, ahead of
the final figures reported in Revenue. Amounts are in the currency set for your
organization.
| Field | Meaning |
|---|---|
filteredAmount | Estimate for the requested mediaType, with your filters applied. |
totalAmount | Estimate for streaming and UGC combined, with the same filters applied. |
The estimate is only calculated for time series—dimension=date with a dateGranularity other than all. In every
other case, both amounts are null. They are also null (not 0) when nothing in the range could be priced, so you
can tell “no estimate” apart from “earned nothing”.
How the estimate works:
- Window: it covers the last three months plus the current month, up to the latest consumption data (typically
about three days behind). If your date range starts earlier, only the part inside this window is estimated; if the
range lies entirely before it, both amounts are
null. - Method: historical payout rates from your own statements—per store, market, and delivery type—are applied to your recent daily activity. Streaming and UGC are estimated separately.
- Scope: subscription and ad-supported streaming, and claimed UGC, from stores that send daily data. Downloads, plays under 30 seconds, and income not paid per stream or view are excluded.
- Stability: the estimate is recalculated each month as new statements arrive, so values for the same period can change. Once statements arrive, rely on Revenue for the actual figures.
For more detail, see How estimated revenue works on the Consumption page.
Sorting
orderByProperty accepts a metric column, eventdate, or a column of the requested dimension. For how sorting
works, see the Analytics Overview.
| Column | Accepted with |
|---|---|
streamscount, trackdownloadscount, releasedownloadscount | mediaType=streaming |
viewscount | mediaType=ugc |
eventdate | Always. The start of each period when a dateGranularity is set. |
| Dimension | Dimension columns |
|---|---|
track | trackid, trackname, trackversion |
release | releaseid, releasename, releaseversion |
artist | artistid, artistname |
label | labelid, labelname |
country | countryid, iso2code |
distributor | distributorid, distributorname |
consumptionType | consumptiontypeid, consumptiontypename |
deliveryType | deliverytypeid, deliverytypename |
recordingVersion | recordingversiontypeid, recordingversiontypename |
sourceOfStream | sourceofstreamid, sourceofstreamname, discoverytypeid, discoverytypename, distributorid, distributorname |
discoveryType | discoverytypeid, discoverytypename |
assetType | assettypeid, assettypename |
date | None |
Without orderByProperty and dateGranularity, results are ordered by streamscount (streaming) or viewscount
(UGC), descending. When you set a dateGranularity, pass orderByProperty if you need a specific row order.
Get Consumption
/analytics/v1/consumption Retrieves streams, downloads, or UGC views grouped by the requested dimension.
Query Parameters
| Parameter | Description |
|---|---|
mediaType * string | Which data to read (case-insensitive). See the Media Types section above. Examples: streaming, ugc |
deliveryTypeIds integer[] | Restrict to these delivery types. Only applied with |
consumptionTypeIds integer[] | Restrict to these consumption types. Only applied with |
recordingVersionTypeIds integer[] | Restrict to these recording versions. Only applied with |
sourceOfStreamIds integer[] | Restrict to these sources of stream. Only applied with |
discoveryTypeIds integer[] | Restrict to these discovery types. Only applied with |
uniqueKeys string[] | Restrict to specific source-of-stream rows, each identified by Examples: 4/10, -1/61 |
assetTypes WellKnownAnalyticsAssetTypes[] | Restrict to these asset types. Omit to include all. Streaming only. See the Asset Types section above. Examples: track, video, unknown |
dimension * string | How to group the results (case-insensitive). See the Dimensions section above. Examples: track, artist, country, sourceOfStream, date |
countryIds integer[] | Restrict to these listener countries. Retrieved from GET /common/lookup/countries on the V1.0 API. |
distributorIds integer[] | Restrict to these DSPs. Use the |
excludeDistributorIds integer[] | Leave out these DSPs. Use the |
excludeTikTok boolean | Leave out TikTok. Equivalent to adding TikTok to |
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's metrics into periods (case-insensitive). See Date Granularity in the Analytics Overview. Examples: daily, weekly, monthly, quarterly, 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: streamscount, trackdownloadscount, releasedownloadscount, viewscount, eventdate |
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 ConsumptionTotalsModel streamsCount integer 0 for mediaType=ugc. trackDownloadsCount integer 0 for mediaType=ugc. releaseDownloadsCount integer 0 for mediaType=ugc. viewsCount integer 0 for mediaType=streaming. estimatedRevenue ConsumptionEstimatedRevenueModel filteredAmount number | null mediaType with your filters applied. null unless the request is a time series, or when nothing could be priced. totalAmount number | null null under the same conditions as filteredAmount. fromDate string | null YYYY-MM-DD) after defaults were applied. null when onlyNew=true. toDate string | null YYYY-MM-DD) after defaults were applied. null when onlyNew=true. totalItemsCount integer pageNumber integer | null pageSize integer | null totalPagesCount number items ConsumptionListModel[] metadata ConsumptionMetadataModel null. See the Dimensions section above. id integer | null track, a DSP ID for distributor, and so on). name string | null version string | null imageId string | null iso2Code string | null country dimension. assetType string | null track row with mediaType=streaming: track or video. sourceOfStreamId integer | null sourceOfStreamName string | null discoveryTypeId integer | null sourceOfStream and discoveryType dimensions. discoveryTypeName string | null distributorId integer | null distributorName string | null metrics ConsumptionMetricModel[] | null dateGranularity is set. streamsCount integer | null trackDownloadsCount integer | null releaseDownloadsCount integer | null viewsCount integer | null eventDate string (date-time) | null null when no dateGranularity (or all) is set./analytics/v1/consumption curl -X GET "https://platform.revelator.com/analytics/v1/consumption?mediaType=streaming&dimension=artist&fromDate=2026-09-01&toDate=2026-09-30&orderByProperty=streamscount&orderByDescending=true&pageSize=2" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/analytics/v1/consumption?mediaType=streaming&dimension=artist&fromDate=2026-09-01&toDate=2026-09-30&orderByProperty=streamscount&orderByDescending=true&pageSize=2" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
{
"totals": {
"streamsCount": 206494368,
"trackDownloadsCount": 3748,
"releaseDownloadsCount": 51,
"viewsCount": 0
},
"estimatedRevenue": {
"filteredAmount": null,
"totalAmount": null
},
"fromDate": "2026-09-01",
"toDate": "2026-09-30",
"totalItemsCount": 8184,
"pageNumber": 1,
"pageSize": 2,
"totalPagesCount": 4092,
"items": [
{
"metadata": {
"id": 1868909,
"name": "Artist Name",
"version": null,
"imageId": "2C3639FB-7EAC-4443-B9EB-D64991188699",
"iso2Code": null,
"assetType": null,
"sourceOfStreamId": null,
"sourceOfStreamName": null,
"discoveryTypeId": null,
"discoveryTypeName": null,
"distributorId": null,
"distributorName": null
},
"metrics": [
{
"streamsCount": 6216312,
"trackDownloadsCount": 247,
"releaseDownloadsCount": 0,
"viewsCount": null,
"eventDate": null
}
]
},
{
"metadata": {
"id": 1542316,
"name": "Another Artist",
"version": null,
"imageId": null,
"iso2Code": null,
"assetType": null,
"sourceOfStreamId": null,
"sourceOfStreamName": null,
"discoveryTypeId": null,
"discoveryTypeName": null,
"distributorId": null,
"distributorName": null
},
"metrics": [
{
"streamsCount": 5105320,
"trackDownloadsCount": 120,
"releaseDownloadsCount": 5,
"viewsCount": null,
"eventDate": null
}
]
}
]
} {
"totals": {
"streamsCount": 206494368,
"trackDownloadsCount": 3748,
"releaseDownloadsCount": 51,
"viewsCount": 0
},
"estimatedRevenue": {
"filteredAmount": null,
"totalAmount": null
},
"fromDate": "2026-09-01",
"toDate": "2026-09-30",
"totalItemsCount": 8184,
"pageNumber": 1,
"pageSize": 2,
"totalPagesCount": 4092,
"items": [
{
"metadata": {
"id": 1868909,
"name": "Artist Name",
"version": null,
"imageId": "2C3639FB-7EAC-4443-B9EB-D64991188699",
"iso2Code": null,
"assetType": null,
"sourceOfStreamId": null,
"sourceOfStreamName": null,
"discoveryTypeId": null,
"discoveryTypeName": null,
"distributorId": null,
"distributorName": null
},
"metrics": [
{
"streamsCount": 6216312,
"trackDownloadsCount": 247,
"releaseDownloadsCount": 0,
"viewsCount": null,
"eventDate": null
}
]
},
{
"metadata": {
"id": 1542316,
"name": "Another Artist",
"version": null,
"imageId": null,
"iso2Code": null,
"assetType": null,
"sourceOfStreamId": null,
"sourceOfStreamName": null,
"discoveryTypeId": null,
"discoveryTypeName": null,
"distributorId": null,
"distributorName": null
},
"metrics": [
{
"streamsCount": 5105320,
"trackDownloadsCount": 120,
"releaseDownloadsCount": 5,
"viewsCount": null,
"eventDate": null
}
]
}
]
} Migrating from the V1.0 API
This endpoint replaces the V1.0 GET /analytics/consumption/{aggregation} routes. The V1.0 routes are deprecated: after November 25, 2026, they are no longer supported and may stop working
without prior notice.
The response is identical, field for field, and you keep using the same access token. Two things change:
- The route. The
by…path segment becomes thedimensionquery parameter. - The media type.
isUgcis replaced bymediaType, which is now required.
| V1.0 | V2.0 |
|---|---|
https://api.revelator.com/analytics/consumption/by{Aggregation} | https://platform.revelator.com/analytics/v1/consumption?dimension={dimension} |
isUgc=false or omitted | mediaType=streaming |
isUgc=true | mediaType=ugc |
| V1.0 aggregation | dimension |
|---|---|
byTrack | track |
byRelease | release |
byArtist | artist |
byLabel | label |
byCountry | country |
byDistributor | distributor |
byConsumptionType | consumptionType |
byDeliveryType | deliveryType |
byRecordingVersion | recordingVersion |
bySourceOfStream | sourceOfStream |
byDiscoveryType | discoveryType |
byDate | date |
The assetType dimension is new and has no V1.0 equivalent.
All other query parameters—fromDate, toDate, dateGranularity, pagination, sorting, and filters—keep their names
and behavior.
- GET https://api.revelator.com/analytics/consumption/byArtist?isUgc=true&fromDate=2026-09-01&toDate=2026-09-30
+ GET https://platform.revelator.com/analytics/v1/consumption?mediaType=ugc&dimension=artist&fromDate=2026-09-01&toDate=2026-09-30