Composers
A composer (also referred to as a writer) is a metadata entity representing an author of a musical work — a songwriter, lyricist, arranger, or similar contributor. Composers are the master identity referenced from tracks. The per-track credit — publishing type, contributor role, ownership share, and any associated publisher — is captured on the track itself, not on the composer record.
IPI/CAE Number
The ipiCae field holds the composer’s IPI (Interested Parties Information) or CAE (Composer, Author, and Publisher)
number. It is used to identify the composer 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 composer is affiliated with. Each entry pairs a proId (Revelator’s
internal identifier for the PRO) with a memberId (the unique ID issued to the composer 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
composer with a memberId that is already in use by another publisher or composer in the organization returns a
validation error.
Archiving Composers
A composer can only be archived when all of the following conditions are met:
- The composer is not currently archived.
- The composer is not assigned to any active (unarchived) release.
- The composer is not assigned to any active (unarchived) track.
Composers that have been archived for more than 6 months can no longer be unarchived.
Create Composer
/catalog/v1/composers Creates a new composer.
Request Body *
object name * string languageAndScriptCode string en-Latn). Available values can be retrieved from GET /common/lookup/languageAndScriptCodes on the V1.0 API. isni string ipiCae string biography string countryOfResidenceId integer logoImageId string locals ComposersLocalsItemModel[] name * string phoneticName string languageAndScriptCode string en-Latn). Retrieved from GET /common/lookup/languageAndScriptCodes on the V1.0 API. languageId * integer 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 proAffiliations ProAffiliationItemModel[] proId integer memberId string enterpriseId integer Responses
object composerId integer name string languageAndScriptCode string | null isni string | null ipiCae string | null biography string | null countryOfResidenceId integer | null logoImageId string | null roles ComposerRoleItemModel[] | null roleId integer name string | null enterpriseId integer | null tenantId integer creationDate string (date-time) createdBy string lastUpdateDate string (date-time) | null lastUpdatedBy string | null archivedAt string (date-time) | null null if the composer is active. archivedBy string | null null if the composer is active. locals ComposersLocalsItemModel[] | null name * string phoneticName string | null languageAndScriptCode string | null languageId * integer 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 proAffiliations ProAffiliationItemModel[] | null proId integer memberId string /catalog/v1/composers curl -X POST "https://platform.revelator.com/catalog/v1/composers" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Composer",
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"locals": [
{ "name": "Local Composer Name", "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
],
"enterpriseId": null
}' curl -X POST "https://platform.revelator.com/catalog/v1/composers" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Composer",
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"locals": [
{ "name": "Local Composer Name", "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
],
"enterpriseId": null
}' Example response 200
{
"composerId": 6601,
"name": "Example Composer",
"languageAndScriptCode": null,
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"roles": [],
"locals": [
{ "name": "Local Composer Name", "phoneticName": null, "languageAndScriptCode": null, "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
],
"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
} {
"composerId": 6601,
"name": "Example Composer",
"languageAndScriptCode": null,
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"roles": [],
"locals": [
{ "name": "Local Composer Name", "phoneticName": null, "languageAndScriptCode": null, "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
],
"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 Composer
/catalog/v1/composers/{composerId} Retrieves a composer by its ID.
Path Parameters
| Parameter | Description |
|---|---|
composerId * integer | The ID of the composer. |
Responses
object composerId integer name string languageAndScriptCode string | null isni string | null ipiCae string | null biography string | null countryOfResidenceId integer | null logoImageId string | null roles ComposerRoleItemModel[] | null roleId integer name string | null enterpriseId integer | null tenantId integer creationDate string (date-time) createdBy string lastUpdateDate string (date-time) | null lastUpdatedBy string | null archivedAt string (date-time) | null null if the composer is active. archivedBy string | null null if the composer is active. locals ComposersLocalsItemModel[] | null name * string phoneticName string | null languageAndScriptCode string | null languageId * integer 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 proAffiliations ProAffiliationItemModel[] | null proId integer memberId string /catalog/v1/composers/{composerId} curl -X GET "https://platform.revelator.com/catalog/v1/composers/6601" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/composers/6601" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" Example response 200
{
"composerId": 6601,
"name": "Example Composer",
"languageAndScriptCode": null,
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"roles": [
{ "roleId": 2, "name": "Composer" }
],
"locals": [
{ "name": "Local Composer Name", "phoneticName": null, "languageAndScriptCode": null, "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
],
"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
} {
"composerId": 6601,
"name": "Example Composer",
"languageAndScriptCode": null,
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"roles": [
{ "roleId": 2, "name": "Composer" }
],
"locals": [
{ "name": "Local Composer Name", "phoneticName": null, "languageAndScriptCode": null, "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
],
"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 Composers
/catalog/v1/composers Returns a paginated list of composers based on filters and sorting options.
Query Parameters
| Parameter | Description |
|---|---|
archived boolean | Filter by archive state ( |
archivedDateFrom string (date-time) | Include composers archived on or after this UTC date-time. |
archivedDateTo string (date-time) | Include composers archived on or before this UTC date-time. |
creationDateFrom string (date-time) | Include composers created on or after this UTC date-time. |
creationDateTo string (date-time) | Include composers created on or before this UTC date-time. |
lastUpdateDateFrom string (date-time) | Include composers updated on or after this UTC date-time. |
lastUpdateDateTo string (date-time) | Include composers updated on or before this UTC date-time. |
searchText string | Free-text search applied to composer name. |
publisherIds integer[] | Filter to composers with at least one track credit associated with the given publisher IDs. 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. Maximum 204. |
orderByProperty string | Property name used for sorting. Examples: composerId, name, creationDate |
orderByDescending boolean | Set to true for descending order, false for ascending. |
Responses
object pageNumber integer pageSize integer totalItemsCount integer totalPagesCount number items ComposerListModel[] composerId integer tenantId integer enterpriseId integer name string | null logoImageId string | null isni string | null ipiCae string | null countryOfResidenceId integer | null creationDate string (date-time) createdBy string | null lastUpdateDate string (date-time) | null lastUpdatedBy string | null archivedAt string (date-time) | null null if the composer is active. archivedBy string | null null if the composer is active. roles ComposerRoleItemModel[] | null roleId integer name string | null /catalog/v1/composers curl -X GET "https://platform.revelator.com/catalog/v1/composers?pageNumber=1&pageSize=20&orderByProperty=name&orderByDescending=false" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" curl -X GET "https://platform.revelator.com/catalog/v1/composers?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": [
{
"composerId": 6601,
"tenantId": 2001,
"enterpriseId": 3001,
"name": "Example Composer",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"isni": "123456789098765X",
"ipiCae": "00000001111",
"countryOfResidenceId": 244,
"roles": [
{ "roleId": 2, "name": "Composer" }
],
"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
}
]
} {
"pageNumber": 1,
"pageSize": 20,
"totalItemsCount": 1,
"totalPagesCount": 1,
"items": [
{
"composerId": 6601,
"tenantId": 2001,
"enterpriseId": 3001,
"name": "Example Composer",
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"isni": "123456789098765X",
"ipiCae": "00000001111",
"countryOfResidenceId": 244,
"roles": [
{ "roleId": 2, "name": "Composer" }
],
"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
}
]
} Update Composer
/catalog/v1/composers/{composerId} Updates an existing composer by its ID.
Path Parameters
| Parameter | Description |
|---|---|
composerId * integer | The ID of the composer to update. |
Request Body *
object name string languageAndScriptCode string en-Latn). Available values can be retrieved from GET /common/lookup/languageAndScriptCodes on the V1.0 API. isni string ipiCae string biography string countryOfResidenceId integer logoImageId string locals ComposersLocalsItemModel[] name * string phoneticName string languageAndScriptCode string en-Latn). Retrieved from GET /common/lookup/languageAndScriptCodes on the V1.0 API. languageId * integer 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 proAffiliations ProAffiliationItemModel[] proId integer memberId string Responses
object composerId integer name string languageAndScriptCode string | null isni string | null ipiCae string | null biography string | null countryOfResidenceId integer | null logoImageId string | null roles ComposerRoleItemModel[] | null roleId integer name string | null enterpriseId integer | null tenantId integer creationDate string (date-time) createdBy string lastUpdateDate string (date-time) | null lastUpdatedBy string | null archivedAt string (date-time) | null null if the composer is active. archivedBy string | null null if the composer is active. locals ComposersLocalsItemModel[] | null name * string phoneticName string | null languageAndScriptCode string | null languageId * integer 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 proAffiliations ProAffiliationItemModel[] | null proId integer memberId string /catalog/v1/composers/{composerId} curl -X PUT "https://platform.revelator.com/catalog/v1/composers/6601" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Composer",
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles. Now signed to a major publisher.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"locals": [
{ "name": "Local Composer Name", "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
]
}' curl -X PUT "https://platform.revelator.com/catalog/v1/composers/6601" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Composer",
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles. Now signed to a major publisher.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"locals": [
{ "name": "Local Composer Name", "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
]
}' Example response 200
{
"composerId": 6601,
"name": "Example Composer",
"languageAndScriptCode": null,
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles. Now signed to a major publisher.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"roles": [
{ "roleId": 2, "name": "Composer" }
],
"locals": [
{ "name": "Local Composer Name", "phoneticName": null, "languageAndScriptCode": null, "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
],
"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
} {
"composerId": 6601,
"name": "Example Composer",
"languageAndScriptCode": null,
"isni": "123456789098765X",
"ipiCae": "00000001111",
"biography": "Songwriter and producer based in Los Angeles. Now signed to a major publisher.",
"countryOfResidenceId": 244,
"logoImageId": "a1b2c3d4-0000-4e5f-a678-426614174000",
"roles": [
{ "roleId": 2, "name": "Composer" }
],
"locals": [
{ "name": "Local Composer Name", "phoneticName": null, "languageAndScriptCode": null, "languageId": 4 }
],
"proAffiliations": [
{ "proId": 1, "memberId": "PRO-4471120" }
],
"additionalContacts": [
{ "name": "Booking Manager", "email": "[email protected]", "contactRoleId": 5 }
],
"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 Composers
/catalog/v1/composers/archive Archives composers in batch by composer IDs.
Request Body *
object composerIds * 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/composers/archive curl -X POST "https://platform.revelator.com/catalog/v1/composers/archive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"composerIds": [6601, 6602]
}' curl -X POST "https://platform.revelator.com/catalog/v1/composers/archive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"composerIds": [6601, 6602]
}' Example response 200
{
"results": [
{
"id": 6601,
"succeeded": true,
"errors": null
},
{
"id": 6602,
"succeeded": true,
"errors": null
}
]
} {
"results": [
{
"id": 6601,
"succeeded": true,
"errors": null
},
{
"id": 6602,
"succeeded": true,
"errors": null
}
]
} Unarchive Composers
/catalog/v1/composers/unarchive Unarchives composers in batch by composer IDs. Composers archived for more than 6 months can no longer be unarchived.
Request Body *
object composerIds * 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/composers/unarchive curl -X POST "https://platform.revelator.com/catalog/v1/composers/unarchive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"composerIds": [6601, 6602]
}' curl -X POST "https://platform.revelator.com/catalog/v1/composers/unarchive" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"composerIds": [6601, 6602]
}' Example response 200
{
"results": [
{
"id": 6601,
"succeeded": true,
"errors": null
},
{
"id": 6602,
"succeeded": true,
"errors": null
}
]
} {
"results": [
{
"id": 6601,
"succeeded": true,
"errors": null
},
{
"id": 6602,
"succeeded": true,
"errors": null
}
]
}