A release is an album, EP, or single. Releases contain one or more tracks and various metadata. Use the
/content/release/save
resource to create or edit releases. Specifically, this resource enables you to do the
following:
Unless otherwise stated, the Revelator API does not support partial updates. When editing an object, the existing values of any omitted parameters will be deleted or overwritten, according to the designated behavior for a null value for that parameter. Consequently, we recommend you always query the object you want to edit and modify the JSON object to avoid partial update problems.
/content/release/save
Parameter | Type | Description |
---|---|---|
name required | string | Title of the Release.
|
releaseId optional | integer | ID for the existing release you want to edit. This ID was returned in the response when the release was created.
|
artistName optional | string | Name of the release’s primary artist/band.
|
artistId optional | integer | ID for an existing artist to assign as the primary artist for the release.
|
releasesLocals required | array of objects | Release name in different languages. Only relevant if listeners may search for the release in a different language. For example, if you provided the release name in Japanese, you may want to additionally provide the name in Latin characters. You can translate the name or provide it phonetically (no rules). Parameter is mandatory even if the array is empty.
|
releasesLocals.name required | string | Name in the indicated language. |
releasesLocals.version optional | string | Version in the indicated language. |
releasesLocals.languageId required | integer | Language ID indicating the language of the name. Each language can be used only once in the array. Lookup up the languageId using the GET /common/lookup/languages resource. |
artistLocals optional | array of objects | Artist name in different languages. Only relevant if listeners may search for the release in a different language. For example, if you provided the artist name in Japanese, you may want to additionally provide the name in Latin characters. You can translate the name or provide it phonetically (no rules).
|
artistLocals.name required | string | Name in the indicated language. |
artistLocals.languageId required | integer | Language ID indicating the language of the name. Each language can be used only once in the array. Lookup up the languageId using the GET /common/lookup/languages resource. |
contributors required | array of objects | Additional key artists who should be given top level credit. Do not provide individual band member names. For example, “The Beatles” and, not John Lennon, Paul McCartney, George Harrison and Ringo Starr.
|
contributors.contributorId optional | GUID | ID for an existing contributor.
|
contributors.roleId required | integer | The artist’s role as a contributor. Look up roleIds with GET /common/lookup/contributorRoles .
|
contributors.artist required | object | The contributing artist. Unlike all other artists in Revelator, contributing artists with any role other than Primary Artist, Featuring, or Remixer do not require external artist IDs. In other words, contributing artists with the roles Primary Artist, Featuring, or Remixer require Apple and Spotify IDs (same as primary artists); contributing artists with other roles do not require these IDs (they are optional). See Artist Object |
version optional | string | Title version. For example, Remastered or Deluxe edition. Typically omitted unless the release is a new version of a previously released release. |
copyrightP required | string | The product copyright holder preceded by the year the rights were obtained. For example: 2008 Acme Inc. The product copyright holder is the person or entity that owns the exclusive rights to the complete product, including both sound recording and artwork. |
copyrightC required | string | The sound recording copyright holder preceded by the year the rights were obtained. For example: 2008 Acme Inc. The sound recording copyright holder is the person or entity that owns the exclusive rights to the sound recording. |
hasRecordLabel optional | boolean |
|
labelName optional | string |
|
labelId optional | integer | ID for an existing label to assign to the release.
|
artistAppleId required | string | One of the following:
|
artistSpotifyId required | string | One of the following:
|
previouslyReleased optional | boolean |
|
upc optional | integer | UPC/EAN/JAN code for the release.
|
releaseDate optional | string | Official date the release was previously released in the ISO format YYYY-MM-DD
|
primaryMusicStyleId required | integer | ID for the release’s primary music style. Lookup music style IDs using the GET /common/lookup/musicstyles resource. |
languageId required | integer | Language ID for the release’s meta data. This is not the language of the songs/lyrics, but the language of the information provided in this API request. Lookup up the languageId using the GET /common/lookup/languages resource. English is 1. |
description optional | string | Release description. |
tracks required | array of objects | Tracks for the release.
|
image optional | object | Cover image for the release.
|
curl -X POST 'http://api.revelator.com/content/release/save' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer c1234562-5f45-4ab6-b8fb-812345c3e4d4' \
-d '{
"artistName": "Release_artist",
"contributors": [],
"copyrightC": "2018 companyC",
"copyrightP": "2018 companyP",
"hasRecordLabel": false,
"previouslyReleased": false,
"languageId": 1,
"name": "Single",
"primaryMusicStyleId": 60,
"releasesLocals": [],
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"filename": "file123.jpg"
},
"tracks": [
{
"artistName": "TRACK_ARTIST",
"languageId": 1,
"name": "Single",
"explicit": false,
"wav": {
"filename": "file123.wav",
"fileId": "00000000-0000-0000-0000-000000000000"
},
"trackLength": 267,
"sampleRate": 44100,
"composerContentsDTO": [
{
"composerName": "John Doe",
"rightsId": 1,
"roleId": 2,
"share": 100,
"composerImageId": "00000000-0000-0000-0000-000000000000"
}
]
}
]
}'
Parameter | Type | Description |
---|---|---|
name optional | string | Name of the artist.
|
artistId optional | integer | ID for an existing artist.
|
artistExternalIds optional | array of objects | External IDs for the artist for each store. Each supported store should have one or zero entries.
|
artistExternalIds.profileId required | string | External ID for the artist at the specified store.
|
artistExternalIds.distributorStoreId required | string | Revelator ID for the store. Currently supported for:
|
artistLocals optional | array of objects | Artist name in different languages. Only relevant if listeners may search for the release in a different language. For example, if you provided the artist name in Japanese, you may want to additionally provide the name in Latin characters. You can translate the name or provide it phonetically (no rules).
|
artistLocals.name required | string | Name in the indicated language. |
artistLocals.languageId required | integer | Language ID indicating the language of the name. Each language can be used only once in the array. Lookup up the languageId using the GET /common/lookup/languages resource. |
Parameter | Type | Description |
---|---|---|
filename required | string | Name of the file, including the extension. |
fileId required | string | The ID for a file that has already been uploaded to the Revelator server. See Uploading Files |
Used within the trackRecordingVersions.audioFiles
array.
Parameter | Type | Description |
---|---|---|
audioId required | string | The ID for a file that has already been uploaded to the Revelator server. See Uploading Files |
audioFilename required | string | Name of the audio file, including the extension. |
fileFormat required | string |
|
Parameter | Type | Description |
---|---|---|
name optional | string | Title of the track.
|
trackId optional | integer | ID for an existing track you want to assign to the release. This ID was returned in the response when the track was created. Note that you should not use the same trackId on more than one release. You should only provide an existing trackId in a case where you are editing an existing release or assigning a track that is not yet assigned to any release. In a case where the same track (same ISRC) is used on more than one release, you should create the track as new for the second release (generate a new trackId).
|
artistName optional | string | Name of the track’s primary artist/band.
|
artistId optional | integer | ID for an existing artist to assign as the primary artist for the track.
|
tracksLocals optional | array of objects | Track name in different languages. Only relevant if listeners may search for the release in a different language. For example, if you provided the track name in Japanese, you may want to additionally provide the name in Latin characters. You can translate the name or provide it phonetically (no rules).
|
tracksLocals.name required | string | Name in the indicated language. |
tracksLocals.version optional | string | Version in the indicated language. |
tracksLocals.languageId required | integer | Language ID indicating the language of the name. Each language can be used only once in the array. Lookup up the languageId using the GET /common/lookup/languages resource. |
artistLocals optional | array of objects | Artist name in different languages. Only relevant if listeners may search for the release in a different language. For example, if you provided the artist name in Japanese, you may want to additionally provide the name in Latin characters. You can translate the name or provide it phonetically (no rules).
|
artistLocals.name required | string | Name in the indicated language. |
artistLocals.languageId required | integer | Language ID indicating the language of the name. Each language can be used only once in the array. Lookup up the languageId using the GET /common/lookup/languages resource. |
contributors optional | array of objects | Additional key artists who should be given top level credit. Do not provide individual band member names. For example, “The Beatles” and, not John Lennon, Paul McCartney, George Harrison and Ringo Starr.
|
contributors.contributorId optional | GUID | ID for an existing contributor.
|
contributors.roleId required | integer | The artist’s role as a contributor. Look up roleIds with GET /common/lookup/contributorRoles .
|
contributors.artist required | object | The contributing artist. Unlike all other artists in Revelator, contributing artists with any role other than Primary Artist, Featuring, or Remixer do not require external artist IDs. In other words, contributing artists with the roles Primary Artist, Featuring, or Remixer require Apple and Spotify IDs (same as primary artists); contributing artists with other roles do not require these IDs (they are optional). See Artist Object |
languageId required | integer | Language ID for the track’s lyrics. Lookup up the languageId using the GET /common/lookup/languages endpoint . English is 1. |
version optional | string | Version of the track. For example, Remix or Bonus Track. |
explicit required | boolean | Be sure that your user interface indicates the importance of properly identifying this content. Misidentifying this content can result in your distribution being disabled. Should be true when the song contains any of the following:
|
trackType required | integer | One of the following:
|
trackProperties required | array of integers | One or multiple of the following:
|
artistAppleId required | string | One of the following:
|
artistSpotifyId required | string | One of the following:
|
composerContentsDTO required | array of objects | A list of publishing contributors(composers) for the track . |
composerContentsDTO.composerName optional | string | Name of the composer.
|
composerContentsDTO.composerId optional | integer | ID for an existing composer to assign to the track.
|
composerContentsDTO.rightsId required | integer | Publishing type. One of the following:
|
composerContentsDTO.roleId required | integer | A role associated with the composer. Look up roleIds with GET /common/lookup/contributorRoles . Only roles with priority = 5 or contributorRoleGroupId = 4 are relevant for composers. |
composerContentsDTO.share optional | string | Share percentage for the composer. The total percentage for all composers must be 100%. Note that this has nothing to do with contract splits, and publisher royalties are never paid through the Revelator platform. |
composerContentsDTO.publisherName optional | string | Name of the publisher to assign to the composer.
|
composerContentsDTO.publisherId optional* | integer | ID for an existing publisher to assign to the composer.
publisherId to 0 (along with providing a publisherName) to create a new publisher whenever no existing publisher with the provided name exists. Omitting this parameter will cause the publisher (name and ID) to be null. |
composerContentsDTO.composersLocals optional | array of objects | Composer name in different languages. If name or languageId are omitted, the object will be ignored. |
composerContentsDTO.composersLocals.name optional | string | Name in the indicated language. |
composerContentsDTO.composersLocals.version optional | string | Version in the indicated language. |
composerContentsDTO.composersLocals.languageId optional | integer | Language ID indicating the language of the name. Each language can be used only once in the array. Lookup up the languageId using the GET /common/lookup/languages resource. |
lyrics optional | string | Lyrics for the track. Note that not all stores accept lyrics. |
isrc optional | string | This field is part of the old Track Recording model. See New track recording model for more information. ISRC code for the track. Hyphens and spaces will be automatically removed, and letters will be automatically capitalized.
|
wav optional | object | This field is part of the old Track Recording model. See New track recording model for more information. Audio file for the track in WAV format.
|
trackRecordingVersions optional | array of objects | This field is part of the new Track Recording model. See New track recording model for more information. If provided, this list needs to have
|
trackRecordingVersions.recordingVersionType required | integer | Type of the track version.
|
trackRecordingVersions.isrc required | string | A valid ISRC code for the track version.
null if the ISRC should be generated automatically (during distribution). |
trackRecordingVersions.audioFiles required | array of objects | When creating a new track, this array must contain a single object with a WAV (1 ) or a FLAC (2 ) fileFormat .
When editing an existing track:
|
With the release of support for Dolby Atmos, we have updated the track object adequately. The old model is going to remain supported with the goal of backwards compatibility; however, we strongly advise adapting to this new model (even if not utilizing Dolby Atmos).
New model (Supports Dolby Atmos)
Track object includes the following properties:
trackRecordingVersions[]
isrc
recordingVersionType
trackRecordingVersions.audioFiles[]
- audioFiles.audioId
- audioFiles.audioFilename
- audioFiles.fileFormat
Old model (Does not support Dolby Atmos)
Track object includes the following properties:
isrc
wav
or flac
Only one of the two models should be used, failiure to do so will result in an error.
Refer to the track object table for coprehensive information on these fields
All files must be uploaded before being associated with a track or a release. This goes for both audio and image assets.
/media/audio/upload
Uploads WAV or FLAC audio files.
A recent change requires all audio files to be longer than 2 seconds. Invalid audio files will be rejected.
Content-type for this request must be multipart/form-data
Form Field | Type | Description |
---|---|---|
file required | binary | The audio file to upload |
Field | Type | Description |
---|---|---|
fileId | string | The ID of the uploaded file that’s going to be used to reference it across the application. |
filename | string | The filename of the uploaded file. |
/media/audio/upload/wav
Uploads WAV audio files.
This endpoint has the same request, response, and requirements as POST /media/audio/upload
.
The file
field in the Form Data should contain the WAV audio file.
/media/audio/upload/flac
Uploads FLAC audio files.
This endpoint has the same request, response, and requirements as POST /media/audio/upload
.
The file
field in the Form Data should contain the FLAC audio file.
/media/image/upload
Content-type for this request must be multipart/form-data
If the uploaded image is a PNG and the cover
query parameter is set to true
, the image will be automatically converted to JPG.
Parameter | Type | Description |
---|---|---|
cover optional | boolean | Is the image going to be used as a cover art |
Form Field | Type | Description |
---|---|---|
file required | binary | The image file to upload |
fileId - string |
/media/audio/pullexternal/wav
An alternative way to upload files. As long as those are publicly available on the web.
This might prove useful if you don’t want to handle the file upload yourself or already have the asset uploaded and accessible elsewhere.
A recent change requires all audio files to be longer than 2 seconds. Invalid audio files will be rejected.
You can use expiring links as a measure of security, as long as the file is accessible within the timeframe when this endpoint is invoked.
Parameter | Type | Description |
---|---|---|
externalUrl required | string | A valid URL to a publicly available audio file. |
filename required | string | The name of the file |
Field | Type | Description |
---|---|---|
fileId | string | The ID of the uploaded file that’s going to be used to reference it across the application. |
filename | string | The filename of the uploaded file. |
Use the following endpoints to retrieve release data.
By default, these endpoints will return all releases the user has permissions to view, not just the releases in the user’s account. A parent account user will receive all releases in every child.
/content/release/all
Retrieves list of all releases the user has permissions to view.
/content/release/all/summary
Retrieves a summary of all releases the user has permissions to view.
/content/release/{releaseId}
Retrieves the release with the releaseId
specified in the URL path.
An artist is a metadata entity that is referenced in assets (releases and tracks).
Due to DSP requirements, an artist cannot be listed as a primary artist twice, or listed as both a primary artist and a featuring artist on the same track or release.
The Revelator API prohibits this scenario with an error message when attempting to set an artist as both the main
primary artist (indicated with the artistId
and artistName
) as well as a contributor with the role of primary or
featuring.
/artists
Creates new or edits existing artists in the account associated with the access token.
For Child Account implementation models, you have the option to run requests in a child account while authenticated as a parent account user. See Running Requests in Child Accounts.
Parameter | Type | Description |
---|---|---|
name optional | string | Name of the artist.
|
artistId optional | integer | ID for an existing artist.
|
artistExternalIds optional | array of objects | External IDs for the artist for each store. Each supported store should have one or zero entries.
|
artistExternalIds.profileId required | string | External ID for the artist at the specified store.
|
artistExternalIds.distributorStoreId required | string | Revelator ID for the store. Currently supported for:
|
artistLocals optional | array of objects | Artist name in different languages. Only relevant if listeners may search for the release in a different language. For example, if you provided the artist name in Japanese, you may want to additionally provide the name in Latin characters. You can translate the name or provide it phonetically (no rules).
|
artistLocals.name required | string | Name in the indicated language. |
artistLocals.languageId required | integer | Language ID indicating the language of the name. Each language can be used only once in the array. Lookup up the languageId using the GET /common/lookup/languages resource. |
image optional | object | The image representing the artist. See File Object. |
additionalContacts optional | array of objects | Array of Contact objects. Details about contacts can be found in the Adding/Editing Contacts section. |
activeFromDate optional | string | The specific date when the artist began their activity. ISO 8601 format (e.g., YYYY-MM-DDTHH:MM:SS). |
activeToDate optional | string | The specific date when the artist ended their activity (or null if still active). ISO 8601 format (e.g., YYYY-MM-DDTHH:MM:SS). |
firstName optional | string | Legal first name of the artist. Must consist only of Unicode letters, hyphens (-), single quotes (’), or dots (.). Must have a total length between 1 and 100 characters (inclusive). |
middleName optional | string | Legal middle name(s) of the artist. |
lastName optional | string | Legal last name of the artist. Must consist only of Unicode letters, hyphens (-), single quotes (’), or dots (.). Must have a total length between 1 and 100 characters (inclusive). |
isni optional | string | The International Standard Name Identifier (ISNI) for the artist. Must be exactly 16 alphanumeric characters, where the last character can also be ‘X’. |
artistLabels optional | array of objects | An array of objects, each representing an association with a Label. See nested fields below for structure and requirements. |
artistLabels.labelId required | integer | The ID of an existing Label to associate with the artist. |
artistLabels.contractStartYear required | string | The start date of the contract between the artist and this label. ISO 8601 format (e.g., YYYY-MM-DDTHH:MM:SSZ). |
artistLabels.contractEndYear optional | string | The end date of the contract between the artist and this label. If provided, must be after contractStartYear . ISO 8601 format (e.g., YYYY-MM-DDTHH:MM:SSZ). |
Use the following endpoints to retrieve artist data.
For Child Account implementation models, you have the option to run requests in a child account while authenticated as a parent account user. See Running Requests in Child Accounts.
/artists
Retrieves list of all artists in the account.
Parameter | Type | Description |
---|---|---|
labels optional | array | An array of label IDs to filter artists associated with any of the specified labels. |
name optional | string | Name of artist, case-sensitive, exact match. |
isni optional | string | Filters artists by their International Standard Name Identifier (ISNI). |
contributorGroupId optional | integer | Filters artists who have contributed to tracks/releases using a role that belongs to the specified Contributor Role Group ID. Refer to /common/lookup/ContributorRolesGroups for available group IDs. |
curl -X GET -H 'Accept: text/plain'\
'http://api.revelator.com/artists?labels=labelA&labels=labelB'
{
"totalItemsCount": 0,
"pageNumber": 0,
"pageSize": 0,
"items": [
{
"artistId": 0,
"name": "string",
"firstName": "string",
"lastName": "string",
"middleName": "string",
"isni": "string",
"releasesCount": 0,
"tracksCount": 0,
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-12T12:38:18.124Z"
}
}
],
"additionalCounters": {}
}
/artists/summary
Retrieves a summary of all artists in the account.
/artists/{artistId}
Retrieves the artist with the artistId
specified in the URL path.
Parameter | Type | Description |
---|---|---|
labels optional | array | One or more labels associated with artists |
name optional | string | Name of artist |
/content/artist/all
Retrieves paginated list of all artists in the account.
Parameter | Type | Description |
---|---|---|
labels optional | array | An array of label IDs to filter artists associated with any of the specified labels. |
name optional | string | Filters artists by name (case-insensitive, exact match). |
fromDate optional | date-time | Filters for artists created on or after the provided date. Expected format: YYYY-MM-DDTHH:MM:SS (e.g., ISO 8601 without timezone). |
toDate optional | date-time | Filters for artists created on or before the provided date. Expected format: YYYY-MM-DDTHH:MM:SS (e.g., ISO 8601 without timezone). |
musicStyles optional | array | An array of music style IDs to filter artists associated with any of the specified music styles. |
isni optional | string | Filters artists by their International Standard Name Identifier (ISNI). |
contributorGroupId optional | integer | Filters artists who have contributed to tracks/releases using a role that belongs to the specified Contributor Role Group ID. Refer to /common/lookup/ContributorRolesGroups for available group IDs. |
pageNumber optional | integer | The page number of the results to retrieve. Default is 1 . |
pageSize optional | integer | The number of items per page. Default is a system-defined value. Requires pageNumber query parameter to work properly. |
orderByProperty optional | string | The property to sort the results by. Available options: - artistId - isni - name - firstName - middleName - lastname |
orderByDescending optional | boolean | If true or omitted, orders the results in descending order. If false , orders in ascending order. |
searchText optional | string | Allows to search by client’s name. |
curl -X GET -H 'Accept: text/plain'\
'http://api.revelator.com/content/artists/all?orderByProperty=middleName&pageSize=10&pageNumber=1'
{
"totalItemsCount": 0,
"pageNumber": 0,
"pageSize": 0,
"items": [
{
"additionalContacts": [
{
"contactId": 0,
"name": "string",
"currencyCode": "string",
"phone": "string",
"email": "string",
"address": "string",
"address2": "string",
"zipcode": "string",
"countryId": 0,
"imageId": "00000000-0000-0000-0000-000000000000",
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-12T12:38:18.507Z"
},
"isActive": true,
"labelId": 0,
"publisherId": 0,
"artistId": 0,
"city": "string",
"state": "string",
"location": "string",
"contactRoleId": 0
}
],
"musicStyles": [
{
"musicStyleId": 0,
"name": "string"
}
],
"creationDate": "2025-06-12T12:38:18.508Z",
"artistId": 0,
"name": "string",
"firstName": "string",
"lastName": "string",
"middleName": "string",
"isni": "string",
"releasesCount": 0,
"tracksCount": 0,
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-12T12:38:18.508Z"
}
}
],
"additionalCounters": {}
}
Some DSPs share their artist IDs with us, allowing us to tightly couple our artists with theirs. This enables us to avoid situations where two different artists with the same name are merged or a single artist’s catalog is split between two or more profiles.
If an artist is already on the DSP, we require you to provide this ID when creating releases for the artist. If an artist is not already on the DSP, we require you to indicate that we should generate an ID for the artist when (if ever) the artist is distributed to the DSP.
Currently, this is supported for Apple Music (1), Spotify (9), SoundCloud (68), and Meta (309).
Always provide a profile if it exists for the artist. However, the profileId may be left empty.
Each DSP has different behavior when an artist’s profileId is not provided (0
, null
or no entry in the
artistExternalIds
array).
You must retrieve newly generated IDs immediately before distributing additional releases for an artist.
If the ID for the artist has already been generated, but you continue to indicate that a new ID should be generated, you will delete the ID from the Revelator system and may cause a second ID to be generated for the artist!
artistId
parameter in the new release to ensure that the same Revelator artist is being
assigned./content/artist/all
or GET
/content/artist/{Id}
endpoint. The response will include the profileId
for each DSP with an existing value. See
Artist Object.Do not continuously poll our system for the ID. Only run the GET request immediately before distributing a new release which requires the ID. There are many reasons that an ID may never be generated (for example, when a Spotify release does not ultimately go live).
A publisher is a metadata entity that is referenced in assets (releases and tracks).
/content/publisher/save
Creates a new publisher or updates an existing one. The target enterprise for the operation can be specified if the authenticated user has appropriate parent/child account permissions.
When a new Publisher is created implicitly as part of saving a Release or Track, its enterpriseId
will automatically be set to match the enterpriseId
of that Release or Track.
This is a change from previous behavior where the new publisher would inherit the enterpriseId
of the currently authenticated user’s session. This new behavior ensures that implicitly created publishers are correctly associated with the enterprise context of the asset they are first introduced with.
When managing Publishers directly via the /content/publisher/save
endpoint, you have more explicit control over the enterpriseId
as described in the parameters for this endpoint.
When assigning existing contact, only contactId
on additionalContacts
object is required.
Parameter | Type | Description |
---|---|---|
publisherId optional | Integer | ID for an existing publisher. Required when editing publisher, should be ommited or set to 0 when creating new publisher. |
name required | string | Full name of the publisher. |
ipiCae optional | string | IPI (Interested Parties Information) - CAE (Composer, Author, and Publisher) number. Exactly 9 digits (IPI) or 11 digits (CAE). Unique across publishers and composers (writers) in the same tenant if present. Used to identify publishers across rights organizations. |
image optional | object | The image representing the publisher. See File Object. |
image.fileId required | string | The ID of the previously uploaded file. Required when image object is present. |
image.filename required | string | Name of the previously uploaded file with extension. |
proAffiliations optional | array of objects | A list detailing the Performance Rights Organizations (PROs) affiliations. |
proAffiliations.proId required | integer | Our internal ID linking to the mechanicalPros entity. |
proAffiliations.memberId required | string | Unique ID issued by PRO. Unique across composers and publishers for the same tenant. |
additionalContacts optional | array of objects | Array of Contact objects. Details about contacts can be found in the Adding/Editing Contacts section. |
website optional | string | Publisher’s website. |
countryId optional | integer | Country where this publisher administers publishing rights and collects royalties. |
enterpriseId optional | integer | Specifies the target enterprise ID for the publisher.
|
curl -X POST 'http://api.revelator.com/content/publisher/save' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer c1234562-5f45-4ab6-b8fb-812345c3e4d4' \
-d '{
"publisherId": 0,
"name": "Example Publisher",
"ipiCae": "0000000111",
"image": {
"fileId": "00000000-0000-0000-a7d1-aaab06776049",
"filename": "photo.jpg"
},
"proAffiliations": [],
"additionalContacts": [
{
"contactId": 796718
},
{
"name": "Booking Manager",
"email": "[email protected]",
"contactRoleId": 5
}
],
"website": "https://hello.com",
"countryId": 875
}'
Use the following endpoints to retrieve publisher data.
/content/publisher/all
Retrieves a paginated list of all publishers in the account, with options for sorting and searching.
Parameter | Type | Description |
---|---|---|
pageNumber optional | integer | The page number of the results to retrieve. Default is 1 . |
pageSize optional | integer | The number of items to return per page. Default is 24 . Requires pageNumber query parameter to work properly. |
orderByProperty optional | string | The property to sort the results by. Available options:
|
orderByDescending optional | boolean | If false , orders the results in ascending order. If true or omitted, orders in descending order. |
searchText optional | string | A search term to filter publishers by name. The search is case-insensitive. |
curl -X GET 'http://api.revelator.com/content/publisher/all?pageNumber=1&pageSize=10&orderByProperty=name&orderByDescending=true'
{
"totalItemsCount": 24,
"pageNumber": 1,
"pageSize": 10,
"items": [
{
"publisherId": 1,
"name": "Example Publisher",
"ipiCae": "11111111111",
"image": {
"fileId": "00000000-0000-0000-0000-00000000",
"isTemp": false,
"filename": "photo.jpg",
"externalUrl": null,
"lastUpdateDate": "2032-04-14T14:12:37.097"
},
"proAffiliations": [],
"additionalContacts": [],
"worksCount": 0,
"creationDate": "2020-05-23T19:06:44",
"website": null,
"countryId": 875
},
{
"publisherId": 2,
"name": "Example Publisher 2",
"ipiCae": null,
"image": null,
"proAffiliations": [],
"additionalContacts": [],
"worksCount": 17,
"creationDate": "2032-10-17T05:59:42",
"website": "https://example.com",
"countryId": 443
},
],
"additionalCounters": null
}
/content/publisher/all/summary
Retrieves a summarized list of publishers. Allows for searching and limiting results.
Parameter | Type | Description |
---|---|---|
query optional | string | A search term to filter publishers by name. The search is case-insensitive. |
limit optional | integer | The maximum number of summary items to return. |
curl -X GET 'http://api.revelator.com/content/publisher/all/summary?query=Publi&limit=1'
[
{
"publisherId": 1111,
"name": "Publisher",
"ipiCae": null,
"image": null,
"proAffiliations": [],
"additionalContacts": [],
"worksCount": 10,
"creationDate": "2021-10-06T10:46:16.483",
"website": null,
"countryId": 875
}
]
/content/publisher/{publisherId}
Retrieves detailed information for a specific publisher by its publisherId
.
Parameter | Type | Description |
---|---|---|
publisherId | integer | The unique ID of the publisher to retrieve. |
curl -X GET 'http://api.revelator.com/content/publisher/12345'
{
"publisherId": 12345,
"name": "Publisher Name",
"ipiCae": "111111111",
"image": null,
"proAffiliations": [],
"additionalContacts": [],
"worksCount": 0,
"creationDate": "2020-05-23T19:06:44",
"website": null,
"countryId": 875
}
A composer(writer) is a metadata entity that is referenced in assets (releases and tracks).
/content/composer/save
Creates a new composer or updates an existing one. The target enterprise for the operation can be specified if the authenticated user has appropriate parent/child account permissions.
When a new Composer is created implicitly as part of saving a Release or Track, its enterpriseId
will automatically be set to match the enterpriseId
of that Release or Track.
This is a change from previous behavior where the new composer would inherit the enterpriseId
of the currently authenticated user’s session. This new behavior ensures that implicitly created composers are correctly associated with the enterprise context of the asset they are first introduced with.
When managing Composers directly via the /content/composer/save
endpoint, you have more explicit control over the enterpriseId
as described in the parameters for this endpoint.
When assigning existing contact, only contactId
on additionalContacts
object is required.
Parameter | Type | Description |
---|---|---|
composerId optional | Integer | ID for an existing composer. Required when editing composer, should be ommited or set to 0 when creating new composer. |
name required | string | Composer’s full legal name exactly as shown on official paperwork (e.g., contracts, copyright registrations). |
isni optional | string | The International Standard Name Identifier (ISNI) for the artist. Must be exactly 16 alphanumeric characters, where the last character can also be ‘X’. |
ipiCae optional | string | IPI (Interested Parties Information) - CAE (Composer, Author, and Publisher) number. Exactly 9 digits (IPI) or 11 digits (CAE). Unique across publishers and composers (writers) in the same tenant if present. Used to identify publishers across rights organizations. |
biography optional | string | Composers’s biography. |
countryOfResidenceId optional | integer | The country in which this contributor officially resides. Used for legal and payout requirements. |
composersLocals optional | array of objects | A list of Composer’s name in different languages. |
composersLocals.name required | string | Composer’s name in the indicated language. |
composersLocals.languageId required | integer | Language ID indicating the language of the name. Each language can be used only once in the array. Updates to local names are based on this field. If you don’t inclde object with specified languageId entry with it will be deleted. |
image optional | object | The image representing the publisher. See File Object. |
image.fileId required | string | The ID of the previously uploaded file. Required when image object is present. |
image.filename required | string | Name of the previously uploaded file with extension. |
proAffiliations optional | array of objects | A list detailing the Performance Rights Organizations (PROs) affiliations. |
proAffiliations.proId required | integer | Our internal ID linking to the mechanicalPros entity. |
proAffiliations.memberId required | string | Unique ID issued by PRO. Unique across composers and publishers for the same tenant. |
additionalContacts optional | array of objects | Array of Contact objects. Details about contacts can be found in the Adding/Editing Contacts section. |
enterpriseId optional | integer | Specifies the target enterprise ID for the composer.
|
curl -X POST 'http://api.revelator.com/content/publisher/save' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer c1234562-5f45-4ab6-b8fb-812345c3e4d4' \
-d '{
"composerId": 0,
"name": "Example Composer",
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Composer's biography",
"countryOfResidenceId": 244,
"composersLocals":[
{
"name": "Local Composer Name",
"languageId": 4
}
],
"image": {
"fileId": "00000000-0000-0000-a7d1-aaab06776049",
"filename": "photo.jpg"
},
"proAffiliations": [],
"additionalContacts": [
{
"contactId": 796718
},
{
"name": "Booking Manager",
"email": "[email protected]",
"contactRoleId": 5
}
]
}'
{
"composerId": 0,
"name": "string",
"isni": "string",
"ipiCae": "string",
"biography": "string",
"countryOfResidenceId": 0,
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-13T06:52:11.114Z"
},
"worksCount": 0,
"contributorRoleIds": [
0
],
"creationDate": "2025-06-13T06:52:11.114Z",
"publishersCount": 0,
"composersLocals": [
{
"composerId": 0,
"name": "string",
"languageId": 0
}
],
"additionalContacts": [
{
"contactId": 0,
"name": "string",
"currencyCode": "string",
"phone": "string",
"email": "string",
"address": "string",
"address2": "string",
"zipcode": "string",
"countryId": 0,
"imageId": "00000000-0000-0000-0000-000000000000",
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-13T06:52:11.114Z"
},
"isActive": true,
"labelId": 0,
"publisherId": 0,
"artistId": 0,
"city": "string",
"state": "string",
"location": "string",
"contactRoleId": 0
}
],
"proAffiliations": [
{
"proId": 0,
"memberId": "string"
}
]
}
Use the following endpoints to retrieve composer data.
/content/composer/all
Retrieves a paginated list of all composers in the account, with options for sorting and searching.
Parameter | Type | Description |
---|---|---|
pageNumber optional | integer | The page number of the results to retrieve. Default is 1 . |
pageSize optional | integer | The number of items to return per page. |
orderByProperty optional | string | The property to sort the results by. Available options:
|
orderByDescending optional | boolean | If false , orders the results in ascending order. If true or omitted, orders in descending order. |
searchText optional | string | A search term to filter composer by name. The search is case-insensitive. |
curl -X GET 'http://api.revelator.com/content/composer/all?pageNumber=1&pageSize=10&orderByProperty=name&orderByDescending=true'
{
"totalItemsCount": 0,
"pageNumber": 0,
"pageSize": 0,
"items": [
{
"composerId": 0,
"name": "string",
"isni": "string",
"ipiCae": "string",
"biography": "string",
"countryOfResidenceId": 0,
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-13T06:52:11.111Z"
},
"worksCount": 0,
"contributorRoleIds": [
0
],
"creationDate": "2025-06-13T06:52:11.111Z",
"publishersCount": 0,
"composersLocals": [
{
"composerId": 0,
"name": "string",
"languageId": 0
}
],
"additionalContacts": [
{
"contactId": 0,
"name": "string",
"currencyCode": "string",
"phone": "string",
"email": "string",
"address": "string",
"address2": "string",
"zipcode": "string",
"countryId": 0,
"imageId": "00000000-0000-0000-0000-000000000000",
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-13T06:52:11.111Z"
},
"isActive": true,
"labelId": 0,
"publisherId": 0,
"artistId": 0,
"city": "string",
"state": "string",
"location": "string",
"contactRoleId": 0
}
],
"proAffiliations": [
{
"proId": 0,
"memberId": "string"
}
]
}
],
"additionalCounters": {}
}
/content/composer/all/summary
Retrieves a summarized list of composers. Allows for searching and limiting results.
Parameter | Type | Description |
---|---|---|
query optional | string | A search term to filter composers by name. The search is case-insensitive. |
limit optional | integer | The maximum number of summary items to return. |
enterpriseId optional | integer | Used when executing from parent account to return composers from intended child account. |
curl -X GET 'http://api.revelator.com/content/composer/all/summary?query=Test&limit=1&enterpriseId=12'
[
{
"composerId": 0,
"name": "string",
"composersLocals": [
{
"composerId": 0,
"name": "string",
"languageId": 0
}
],
"imageId": "00000000-0000-0000-0000-000000000000"
}
]
/content/composer/{composerId}
Retrieves detailed information for a specific composer by its composerId
.
Parameter | Type | Description |
---|---|---|
composerId | integer | The unique ID of the composer to retrieve. |
curl -X GET 'http://api.revelator.com/content/composer/12345'
{
"composerId": 0,
"name": "string",
"isni": "string",
"ipiCae": "string",
"biography": "string",
"countryOfResidenceId": 0,
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-13T06:52:11.117Z"
},
"worksCount": 0,
"contributorRoleIds": [
0
],
"creationDate": "2025-06-13T06:52:11.117Z",
"publishersCount": 0,
"composersLocals": [
{
"composerId": 0,
"name": "string",
"languageId": 0
}
],
"additionalContacts": [
{
"contactId": 0,
"name": "string",
"currencyCode": "string",
"phone": "string",
"email": "string",
"address": "string",
"address2": "string",
"zipcode": "string",
"countryId": 0,
"imageId": "00000000-0000-0000-0000-000000000000",
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-13T06:52:11.117Z"
},
"isActive": true,
"labelId": 0,
"publisherId": 0,
"artistId": 0,
"city": "string",
"state": "string",
"location": "string",
"contactRoleId": 0
}
],
"proAffiliations": [
{
"proId": 0,
"memberId": "string"
}
]
}
A Contact represents an individual or organization (e.g., a manager, booking agent, legal representative) that can be associated with various entities in the system like artists, labels, publishers, and composers.
The labelId
, publisherId
, and artistId
parameters are optional. If provided, they will attempt to associate this contact with the specified Label, Publisher, or Artist entity respectively. Important: These associations are one-way linkages from the other entity to this contact. The labelId
, publisherId
, and artistId
fields are not stored on the Contact object itself and will remail null
when retrieving the contact.
/contact/create
Creates new contact in the account associated with the access token.
Parameter | Type | Description |
---|---|---|
contactId optional | integer | An optional ID.
|
name optional | string | Name of the contact. |
currencyCode optional | string | Currency code, can be checked using /common/lookup/currencies . |
phone optional | string | Phone number of the contact. |
email optional | string | Contact’s email address. |
address optional | string | Address of the contact (Street, company name, etc.). |
address2 optional | string | Address of the contact (Apartment, building, floor, etc.). |
zipcode optional | string | Zip code. |
countryId optional | integer | Country id, can be checked using /common/lookup/countries . |
imageId optional | string | The ID for a file that has already been uploaded to the Revelator server. See Uploading Files |
isActive optional | boolean | Indicates if contact is active, when omitted defaults to false |
labelId optional | integer | ID of existing label. Can be used to assign contact the the label. |
publisherId optional | integer | ID of existing publisher. Can be used to assign contact the the publisher. |
artistId optional | integer | ID of existing artist. Can be used to assign contact the the artist. |
city optional | string | City of the contact. |
state optional | string | State/Province of the contact. |
location optional | string | Location of the contact. |
{
"contactId": 67,
"name": "John Doe",
"currencyCode": "USD",
"phone": "+1 123-456-789",
"email": "[email protected]",
"address": "string",
"address2": "string",
"zipcode": "string",
"countryId": 244,
"imageId": "00000000-0000-0000-0000-000000000000",
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-04T07:07:54.581Z"
},
"isActive": true,
"labelId": null,
"publisherId": null,
"artistId": null,
"city": "string",
"state": "string",
"location": null
}
/contact/update
Updates existing contact in the account associated with the access token. Updating affects only properties listed below.
Rest of existing properties on contact will remain unchanged. If you want to update them you should use
/contact/create
and provide contactId
.
Parameter | Type | Description |
---|---|---|
contactId required | integer | ID for an existing contact. |
name optional | string | Name of the contact. |
phone optional | string | Phone number of the contact. |
email optional | string | Contact’s email address. |
address optional | string | Address of the contact (Street, company name, etc.). |
address2 optional | string | Address of the contact (Apartment, building, floor, etc.). |
countryId optional | integer | Country id, can be checked using /common/lookup/countries . |
{
"contactId": 67,
"name": "John Doe",
"currencyCode": "USD",
"phone": "+1 123-456-789",
"email": "[email protected]",
"address": "string",
"address2": "string",
"zipcode": "string",
"countryId": 244,
"imageId": "00000000-0000-0000-0000-000000000000",
"image": {
"fileId": "00000000-0000-0000-0000-000000000000",
"isTemp": true,
"filename": "string",
"externalUrl": "string",
"lastUpdateDate": "2025-06-04T07:07:54.581Z"
},
"isActive": true,
"labelId": null,
"publisherId": null,
"artistId": null,
"city": "string",
"state": "string",
"location": null
}
Use the following endpoints to retrieve contact data.
/contact
Retrieves a single primary contact associated with a specific Enterprise, Label, Publisher, or Artist.
null
.Parameter | Type | Description |
---|---|---|
enterpriseId optional | integer | The ID of the Enterprise whose primary contact you want to retrieve. |
labelId optional | integer | The ID of the Label whose primary contact you want to retrieve. |
publisherId optional | integer | The ID of the Publisher whose primary contact you want to retrieve. |
artistId optional | integer | The ID of the Artist whose primary contact you want to retrieve. |
/contact/{id}
Used to retrieve specific existing contact.