Publishers
A publisher is a metadata entity representing a music publishing company or administrator that manages the exploitation of musical compositions. Publishers are referenced from tracks, most commonly as the rights holder associated with a composer’s share of a work.
IPI/CAE Number
The ipiCae field holds the publisher’s IPI (Interested Parties Information) or CAE (Composer, Author, and Publisher)
number. It is used to identify the publisher across performance and mechanical rights organizations.
The IPI/CAE number is a unique identifier assigned through the CISAC-managed IPI database by member societies to track rights holders in creative works.
To obtain or look up your number, join or log in to your local CISAC-member PRO (such as ASCAP, PRS, SACEM) or search the IPI database at cisac.org.
- Suggested format: 9 digits (IPI) or 11 digits (CAE).
PRO Affiliations
Performance-Rights Organizations (PROs) are responsible for collecting and distributing royalties when music is performed, broadcast, or streamed.
Register each contributor with the appropriate PRO(s) in their region, then select those affiliations here so royalty earnings can be tracked and paid out correctly.
The proAffiliations array records the PROs a publisher is affiliated with. Each entry pairs a proId (Revelator’s
internal identifier for the PRO) with a memberId (the unique ID issued to the publisher by that PRO). Available PROs
and their corresponding proId values can be retrieved using GET /content/track/lookups on the V1.0 API.
The memberId must be unique across publishers and composers within the same organization. Attempting to save a
publisher with a memberId that is already in use by another publisher or composer in the organization returns a
validation error.
Archiving Publishers
A publisher can only be archived when all of the following conditions are met:
- The publisher is not currently archived.
- The publisher is not assigned to any active (unarchived) release.
- The publisher is not assigned to any active (unarchived) track.
Publishers that have been archived for more than 6 months can no longer be unarchived.
Create Publisher
/catalog/v1/publishers Creates a new publisher.
Request Body *
object name * string ipiCae string logoImageId string proAffiliations ProAffiliationItemModel[] proId integer memberId string additionalContacts ContactDetailsModel[] address string address2 string city string contactRoleId * integer countryId integer email * string (email) location string name * string phone string state string zipCode string website string countryId integer enterpriseId integer Responses
object publisherId integer name string ipiCae string | null logoImageId string | null proAffiliations ProAffiliationItemModel[] | null proId integer memberId string additionalContacts ContactDetailsModel[] | null address string | null address2 string | null city string | null contactRoleId * integer countryId integer | null email * string (email) location string | null name * string phone string | null state string | null zipCode string | null creationDate string (date-time) createdBy string lastUpdateDate string (date-time) | null lastUpdatedBy string | null website string | null countryId integer | null tenantId integer enterpriseId integer archivedAt string (date-time) | null null if the publisher is active. archivedBy string | null null if the publisher is active./catalog/v1/publishers curl -X POST "https://platform.revelator.com/catalog/v1/publishers" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875,
"enterpriseId": null
}' curl -X POST "https://platform.revelator.com/catalog/v1/publishers" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875,
"enterpriseId": null
}' Example response 200
{
"publisherId": 3301,
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-01-10T12:03:43Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"lastUpdateDate": "2026-01-10T12:03:43Z",
"lastUpdatedBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"archivedAt": null,
"archivedBy": null
} {
"publisherId": 3301,
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-01-10T12:03:43Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"lastUpdateDate": "2026-01-10T12:03:43Z",
"lastUpdatedBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"archivedAt": null,
"archivedBy": null
} Get Publisher
/catalog/v1/publishers/{publisherId} Retrieves a publisher by their ID.
Path Parameters
| Parameter | Description |
|---|---|
publisherId * integer | The ID of the publisher. |
Responses
object publisherId integer name string ipiCae string | null logoImageId string | null proAffiliations ProAffiliationItemModel[] | null proId integer memberId string additionalContacts ContactDetailsModel[] | null address string | null address2 string | null city string | null contactRoleId * integer countryId integer | null email * string (email) location string | null name * string phone string | null state string | null zipCode string | null creationDate string (date-time) createdBy string lastUpdateDate string (date-time) | null lastUpdatedBy string | null website string | null countryId integer | null tenantId integer enterpriseId integer archivedAt string (date-time) | null null if the publisher is active. archivedBy string | null null if the publisher is active./catalog/v1/publishers/{publisherId} curl -X GET "https://platform.revelator.com/catalog/v1/publishers/3301" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/publishers/3301" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
{
"publisherId": 3301,
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-01-10T12:03:43Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"lastUpdateDate": "2026-02-01T08:20:10Z",
"lastUpdatedBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"archivedAt": null,
"archivedBy": null
} {
"publisherId": 3301,
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-01-10T12:03:43Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"lastUpdateDate": "2026-02-01T08:20:10Z",
"lastUpdatedBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"archivedAt": null,
"archivedBy": null
} List Publishers
/catalog/v1/publishers Returns a paginated list of publishers based on filters and sorting options.
Query Parameters
| Parameter | Description |
|---|---|
archived boolean | Filter by archive state ( |
archivedDateFrom string (date-time) | Include publishers archived on or after this UTC date-time. |
archivedDateTo string (date-time) | Include publishers archived on or before this UTC date-time. |
creationDateFrom string (date-time) | Include publishers created on or after this UTC date-time. |
creationDateTo string (date-time) | Include publishers created on or before this UTC date-time. |
lastUpdateDateFrom string (date-time) | Include publishers updated on or after this UTC date-time. |
lastUpdateDateTo string (date-time) | Include publishers updated on or before this UTC date-time. |
searchText string | Free-text search applied to publisher name and other supported fields. |
composerIds integer[] | Filter to publishers that manage publishing rights for one or more of the given composers. The relationship is the one exposed as |
enterpriseIds integer[] | Filter by one or more client IDs. Maximum 100 IDs per request. |
pageNumber integer | Page number for paginated results. |
pageSize integer | Number of items per page. Max 204. |
orderByProperty string | Property name used for sorting. |
orderByDescending boolean | Set to true for descending order, false for ascending. |
Responses
object pageNumber integer pageSize integer totalItemsCount integer totalPagesCount number items PublisherListModel[] publisherId integer tenantId integer enterpriseId integer name string | null logoImageId string | null ipiCae string | null countryId integer | null creationDate string (date-time) lastUpdateDate string (date-time) | null archivedAt string (date-time) | null null if the publisher is active. archivedBy string | null null if the publisher is active./catalog/v1/publishers curl -X GET "https://platform.revelator.com/catalog/v1/publishers?pageNumber=1&pageSize=20&orderByProperty=name&orderByDescending=false" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/publishers?pageNumber=1&pageSize=20&orderByProperty=name&orderByDescending=false" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
{
"pageNumber": 1,
"pageSize": 20,
"totalItemsCount": 1,
"totalPagesCount": 1,
"items": [
{
"publisherId": 3301,
"tenantId": 2001,
"enterpriseId": 3001,
"name": "Example Publisher",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"ipiCae": "00000000111",
"countryId": 875,
"creationDate": "2026-01-10T12:03:43Z",
"lastUpdateDate": "2026-02-01T08:20:10Z",
"archivedAt": null,
"archivedBy": null
}
]
} {
"pageNumber": 1,
"pageSize": 20,
"totalItemsCount": 1,
"totalPagesCount": 1,
"items": [
{
"publisherId": 3301,
"tenantId": 2001,
"enterpriseId": 3001,
"name": "Example Publisher",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"ipiCae": "00000000111",
"countryId": 875,
"creationDate": "2026-01-10T12:03:43Z",
"lastUpdateDate": "2026-02-01T08:20:10Z",
"archivedAt": null,
"archivedBy": null
}
]
} Update Publisher
/catalog/v1/publishers/{publisherId} Updates an existing publisher by their ID.
Path Parameters
| Parameter | Description |
|---|---|
publisherId * integer | The ID of the publisher to update. |
Request Body *
object name string ipiCae string logoImageId string proAffiliations ProAffiliationItemModel[] proId integer memberId string additionalContacts ContactDetailsModel[] address string address2 string city string contactRoleId * integer countryId integer email * string (email) location string name * string phone string state string zipCode string website string countryId integer Responses
object publisherId integer name string ipiCae string | null logoImageId string | null proAffiliations ProAffiliationItemModel[] | null proId integer memberId string additionalContacts ContactDetailsModel[] | null address string | null address2 string | null city string | null contactRoleId * integer countryId integer | null email * string (email) location string | null name * string phone string | null state string | null zipCode string | null creationDate string (date-time) createdBy string lastUpdateDate string (date-time) | null lastUpdatedBy string | null website string | null countryId integer | null tenantId integer enterpriseId integer archivedAt string (date-time) | null null if the publisher is active. archivedBy string | null null if the publisher is active./catalog/v1/publishers/{publisherId} curl -X PUT "https://platform.revelator.com/catalog/v1/publishers/3301" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875
}' curl -X PUT "https://platform.revelator.com/catalog/v1/publishers/3301" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875
}' Example response 200
{
"publisherId": 3301,
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-01-10T12:03:43Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"lastUpdateDate": "2026-06-12T09:00:00Z",
"lastUpdatedBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"archivedAt": null,
"archivedBy": null
} {
"publisherId": 3301,
"name": "Example Publisher",
"ipiCae": "00000000111",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-9911223" }
],
"additionalContacts": [
{ "name": "Royalty Contact", "email": "[email protected]", "contactRoleId": 5 }
],
"website": "https://example.com",
"countryId": 875,
"tenantId": 2001,
"enterpriseId": 3001,
"creationDate": "2026-01-10T12:03:43Z",
"createdBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"lastUpdateDate": "2026-06-12T09:00:00Z",
"lastUpdatedBy": "b3f1a2c4-1111-4e5f-a678-426614174000",
"archivedAt": null,
"archivedBy": null
} Archive Publishers
/catalog/v1/publishers/archive Archives publishers in batch by publisher IDs.
Request Body *
object publisherIds * integer[] Responses
object results ArchiveResult[] id integer succeeded boolean errors ArchiveResultError[] | null null when succeeded is true. code string General.NotFound, General.Validation message string /catalog/v1/publishers/archive curl -X POST "https://platform.revelator.com/catalog/v1/publishers/archive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"publisherIds": [3301, 3302]
}' curl -X POST "https://platform.revelator.com/catalog/v1/publishers/archive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"publisherIds": [3301, 3302]
}' Example response 200
{
"results": [
{
"id": 3301,
"succeeded": true,
"errors": null
},
{
"id": 3302,
"succeeded": true,
"errors": null
}
]
} {
"results": [
{
"id": 3301,
"succeeded": true,
"errors": null
},
{
"id": 3302,
"succeeded": true,
"errors": null
}
]
} Unarchive Publishers
/catalog/v1/publishers/unarchive Unarchives publishers in batch by publisher IDs. Publishers archived for more than 6 months can no longer be unarchived.
Request Body *
object publisherIds * integer[] Responses
object results UnarchiveResult[] id integer succeeded boolean errors UnarchiveResultError[] | null null when succeeded is true. code string General.NotFound, General.Validation message string /catalog/v1/publishers/unarchive curl -X POST "https://platform.revelator.com/catalog/v1/publishers/unarchive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"publisherIds": [3301, 3302]
}' curl -X POST "https://platform.revelator.com/catalog/v1/publishers/unarchive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"publisherIds": [3301, 3302]
}' Example response 200
{
"results": [
{
"id": 3301,
"succeeded": true,
"errors": null
},
{
"id": 3302,
"succeeded": true,
"errors": null
}
]
} {
"results": [
{
"id": 3301,
"succeeded": true,
"errors": null
},
{
"id": 3302,
"succeeded": true,
"errors": null
}
]
}