cURL
curl --request POST \
--url https://api.recoupable.com/api/catalogs/songs \
--header 'Content-Type: application/json' \
--data '
{
"songs": [
{
"catalog_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isrc": "<string>",
"name": "<string>",
"album": "<string>",
"notes": "<string>",
"artists": [
"<string>"
]
}
]
}
'import requests
url = "https://api.recoupable.com/api/catalogs/songs"
payload = { "songs": [
{
"catalog_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isrc": "<string>",
"name": "<string>",
"album": "<string>",
"notes": "<string>",
"artists": ["<string>"]
}
] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
songs: [
{
catalog_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
isrc: '<string>',
name: '<string>',
album: '<string>',
notes: '<string>',
artists: ['<string>']
}
]
})
};
fetch('https://api.recoupable.com/api/catalogs/songs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.recoupable.com/api/catalogs/songs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'songs' => [
[
'catalog_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'isrc' => '<string>',
'name' => '<string>',
'album' => '<string>',
'notes' => '<string>',
'artists' => [
'<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.recoupable.com/api/catalogs/songs"
payload := strings.NewReader("{\n \"songs\": [\n {\n \"catalog_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isrc\": \"<string>\",\n \"name\": \"<string>\",\n \"album\": \"<string>\",\n \"notes\": \"<string>\",\n \"artists\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.recoupable.com/api/catalogs/songs")
.header("Content-Type", "application/json")
.body("{\n \"songs\": [\n {\n \"catalog_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isrc\": \"<string>\",\n \"name\": \"<string>\",\n \"album\": \"<string>\",\n \"notes\": \"<string>\",\n \"artists\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recoupable.com/api/catalogs/songs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"songs\": [\n {\n \"catalog_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isrc\": \"<string>\",\n \"name\": \"<string>\",\n \"album\": \"<string>\",\n \"notes\": \"<string>\",\n \"artists\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"songs": [
{
"catalog_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isrc": "<string>",
"name": "<string>",
"album": "<string>",
"lyrics": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"artists": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"timestamp": 123
}
]
}
],
"pagination": {
"total_count": 123,
"page": 123,
"limit": 123,
"total_pages": 123
},
"error": "<string>"
}{
"status": "error",
"error": "<string>"
}Catalogs
Add Catalog Songs
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.
POST
/
api
/
catalogs
/
songs
cURL
curl --request POST \
--url https://api.recoupable.com/api/catalogs/songs \
--header 'Content-Type: application/json' \
--data '
{
"songs": [
{
"catalog_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isrc": "<string>",
"name": "<string>",
"album": "<string>",
"notes": "<string>",
"artists": [
"<string>"
]
}
]
}
'import requests
url = "https://api.recoupable.com/api/catalogs/songs"
payload = { "songs": [
{
"catalog_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isrc": "<string>",
"name": "<string>",
"album": "<string>",
"notes": "<string>",
"artists": ["<string>"]
}
] }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
songs: [
{
catalog_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
isrc: '<string>',
name: '<string>',
album: '<string>',
notes: '<string>',
artists: ['<string>']
}
]
})
};
fetch('https://api.recoupable.com/api/catalogs/songs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.recoupable.com/api/catalogs/songs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'songs' => [
[
'catalog_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'isrc' => '<string>',
'name' => '<string>',
'album' => '<string>',
'notes' => '<string>',
'artists' => [
'<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.recoupable.com/api/catalogs/songs"
payload := strings.NewReader("{\n \"songs\": [\n {\n \"catalog_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isrc\": \"<string>\",\n \"name\": \"<string>\",\n \"album\": \"<string>\",\n \"notes\": \"<string>\",\n \"artists\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.recoupable.com/api/catalogs/songs")
.header("Content-Type", "application/json")
.body("{\n \"songs\": [\n {\n \"catalog_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isrc\": \"<string>\",\n \"name\": \"<string>\",\n \"album\": \"<string>\",\n \"notes\": \"<string>\",\n \"artists\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recoupable.com/api/catalogs/songs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"songs\": [\n {\n \"catalog_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"isrc\": \"<string>\",\n \"name\": \"<string>\",\n \"album\": \"<string>\",\n \"notes\": \"<string>\",\n \"artists\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"songs": [
{
"catalog_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isrc": "<string>",
"name": "<string>",
"album": "<string>",
"lyrics": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"artists": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"timestamp": 123
}
]
}
],
"pagination": {
"total_count": 123,
"page": 123,
"limit": 123,
"total_pages": 123
},
"error": "<string>"
}{
"status": "error",
"error": "<string>"
}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.
Body
application/json
Array of songs to add to catalog
Array of songs for batch updates
Show child attributes
Show child attributes
Response
Songs added to catalog successfully
Response containing catalog songs data with pagination
Was this page helpful?
⌘I
