API REFERENCE
Albums
On this page
/api/research/albumsRead the artist catalog through the albums view using the artist_id selected from Search. Results can include track-shaped catalog entries rather than distinct album objects. is_primary accepts true/false; filtering depends on the data connection. limit must be a positive integer string and offset a non-negative integer string.
Use your Recoup API key (x-api-key) or supported bearer credential. Successful artist and track research reads cost $0.05 (50,000 micro-dollar credits). Recoup manages the data connections. Coverage and rate limits vary; see Research availability.
Authentication
See the authentication guide for API key and account access requirements.
Request
curl --request GET \
--url 'https://api.recoupable.dev/api/research/albums?artist_id=artist_123' \
--header 'x-api-key: YOUR_API_KEY'Replace the YOUR_ placeholders with your values. Required query parameters are included; optional parameters are listed below.
Try it
Fill in the fields, send the request from your browser, and read the live response. The curl below updates as you type.
Kept in this browser tab only and cleared when it closes.
curl --request GET \
--url 'https://recoup-api.vercel.app/api/research/albums'Parameters
Query parameters
artist_idstringrequiredProvider artist ID. Obtain it from search or lookup results.
is_primarystring · enumWhen true (default), returns only albums where the artist is a main artist. Set to false to include feature appearances, DJ compilations, and soundtracks.
Values: "true", "false"
Default: "true"
limitstringNumber of albums to return. Defaults to the provider's default when omitted.
offsetstringPagination offset. Defaults to 0 when omitted.
Responses
200Artist albums+
application/json
statusstringalbumsarray<ResearchCatalogItem>Item properties for albums
titlestringavatarstringrelease_datestringnullablesite_urlstringisrcsarray<string>Item properties for isrcs
string
artistsarray<ResearchArtistMini>Item properties for artists
namestringAdditional properties
Additional keys are allowed.
Additional properties
Additional keys are allowed.
400Validation error — artist_id missing or invalid+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
401Authentication failed — invalid or missing API key+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
402Insufficient research credits. The response includes a static billingUrl; no checkout session is created.+
application/json
errorstring · enumrequiredValues: "insufficient_credits"
remaining_creditsintegerrequiredrequired_creditsintegerrequiredbillingUrlstringrequiredStatic link to the Recoup app, where a human can save a card and buy credits. It is a constant, not a freshly minted Stripe Checkout Session, so a credit-gated endpoint that keeps returning 402 creates nothing. To buy credits programmatically, call POST /api/credits/sessions.
403Credential, account or provider permission denied.+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
404Artist/track resolution or requested provider data was not found. A failed name search may be reported as 404; retry with an exact provider ID when known.+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
429Provider rate or quota limit. The adapter returns an error status but does not forward provider Retry-After headers. Avoid an unbounded retry loop.+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
500Missing provider configuration, transport failure or internal error.+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
501The configured research data source does not support this endpoint or data shape.+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
{
"status": "error",
"error": "Request failed with status 501"
}502Upstream provider failed.+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
504the configured research data connection request timed out.+
application/json
statusstring · enumrequiredValues: "error"
errorstringrequiredHuman-readable error message describing what went wrong.
Full specification
Download the OpenAPI file for complete schemas, constraints, and examples.
Download research.jsonView operation source
{
"description": "Read the artist catalog through the `albums` view using the `artist_id` selected from [Search](/api-reference/research/search). Results can include track-shaped catalog entries rather than distinct album objects. `is_primary` accepts true/false; filtering depends on the data connection. `limit` must be a positive integer string and `offset` a non-negative integer string.\n\nUse your Recoup API key (`x-api-key`) or supported bearer credential. Successful artist and track research reads cost $0.05 (50,000 micro-dollar credits). Recoup manages the data connections. Coverage and rate limits vary; see [Research availability](/research-availability).",
"parameters": [
{
"name": "artist_id",
"in": "query",
"required": true,
"description": "Provider artist ID. Obtain it from search or lookup results.",
"schema": {
"type": "string",
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$",
"example": "artist_123"
}
},
{
"name": "is_primary",
"in": "query",
"required": false,
"description": "When `true` (default), returns only albums where the artist is a main artist. Set to `false` to include feature appearances, DJ compilations, and soundtracks.",
"schema": {
"type": "string",
"enum": [
"true",
"false"
],
"default": "true"
}
},
{
"name": "limit",
"in": "query",
"required": false,
"description": "Number of albums to return. Defaults to the provider's default when omitted.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
},
{
"name": "offset",
"in": "query",
"required": false,
"description": "Pagination offset. Defaults to 0 when omitted.",
"schema": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)$"
}
}
],
"responses": {
"200": {
"description": "Artist albums",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchAlbumsResponse"
}
}
}
},
"400": {
"description": "Validation error — `artist_id` missing or invalid",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchErrorResponse"
}
}
}
},
"401": {
"description": "Authentication failed — invalid or missing API key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchErrorResponse"
}
}
}
},
"402": {
"description": "Insufficient research credits. The response includes a static billingUrl; no checkout session is created.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchInsufficientCreditsResponse"
}
}
}
},
"403": {
"description": "Credential, account or provider permission denied.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchErrorResponse"
}
}
}
},
"404": {
"description": "Artist/track resolution or requested provider data was not found. A failed name search may be reported as 404; retry with an exact provider ID when known.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchErrorResponse"
}
}
}
},
"429": {
"description": "Provider rate or quota limit. The adapter returns an error status but does not forward provider Retry-After headers. Avoid an unbounded retry loop.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchErrorResponse"
}
}
}
},
"500": {
"description": "Missing provider configuration, transport failure or internal error.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchErrorResponse"
}
}
}
},
"501": {
"$ref": "#/components/responses/ResearchDataSourceUnsupported"
},
"502": {
"description": "Upstream provider failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchErrorResponse"
}
}
}
},
"504": {
"description": "the configured research data connection request timed out.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResearchErrorResponse"
}
}
}
}
}
}