API REFERENCE
Add Catalog Songs
On this page
/api/catalogs/songsBatch add songs to a catalog by ISRC. For each song, the API attempts to look up metadata via internal search. If no data is found, optional fallback fields (name, album, notes, artists) are used.
Authentication
x-api-key in header
bearerAuth bearer
Request
curl --request POST \
--url 'https://api.recoupable.dev/api/catalogs/songs' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"songs": [
{
"catalog_id": "YOUR_ID",
"isrc": "string"
}
]
}'Request body required
Array of songs to add to catalog
application/json
songsarray<AddCatalogSongInput>requiredArray of songs for batch updates
Item properties for songs
catalog_idstringrequiredCatalog ID to which the song will be added
format: uuid
isrcstringrequiredSong ISRC to associate to the catalog
namestringOptional. Applied only if internal search cannot find valid info for ISRC
albumstringOptional. Applied only if internal search cannot find valid info for ISRC
notesstringOptional. Applied only if internal search cannot find valid info for ISRC
artistsarray<string>Optional array of artist names. Applied only if internal search lacks info
Item properties for artists
string
Responses
200Songs added to catalog successfully+
application/json
statusstring · enumStatus of the request
Values: "success", "error"
songsarray<CatalogSong>Array of song objects with artist information
Item properties for songs
catalog_idstringCatalog ID this song entry is associated with
format: uuid
isrcstringInternational Standard Recording Code (primary key)
namestringName of the song
albumstringName of the album the song belongs to
lyricsstringFull lyrics of the song
updated_atstringISO timestamp of when the song data was last updated
format: date-time
artistsarray<SongArtist>Array of artist objects associated with this song
Item properties for artists
idstringUnique identifier for the artist account
format: uuid
namestringnullableName of the artist (can be null)
timestampintegernullableTimestamp associated with the artist account (can be null)
paginationobjectPagination metadata for the response
Properties for pagination
total_countintegerTotal number of songs in the catalog
pageintegerCurrent page number
limitintegerNumber of songs per page
total_pagesintegerTotal number of pages available
errorstringError message (only present if status is 'error')
400Bad request - missing required fields+
application/json
statusstring · enumStatus of the request
Values: "error"
errorstringError message describing what went wrong
401Unauthorized - missing or invalid credentials+
application/json
statusstring · enumStatus of the request
Values: "error"
errorstringError message describing what went wrong
403Forbidden - the catalog does not belong to the authenticated account+
application/json
statusstring · enumStatus of the request
Values: "error"
errorstringError message describing what went wrong
Full specification
Download the OpenAPI file for complete schemas, constraints, and examples.
Download releases.jsonView operation source
{
"security": [
{
"apiKeyAuth": []
},
{
"bearerAuth": []
}
],
"description": "Batch add songs to a catalog by ISRC. For each song, the API attempts to look up metadata via internal search. If no data is found, optional fallback fields (name, album, notes, artists) are used.",
"requestBody": {
"description": "Array of songs to add to catalog",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AddCatalogSongsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Songs added to catalog successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CatalogSongsResponse"
}
}
}
},
"400": {
"description": "Bad request - missing required fields",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CatalogSongsErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized - missing or invalid credentials",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CatalogSongsErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden - the catalog does not belong to the authenticated account",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CatalogSongsErrorResponse"
}
}
}
}
}
}