Revelator Logo API

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

POST /catalog/v1/publishers

Creates a new publisher.

Request Body *

object
name * string
Full name of the publisher. Must be unique per client.
ipiCae string
IPI or CAE number for the publisher. See the IPI/CAE Number section above for details.
logoImageId string
File ID (GUID) of the publisher's logo image, uploaded via the Files API.
proId integer
Revelator's internal ID for the PRO. Retrieved from GET /content/track/lookups on the V1.0 API.
memberId string
Unique member ID issued by the PRO. Must be unique across publishers and composers within the same organization.
address string
Street address, line 1.
address2 string
Street address, line 2.
city string
City.
contactRoleId * integer
Role of this contact. Role IDs can be retrieved from GET /common/lookup/contactRoles on the V1.0 API.
countryId integer
Country ID. Retrieved from GET /common/lookup/countries on the V1.0 API.
email * string (email)
Contact's email address.
location string
General location description.
name * string
Contact's full name.
phone string
Contact's phone number.
state string
State or province.
zipCode string
Zip or postal code.
website string
Publisher's website.
countryId integer
Country where this publisher administers publishing rights and collects royalties. Retrieved from GET /common/lookup/countries on the V1.0 API.
enterpriseId integer
The client under which the publisher will be created. Defaults to the caller's client when using client permissions. Required when using organization permissions.

Responses

object
publisherId integer
Unique identifier for the publisher.
name string
Full name of the publisher.
ipiCae string | null
IPI or CAE number for the publisher.
logoImageId string | null
File ID of the publisher's logo image.
proId integer
Revelator's internal ID for the PRO.
memberId string
Unique member ID issued by the PRO.
address string | null
Street address, line 1.
address2 string | null
Street address, line 2.
city string | null
City.
contactRoleId * integer
Role of this contact.
countryId integer | null
Country ID.
email * string (email)
Contact's email address.
location string | null
General location description.
name * string
Contact's full name.
phone string | null
Contact's phone number.
state string | null
State or province.
zipCode string | null
Zip or postal code.
creationDate string (date-time)
UTC timestamp when the publisher was created.
createdBy string
ID of the user who created the publisher.
lastUpdateDate string (date-time) | null
UTC timestamp of the most recent update. Set to the creation timestamp when the publisher has never been explicitly updated.
lastUpdatedBy string | null
ID of the user credited with the most recent change. Set to the creating user at creation, then updated on each subsequent edit.
website string | null
Publisher's website.
countryId integer | null
Country where this publisher administers publishing rights and collects royalties.
tenantId integer
ID of the organization that owns this publisher.
enterpriseId integer
ID of the client that owns this publisher.
archivedAt string (date-time) | null
UTC timestamp when the publisher was archived. null if the publisher is active.
archivedBy string | null
ID of the user who archived the publisher. null if the publisher is active.
POST /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
}'
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
}

Get Publisher

GET /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
Unique identifier for the publisher.
name string
Full name of the publisher.
ipiCae string | null
IPI or CAE number for the publisher.
logoImageId string | null
File ID of the publisher's logo image.
proId integer
Revelator's internal ID for the PRO.
memberId string
Unique member ID issued by the PRO.
address string | null
Street address, line 1.
address2 string | null
Street address, line 2.
city string | null
City.
contactRoleId * integer
Role of this contact.
countryId integer | null
Country ID.
email * string (email)
Contact's email address.
location string | null
General location description.
name * string
Contact's full name.
phone string | null
Contact's phone number.
state string | null
State or province.
zipCode string | null
Zip or postal code.
creationDate string (date-time)
UTC timestamp when the publisher was created.
createdBy string
ID of the user who created the publisher.
lastUpdateDate string (date-time) | null
UTC timestamp of the most recent update. Set to the creation timestamp when the publisher has never been explicitly updated.
lastUpdatedBy string | null
ID of the user credited with the most recent change. Set to the creating user at creation, then updated on each subsequent edit.
website string | null
Publisher's website.
countryId integer | null
Country where this publisher administers publishing rights and collects royalties.
tenantId integer
ID of the organization that owns this publisher.
enterpriseId integer
ID of the client that owns this publisher.
archivedAt string (date-time) | null
UTC timestamp when the publisher was archived. null if the publisher is active.
archivedBy string | null
ID of the user who archived the publisher. null if the publisher is active.
GET /catalog/v1/publishers/{publisherId}
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
}

List Publishers

