curl --request POST \
--url https://api.royalti.io/publisher/publishers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Afrosounds Publishing",
"publisherType": "original",
"ipiNameNumber": "00123456789"
}
'import requests
url = "https://api.royalti.io/publisher/publishers"
payload = {
"name": "Afrosounds Publishing",
"publisherType": "original",
"ipiNameNumber": "00123456789"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Afrosounds Publishing',
publisherType: 'original',
ipiNameNumber: '00123456789'
})
};
fetch('https://api.royalti.io/publisher/publishers', 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.royalti.io/publisher/publishers",
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([
'name' => 'Afrosounds Publishing',
'publisherType' => 'original',
'ipiNameNumber' => '00123456789'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.royalti.io/publisher/publishers"
payload := strings.NewReader("{\n \"name\": \"Afrosounds Publishing\",\n \"publisherType\": \"original\",\n \"ipiNameNumber\": \"00123456789\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.royalti.io/publisher/publishers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Afrosounds Publishing\",\n \"publisherType\": \"original\",\n \"ipiNameNumber\": \"00123456789\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.royalti.io/publisher/publishers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Afrosounds Publishing\",\n \"publisherType\": \"original\",\n \"ipiNameNumber\": \"00123456789\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenantId": 123,
"name": "<string>",
"ipiNameNumber": "<string>",
"ipiBaseNumber": "<string>",
"publisherType": "original",
"affiliatedPRO": "<string>",
"isActive": true,
"settings": {
"defaultCurrency": "USD",
"paymentSchedule": "quarterly",
"defaultTerritories": [
"<string>"
],
"defaultShares": {
"pr": 123,
"mr": 123,
"sr": 123
}
},
"territories": [
{}
],
"tenantUserId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"PublisherTerritories": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"TenantId": 123,
"publisherId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"territoryCode": "US",
"inclusionExclusion": "I",
"prShare": 50,
"mrShare": 50,
"srShare": 50,
"startDate": "2023-11-07T05:31:56Z",
"endDate": "2023-11-07T05:31:56Z",
"rights": [
{
"share": 123
}
],
"formula": "<string>",
"postTermCollection": false,
"agreementId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"PublisherAgreements": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"TenantId": 123,
"publisherId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agreementNumber": "<string>",
"startDate": "2023-11-07T05:31:56Z",
"endDate": "2023-11-07T05:31:56Z",
"terms": {
"territories": [
"WW"
],
"excludedTerritories": [
"<string>"
],
"rightTypes": [],
"shares": {
"pr": 123,
"mr": 123,
"sr": 123
},
"minimumGuarantee": {
"amount": 123
}
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"userData": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"status": "error",
"message": "<string>",
"code": "<string>",
"details": {}
}{
"status": "error",
"message": "<string>",
"code": "<string>",
"details": {}
}Create a publisher
POST /publisher/publishers
curl --request POST \
--url https://api.royalti.io/publisher/publishers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Afrosounds Publishing",
"publisherType": "original",
"ipiNameNumber": "00123456789"
}
'import requests
url = "https://api.royalti.io/publisher/publishers"
payload = {
"name": "Afrosounds Publishing",
"publisherType": "original",
"ipiNameNumber": "00123456789"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Afrosounds Publishing',
publisherType: 'original',
ipiNameNumber: '00123456789'
})
};
fetch('https://api.royalti.io/publisher/publishers', 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.royalti.io/publisher/publishers",
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([
'name' => 'Afrosounds Publishing',
'publisherType' => 'original',
'ipiNameNumber' => '00123456789'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.royalti.io/publisher/publishers"
payload := strings.NewReader("{\n \"name\": \"Afrosounds Publishing\",\n \"publisherType\": \"original\",\n \"ipiNameNumber\": \"00123456789\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.royalti.io/publisher/publishers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Afrosounds Publishing\",\n \"publisherType\": \"original\",\n \"ipiNameNumber\": \"00123456789\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.royalti.io/publisher/publishers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Afrosounds Publishing\",\n \"publisherType\": \"original\",\n \"ipiNameNumber\": \"00123456789\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenantId": 123,
"name": "<string>",
"ipiNameNumber": "<string>",
"ipiBaseNumber": "<string>",
"publisherType": "original",
"affiliatedPRO": "<string>",
"isActive": true,
"settings": {
"defaultCurrency": "USD",
"paymentSchedule": "quarterly",
"defaultTerritories": [
"<string>"
],
"defaultShares": {
"pr": 123,
"mr": 123,
"sr": 123
}
},
"territories": [
{}
],
"tenantUserId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"PublisherTerritories": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"TenantId": 123,
"publisherId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"territoryCode": "US",
"inclusionExclusion": "I",
"prShare": 50,
"mrShare": 50,
"srShare": 50,
"startDate": "2023-11-07T05:31:56Z",
"endDate": "2023-11-07T05:31:56Z",
"rights": [
{
"share": 123
}
],
"formula": "<string>",
"postTermCollection": false,
"agreementId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"PublisherAgreements": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"TenantId": 123,
"publisherId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agreementNumber": "<string>",
"startDate": "2023-11-07T05:31:56Z",
"endDate": "2023-11-07T05:31:56Z",
"terms": {
"territories": [
"WW"
],
"excludedTerritories": [
"<string>"
],
"rightTypes": [],
"shares": {
"pr": 123,
"mr": 123,
"sr": 123
},
"minimumGuarantee": {
"amount": 123
}
},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"userData": {},
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"status": "error",
"message": "<string>",
"code": "<string>",
"details": {}
}{
"status": "error",
"message": "<string>",
"code": "<string>",
"details": {}
}Description
POST /publisher/publishers Authorization:- Required role:
adminor higher
Code Examples
const response = await fetch('https://api.royalti.io/publisher/publishers', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"ref": "#/components/schemas/CreatePublisherRequest"
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://api.royalti.io/publisher/publishers',
headers={
'Authorization': f'Bearer {token}'
},
json={"ref":"#/components/schemas/CreatePublisherRequest"}
)
data = response.json()
print(data)
curl -X POST https://api.royalti.io/publisher/publishers \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ref":"#/components/schemas/CreatePublisherRequest"}'
Authorizations
JWT Authorization header using the Bearer scheme. Format: "Bearer {token}"
Body
Response
Publisher created.
1-45 characters (VALIDATION_RULES.publisher.name).
11-digit IPI name number. Unique per tenant when set.
13-character IPI base number. Unique per tenant when set.
original, sub, administrator Show child attributes
Show child attributes
JSONB territory snapshot stored directly on the Publisher row. Distinct from the normalized PublisherTerritories table managed by the /territories endpoints.
Optional link to a TenantUser; when set and ipiNameNumber is absent, some read paths fall back to the linked user's IPI.
Present on list/get responses (Sequelize include, unaliased plural).
Show child attributes
Show child attributes
Present on GET /publishers/{id} and GET /publishers/me only.
Show child attributes
Show child attributes
Linked TenantUser (id, firstName, lastName, email, ipi), present when tenantUserId is set.