Skip to main content
GET
cURL

Authorizations

x-api-key
string
header
required

Your Recoup API key. Learn more.

Path Parameters

catalogId
string<uuid>
required

The unique identifier of the catalog to read measurements for. The catalog must belong to the authenticated account. Malformed (non-uuid) values are rejected with 400.

Query Parameters

account_id
string<uuid>

Act on behalf of this account (UUID). Only applicable when the authenticated account has access to the target account, for example an organization key acting for a member account. The catalog ownership check then runs against this account instead of the caller. Omitted: the caller's own account.

artist_account_id
string<uuid>

Optional artist account to scope the read to. When present, measurements and the valuation band cover only the catalog's songs linked to this artist account (via song_artists); when absent, the whole catalog. A song linked to multiple artists counts for each of them. An artist with no linked measured songs in the catalog yields measured_song_count 0 and an empty measurements array. Malformed (non-uuid) values are rejected with 400.

page
integer
default:1

Page number of the measurements array (default 1). Pagination only windows the measurements rows - the aggregates always cover the entire scope. Invalid values are rejected with 400.

Required range: x >= 1
limit
integer
default:50

Number of measurement rows per page (default 50, max 100). Invalid values are rejected with 400.

Required range: 1 <= x <= 100

Response

Latest per-song measurements and the derived valuation band

Latest per-song play counts for a catalog plus the valuation band derived from them

status
enum<string>

Status of the request

Available options:
success,
error
measurements
object[]

One page of latest-per-ISRC measurements (the requested page/limit window), sorted by play count descending. One entry per measured song: the newest capture per ISRC; songs never measured are omitted. Use measured_song_count / pagination for the size of the full set - the aggregates are NOT limited to this page.

pagination
object

Pagination metadata for the measurements array - the same envelope as catalog songs

measured_song_count
integer

Total number of measured songs in scope (the whole catalog, or the artist subset when filtered), computed over the entire scope regardless of pagination - no row cap

valuation
object

Estimated catalog value in USD, derived at read time from the latest measurements - the same model as the recoupable.dev valuation card. Annual run-rate = lifetime streams / catalog age (lifetime-average proxy), converted to net label share (all-DSP gross-up 1.25/1.4/1.6, 15% distribution fee, 25% royalty share, $0.0035 per Spotify stream) and multiplied by a 10x/13x/16x master-catalog market multiple.

total_streams
integer

Sum of the latest play counts across ALL measured songs in scope, computed in a single SQL aggregate regardless of pagination - no row cap

artist_account_id
string<uuid> | null

Echoes the applied artist_account_id filter: the uuid when the response was scoped to that artist, null when the response covers the whole catalog. Clients that request an artist scope should verify this echo before treating the numbers as artist-scoped.

catalog_age_years
integer

Catalog age in years used for the annual run-rate: from the earliest Spotify release date of the source run's albums, minimum 1; defaults to 5 when no release date is resolvable.

error
string

Error message (only present if status is 'error')