GET /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 (true for archived, false for active).

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 composers on the track endpoints, where a composer entry names its publisherId. Maximum 100 IDs per request.

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
Current page number.
pageSize integer
Number of items per page.
totalItemsCount integer
Total number of publishers matching the filters.
totalPagesCount number
Total number of pages.
publisherId integer
Unique identifier for the publisher.
tenantId integer
ID of the organization that owns this publisher.
enterpriseId integer
ID of the client that owns this publisher.
name string | null
Full name of the publisher.
logoImageId string | null
File ID of the publisher's logo image.
ipiCae string | null
IPI or CAE number for the publisher.
countryId integer | null
Country where this publisher administers publishing rights and collects royalties.
creationDate string (date-time)
UTC timestamp when the publisher was created.
lastUpdateDate string (date-time) | null
UTC timestamp of the most recent update. Set to the creation timestamp when the publisher has never been explicitly updated.
archivedAt string (date-time) | null
UTC timestamp when the publisher was archived. null if the publisher is active.
archivedBy string | null
ID of the user who archived the publisher. null if the publisher is active.
GET /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"
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
  }
]
}

Update Publisher

PUT /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
Full name of the publisher. Must be unique per client.
ipiCae string
IPI or CAE number for the publisher. See the IPI/CAE Number section above for details.
logoImageId string
File ID (GUID) of the publisher's logo image, uploaded via the Files API.
proId integer
Revelator's internal ID for the PRO. Retrieved from GET /content/track/lookups on the V1.0 API.
memberId string
Unique member ID issued by the PRO. Must be unique across publishers and composers within the same organization.
address string
Street address, line 1.
address2 string
Street address, line 2.
city string
City.
contactRoleId * integer
Role of this contact. Retrieved from GET /common/lookup/contactRoles on the V1.0 API.
countryId integer
Country ID. Retrieved from GET /common/lookup/countries on the V1.0 API.
email * string (email)
Contact's email address.
location string
General location description.
name * string
Contact's full name.
phone string
Contact's phone number.
state string
State or province.
zipCode string
Zip or postal code.
website string
Publisher's website.
countryId integer
Country where this publisher administers publishing rights and collects royalties. Retrieved from GET /common/lookup/countries on the V1.0 API.

Responses

object
publisherId integer
Unique identifier for the publisher.
name string
Full name of the publisher.
ipiCae string | null
IPI or CAE number for the publisher.
logoImageId string | null
File ID of the publisher's logo image.
proId integer
Revelator's internal ID for the PRO.
memberId string
Unique member ID issued by the PRO.
address string | null
Street address, line 1.
address2 string | null
Street address, line 2.
city string | null
City.
contactRoleId * integer
Role of this contact.
countryId integer | null
Country ID.
email * string (email)
Contact's email address.
location string | null
General location description.
name * string
Contact's full name.
phone string | null
Contact's phone number.
state string | null
State or province.
zipCode string | null
Zip or postal code.
creationDate string (date-time)
UTC timestamp when the publisher was created.
createdBy string
ID of the user who created the publisher.
lastUpdateDate string (date-time) | null
UTC timestamp of the most recent update.
lastUpdatedBy string | null
ID of the user who last updated the publisher.
website string | null
Publisher's website.
countryId integer | null
Country where this publisher administers publishing rights and collects royalties.
tenantId integer
ID of the organization that owns this publisher.
enterpriseId integer
ID of the client that owns this publisher.
archivedAt string (date-time) | null
UTC timestamp when the publisher was archived. null if the publisher is active.
archivedBy string | null
ID of the user who archived the publisher. null if the publisher is active.
PUT /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
}'
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
}

Archive Publishers

POST /catalog/v1/publishers/archive

Archives publishers in batch by publisher IDs.

Request Body *

object
Batch archive request payload.
publisherIds * integer[]
List of publisher IDs to archive. Maximum 100 IDs per request.

Responses

object
id integer
Publisher ID from the request.
succeeded boolean
Whether the archive operation succeeded for this publisher.
code string
Error code.
Examples: General.NotFound, General.Validation
message string
Human-readable error message.
POST /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]
}'
Example response 200
{
"results": [
  {
    "id": 3301,
    "succeeded": true,
    "errors": null
  },
  {
    "id": 3302,
    "succeeded": true,
    "errors": null
  }
]
}

Unarchive Publishers

POST /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
Batch unarchive request payload.
publisherIds * integer[]
List of publisher IDs to unarchive. Maximum 100 IDs per request.

Responses

object
id integer
Publisher ID from the request.
succeeded boolean
Whether the unarchive operation succeeded for this publisher.
code string
Error code.
Examples: General.NotFound, General.Validation
message string
Human-readable error message.
POST /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]
}'
Example response 200
{
"results": [
  {
    "id": 3301,
    "succeeded": true,
    "errors": null
  },
  {
    "id": 3302,
    "succeeded": true,
    "errors": null
  }
]
}