RecoupGet a Free AuditFree Audit

API REFERENCE

Get Catalogs

On this page
GET/api/accounts/{id}/catalogs

Retrieve the catalogs visible to a specific account. Returns the catalogs the account owns directly, plus the catalogs owned by any organization the account belongs to - so every member of an organization sees that organization's catalogs without passing the organization's id. A catalog owned both directly and through an organization is returned once. An account that belongs to no organization receives only its own catalogs. Create an organization-owned catalog with Create catalog or Run valuation.

Each catalog carries its estimated value band and its owner, so a list of catalogs can be ranked by worth and a member can tell an organization's catalog from their own. valuation is null for a catalog with no measured songs; owner.image is null when the owner account has no avatar.

Authentication

See the authentication guide for API key and account access requirements.

Request

cURL
curl --request GET \
  --url 'https://api.recoupable.dev/api/accounts/YOUR_ID/catalogs' \
  --header 'x-api-key: YOUR_API_KEY'

Replace the YOUR_ placeholders with your values. Required query parameters are included; optional parameters are listed below.

Parameters

Path parameters

idstringrequired

The unique identifier of the account to query. The catalogs of every organization this account belongs to are included in the response.

Responses

200Catalogs retrieved successfully

application/json

statusstring · enum

Status of the request

Values: "success", "error"

catalogsarray<CatalogListItem>

Array of catalog objects, each with its estimated value and its owner

Item properties for catalogs
idstringrequired

Unique identifier for the catalog

format: uuid

namestringrequired

Name of the catalog

created_atstringrequired

ISO timestamp of when the catalog was created

format: date-time

updated_atstringrequired

ISO timestamp of when the catalog was last updated

format: date-time

measured_song_countintegerrequired

Songs in the catalog with at least one play-count measurement. 0 for a catalog that was never measured, in which case valuation is null.

valuationone ofrequired

Estimated value band - the same schema and model as Get catalog measurements returns, so a list and the report it opens cannot disagree. Null when nothing in the catalog has been measured; clients should say so rather than render $0.

Properties for valuation
oneOf · ValuationBand 1

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.

lownumber

Low estimate in USD (1.25x gross-up, 10x multiple)

midnumber

Central estimate in USD (1.4x gross-up, 13x multiple)

highnumber

High estimate in USD (1.6x gross-up, 16x multiple)

oneOf · null 2

null

ownerobjectrequired

The account a catalog belongs to. A catalog owned both directly and through an organization reports the organization - that is the ownership worth surfacing to a member.

Properties for owner
idstringrequired

Owner account id

format: uuid

namestringrequirednullable

Owner display name, null when the account has none

imagestringrequirednullable

Owner avatar URL from account_info, null when the account has no image. Clients should fall back to initials rather than render a broken image.

is_organizationbooleanrequired

True when the owner is an organization the caller belongs to, false when it is a personal account

errorstring

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

400Bad request - missing or invalid account id

application/json

statusstring · enum

Status of the request

Values: "error"

errorstring

Error message describing what went wrong

401Unauthorized - missing or invalid authentication

application/json

statusstring · enum

Status of the request

Values: "error"

errorstring

Error message describing what went wrong

403Forbidden - caller lacks access to the target account

application/json

statusstring · enum

Status of the request

Values: "error"

errorstring

Error message describing what went wrong

404Account not found

application/json

statusstring · enum

Status of the request

Values: "error"

errorstring

Error message describing what went wrong

500Internal server error

application/json

statusstring · enum

Status of the request

Values: "error"

errorstring

Error message describing what went wrong

Full specification

Download the OpenAPI file for complete schemas, constraints, and examples.

Download releases.json
View operation source
json
{
  "description": "Retrieve the catalogs visible to a specific account. Returns the catalogs the account owns directly, plus the catalogs owned by any organization the account belongs to - so every member of an organization sees that organization's catalogs without passing the organization's id. A catalog owned both directly and through an organization is returned once. An account that belongs to no organization receives only its own catalogs. Create an organization-owned catalog with [Create catalog](/api-reference/songs/catalogs-create) or [Run valuation](/api-reference/songs/valuation-run).\n\nEach catalog carries its estimated value band and its owner, so a list of catalogs can be ranked by worth and a member can tell an organization's catalog from their own. `valuation` is null for a catalog with no measured songs; `owner.image` is null when the owner account has no avatar.",
  "parameters": [
    {
      "name": "id",
      "in": "path",
      "description": "The unique identifier of the account to query. The catalogs of every organization this account belongs to are included in the response.",
      "required": true,
      "schema": {
        "type": "string",
        "format": "uuid"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Catalogs retrieved successfully",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/CatalogsResponse"
          }
        }
      }
    },
    "400": {
      "description": "Bad request - missing or invalid account id",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/CatalogsErrorResponse"
          }
        }
      }
    },
    "401": {
      "description": "Unauthorized - missing or invalid authentication",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/CatalogsErrorResponse"
          }
        }
      }
    },
    "403": {
      "description": "Forbidden - caller lacks access to the target account",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/CatalogsErrorResponse"
          }
        }
      }
    },
    "404": {
      "description": "Account not found",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/CatalogsErrorResponse"
          }
        }
      }
    },
    "500": {
      "description": "Internal server error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/CatalogsErrorResponse"
          }
        }
      }
    }
  }
}