The Revelator API enables partners to provide Revelator functionality to artists or other collaborators directly from their own applications.
All API partners are given an API key that is required to access certain key endpoints. The API key is effectively a “client secret”.
Make sure that your API key never goes into client side code; otherwise, your clients will be able to abuse it!
The Revelator API powers the Revelator web interface. Because the external API offering is also used internally, developer’s can view API requests initiated by the web interface and use these requests as working samples. Additionally, they can view (and validate) the results of their API requests in the web interface.
Use the staging environment for all testing. Note that all accounts and content in staging are periodically overwritten with the accounts and content in production.
Service | Production | Staging |
---|---|---|
API | app-api.revelator.com | staging-api.revelator.com |
Revelator Web Interface - v2 | app.revelator.pro | staging.revelator.pro |
Revelator Web Interface - v1 | app.revelator.com | staging.revelator.com |
The above web interface URLs are generic. To access the production environment’s web interface with your white label’s custom branding, use your white label’s custom URL.
Some endpoints in the API are not performed as users and therefore do not require access tokens. For example, Signing Up New Users. These tasks always require you to provide your API key.
Retrieve an access token for a user by Authenticating.
The access token must be sent with each subsequent request as an Authorization
header with the value set to
Bearer <token>
Unless otherwise specified, the content type for the request body is application/json
.
Revelator is a highly customizable application which is relevant for many use cases.
This is the model we recommend for most use cases.
For API implementations using the child account model, tasks are performed within a user’s personal Revelator account.
Different implementation models do exist, but are not recommended in most cases. If the Child Account Model doesn’t work for you, please contact your API account manager.
Use this workflow to understand the order of API requests to use when importing an existing catalog or creating new releases. To import an existing catalog, use these requests in your ingestion script; otherwise, use this request flow in your application.
For standalone accounts, skip to step 2.
Make sure to create artists before creating tracks/releases when running an ingestion script, to avoid race conditions. Failing to create artists before creating content can cause duplicate artists to be created when multiple requests are run in quick succession.
Defining your catalog in the Revelator system is necessary whether or not you are distributing through Revelator.
This section is only relevant for White Label customers who are signing up and/or authenticating users via the API and then redirecting to their White Label user interface.
To create a custom signup and login page
Implement signup. See Signing Up New Users
Implement authentication. See Authenticating.
Implement Forgot Password sequence.
Load the account in the Revelator web interface. See Redirecting Authenticated Users to the Web Interface.
Resource Prerequisite: Only relevant for partners whose accounts are enabled for child account creation.
Use the signup
resource to create new accounts and users.
This resource is not relevant for partners who chose to execute all their API calls (for all of their users) in their partner tenant.
This resource does the following:
Creates a new child account. This new account is a sub-tenant of the partner’s parent tenant; all content in the child is visible in the parent.
Creates a new user for the child account. This user is the owner of the account.
Creates all entities required to manage content and payments for the account: a Label/Artist, Payee, and Contract.
/partner/account/signup
Parameter | Type | Description |
---|---|---|
email required | string | Unique email for the account owner |
password required | string | User’s password (minimum of 6 characters) For prompted signup: Partners using prompted signup must prompt users for this value. For unprompted signup: Partners using unprompted signup (and therefore, unprompted authentication) must still provide a value for this parameter. The user will have no knowledge of this value and the partner will have no need for it as it is not required for unprompted authentication. |
enterpriseName required | string | The name of the artist, manager or label represented by the account. This will be the name of the Artist/Label, Payee, and Contract automatically created with the account. |
statementEmailAddress optional | string | Contact email address for the account’s default payee.
|
paymentSettings optional | object | Payment settings for the account’s default payee (Required to trigger payments directly from Revelator) |
paymentSettings.providerId required | integer | ID for the payment provider:
|
paymentSettings.userId required | string | Payment provider’s ID for the user, such as their email address. |
firstname optional | string | User’s first name. |
lastname optional | string | User’s last name. |
type required | string | The type of child account to create.
|
partnerAPIKey required | string | API key provided upon onboarding. |
partnerUserId optional | string | Unique ID for the user. The ID is used for unprompted authentication. It is recommended to use the user’s existing ID in the partner application, avoiding the need for partners to save additional credential information. When unprompted authentication will never be used, this parameter is unnecessary and can be omitted. |
maxArtists optional | integer | Maximum number of artists the user can create in the account. By default, there is no artist limit. The following count as an artist towards the maximum:
|
storeAccess optional | object | Controls which stores (digital service providers / DSPs) the child account can distribute to. By default, all stores available in the partner’s parent account will be available in the child account. |
storeAccess.type required | string |
|
storeAccess.storeIds required | array of integers | The Revelator ID for each store that will be available. Look up DSP IDs using the GET /common/lookup/stores resource. Provide an access token to retrieve only the DSPs enabled for a specific account. |
Parameter | Type | Description |
---|---|---|
userId | string | Unique email for the account owner |
enterpriseId | integer | The Revelator account ID for the newly created child account. Store this ID in order to make upgrades to the account in the future. |
Code | Description |
---|---|
204 | Success |
403 | If the request would grant an account access to resources the partner doesn’t have access to. For example, setting storeIds to a store the partner doesn’t have access to. |
curl -iv -X POST "https://staging-api.revelator.com/partner/account/signup"\
-H "Accept:application/json"\
-H "Content-Type:application/json" \
-d ‘{ "email":"[email protected]",
"password":"password123",
"enterpriseName": "John Doe Band",
"firstname":"John",
"lastname": "Doe",
"type":"Launch",
"partnerApiKey":"00000000-0000-0000-0000-000000000000",
"partnerUserId":"XXXXX"
}’
{
userId: "a57cbed3-3bf1-4ada-b16c-40d0320bfc8cb",
enterpriseId: 123456
}
/partner/account/upgrade
Parameter | Type | Description |
---|---|---|
partnerAPIKey required | string | API key provided by your Revelator account manager. |
enterpriseId required | integer | The Revelator account ID for the child account you want to upgrade. This ID was returned in the signup request which created the account. |
newType optional | string | The type of child account. By default, this value will not be updated for the account.
|
newMaxArtists optional | integer | Maximum number of artists the user can create in the account. By default, this value will not be updated for the account. The following count as an artist towards the maximum:
|
newStoreAccess optional | object | Controls which digital service providers (DSPs) the child account can distribute to. By default, this value will not be updated for the account. |
newStoreAccess.type required | string |
|
newStoreAccess.storeIds required | array of integers | The Revelator ID for each store that will be available. only specify dsps which are enabled in your parent account. Look up DSP IDs using the GET /common/lookup/stores resource. Provide an access token to retrieve only the DSPs enabled for a specific account. |
No Body |
---|
Code | Description |
---|---|
204 | Success |
403 | If the request would grant an account access to resources the partner doesn’t have access to. For example, setting storeIds to a store the partner doesn’t have access to. |
409 | If the request would prevent an account from using resources it’s already using. For example, setting newMaxArtists to 1 for an account that has 5 artists. |
The Revelator API provides two authentication resources. Both resources return access tokens when the parameters provided in the requests are valid.
Which method to employ will depend on your use case; using both methods simultaneously will fail.
/partner/account/login
There are two ways to generate an accessToken.
partnerUserId
.Parameter | Type | Description |
---|---|---|
partnerUserId unprompted | string | partnerUserId value assigned to the user in the signup resource. See Signing Up New Users. |
partnerApiKey required | string | API key provided by your Revelator account manager. Contact your account manager for assistance. |
username prompted | string | user’s email |
password prompted | string | user’s password |
Note: When partnerUserId
, username and password are all entered, login will fail. Either use prompted (username and password) or unprompted (partnerUserId
).
curl -X POST 'https://staging-api.revelator.com/partner/account/login'\
-H 'Content-Type: application/json'\
-H 'Accept: application/json'\
-d '{ "partnerUserId": "user123",
"partnerApiKey":"00000000-0000-0000-0000-000000000000" }'
This feature is still in beta. If you encounter any issues please reach out to us.
An invitation is when a current user invites another member to their account using the Revelator Pro UI.
You will need to contact us to configure the email template and include a new invite link that supports this behavior (Step 1 of the Workflow).
The invited user would be created and get an email containing a link to the custom login page. This email also includes the user email (which acts as a username) and a temporary password. (the password is generated by Revelator automatically and should be changed)
Example link: https://examplelabel.com/invitation?email={invitedUserEmail}&code={invitationCode}
The user would land on your custom login page. At this point its crucial to update the partnerUserId
to a value matching your internal system. (The logic behind this parameter is the same as in the Signing up new users section)
Make sure you make the API calls on the backend to not expose your Partner API Key
GET /partner/invitation
to retrieve the automatically assigned partnerUserId
POST /partner/users
to update the partnerUserId
/partner/invitation
Retrieves the information about a user invitation.
As this is an administrative endpoint. Provide your partnerApiKey
as a Bearer token.
Query Param | Type | Description |
---|---|---|
email required | string | User email. |
code required | string | Invitation code |
Parameter | Type | Description |
---|---|---|
partnerUserId | string | User partner ID |
email | string | User email |
invitedEnterpriseId | integer | The enterpriseId of the enterprise the user was invited to |
passwordCanBeReset | boolean | Can you reset the user password |
enterprises | array of objects | All enterprises the user has access to. |
enterprises.id | integer | Enterprise ID |
enterprises.name | string | Enterprise name |
enterprises.accessType | string | What kind of access the user has to this enterprise |
/partner/users
Update the user partnerUserId
and/or password
As this is an administrative endpoint. Provide your partnerApiKey
as a Bearer token.
Parameter | Type | Description |
---|---|---|
partnerUserId required | string | Current partner user ID |
newPartnerUserId optional | string | New partner user ID |
newPassword optional | string | New password |
This section is only relevant for API partners without their own user database (prompted implementations).
8 characters
longlowercase
letteruppercase
letter!@#$%^&*
0-9
POST /account/forgotpassword
endpoint./account/forgotpassword
Initiates the forgotten password flow.
This endpoint can only be used if you have Revelator’s transactional email service configured for your account.
For security reasons, the endpoint will always return an HTTP code of 200, regardless of whether the email exists in our system.
Parameter | Type | Description |
---|---|---|
email required | string | Unique email of the account owner |
enterpriseId optional | string | Revelatorenterprise ID
|
redirect optional | string | URL to load after flow completes |
This section is only relevant for White Label customers who are signing up and/or authenticating users via the API and then redirecting to their White Label user interface.
Once you have prompted the user for their credentials and confirmed the credentials are valid by authenticating the user, you can redirect the user to their account in the Revelator web interface.
To load the user’s account, you must provide the access token retrieved upon authentication in the appropriate URL.
Production | https://<custom_v2_url>/authorize?token=<access_token> |
Staging | https://staging.revelator.pro/authorize?token=<access_token> |
Production | https://<custom_v1_url>/Home/IndexWithToken?serverToken=<access_token> |
Staging | https://staging.revelator.com/Home/IndexWithToken?serverToken=<access_token> |
Deep Linking in v1. For deep linking, include the query string parameter redirectToRouteOnLoad
, and set it equal to the route. For example, to load the assets page: https://staging.revelator.com/Home/IndexWithToken?serverToken=<access_token>&redirectToRouteOnLoad=/content/music/albums
API partners using the Child Account model will likely want to run API requests in individual child accounts. In most cases, this should be accomplished by authenticating the child account user and providing that access token in the request. The account associated with the token will always be the default account for all API requests.
Parent account users, in addition to having permissions in the parent account, have permissions in their child accounts. If you are using the API to create an administrator interface, you may want to allow authenticated parent account users to perform tasks in child accounts.
enterpriseId
in the URL path will always fail.To run an API request in a child account with a parent account user’s access token
<base_url>/api/enterprises/{enterpriseid}/<documented_path>
Example. To create an artist in child account 12345, use the URL <base_url>/api/enterprises/12345/artists
/enterprise/clients/{enterpriseId}
Retrieves the information about a client
Field | Type | Description |
---|---|---|
enterpriseId | integer | The unique identifier of the enterprise |
payeeId | integer | A unique payee ID for the default payee associated with the client |
name | string | The name of the client |
creationDate | string | The date when the client was created |
infringementTrustScore | integer | The trust score associated with the client |
/enterprise/clients/all
Retrieves the information about all clients
Parameter | Type | Description |
---|---|---|
pageNumber optional | integer | The page number of the results. Default is 1. |
pageSize optional | integer | The number of items per page. Default is a system-defined value. |
query optional | string | A query string for filtering clients based on specific criteria. |
Field | Type | Description |
---|---|---|
totalItemsCount | integer | The total number of client items available across all pages. |
pageNumber | integer | The current page number. |
pageSize | integer | The number of items per page |
items | array of objects | An array of client objects |
items.enterpriseId | integer | The unique identifier of the enterprise |
items.payeeId | integer | A unique payee ID for the default payee associated with the client |
items.name | string | The name of the client |
items.creationDate | string | The date when the client was created |
items.infringementTrustScore | integer | The trust score associated with the client |
additionalCounters | object | An object containing additional counters |
additionalCounters.unfilteredClientsTotal | integer | The total number of clients before any filtering is applied |
/api/enterprises/{enterpriseId}/terminate
Terminate the account, reject all releases in the inspection queue, and take down all live catalog
Revelator API implementations can use the following common resources to retrieve information about various entities. These are usually used obdain Enum/ID values to be used in other API requests.
Some endpoints require an access_token
and provide results specific to the account.
/common/lookup/currencies
Retrieves a list of all supported currencies.
Field | Type | Description |
---|---|---|
code | string | Currency code |
symbol | string | Symbol for the currency |
name | string | Name of the currency |
countryCode | string | Country code associated with the currency (empty string if not applicable) |
/common/lookup/countries
Retrieves a list of all supported countries.
Field | Type | Description |
---|---|---|
countryId | number | Country ID |
isO2Code | string | Two letter country code |
code | string | Full country code |
name | string | Name of the country |
/common/lookup/timezoneIds
Retrieves a list of all supported timezones.
Field | Type | Description |
---|---|---|
timezoneId | number | Timezone ID |
text | string | Textual representation of the timezone |
/common/lookup/musicstyles
Retrieves a list of all supported music styles.
Field | Type | Description |
---|---|---|
musicStyleId | number | Music style ID |
name | string | Name of the music style |
parentId | number | Parent music style ID (null if no parent) |
order | integer | Numeric order of the music style within the Revelator system |
/common/lookup/pricetiers
Retrieves a list of all supported price tiers.
Field | Type | Description |
---|---|---|
priceTierId | number | Price tier ID |
name | string | Name of the price tier |
code | string | Code of the price tier |
isForRelease | boolean | Whether the price tier is for releases |
isForTrack | boolean | Whether the price tier is for tracks |
price | float | Price of the price tier |
distributionStoreIds | integer | Store ID for the DSP that the price tier is available for |
order | integer | Numeric order of the price tier within the Revelator system |
/common/lookup/languages
Retrieves a list of all supported languages.
Field | Type | Description |
---|---|---|
languageId | number | Language ID |
name | string | Name of the language |
languageCode | string | Short language code |
isValidMetadataLanguage | boolean | Whether the language is valid for metadata |
/common/lookup/stores
This endpoint requires an access token.
Retrieves a list of all supported DSPs for the account.
Field | Type | Description |
---|---|---|
distributorStoreId | number | Distributor store ID |
name | string | Name of the distributor store |
isActive | boolean | Whether the distributor store is active for distribution |
shortDescription | string | Short description of the distributor store (null if no description is available) |
display | boolean | Whether the distributor store is displayed in the UI |
supportRingtones | boolean | Whether the distributor store supports ringtones |
supportVideos | boolean | Whether the distributor store supports videos |
isNew | boolean | Whether the distributor store is new (null if not new) |
deliveryLeadTimeDays | integer | Lead time for delivery in days (null if not applicable) |
takedownLeadTimeDays | integer | Lead time for takedown in days (null if not applicable) |
/common/lookup/contributorRoles
Retrieves a list of all supported contributor roles.
Field | Type | Description |
---|---|---|
roleId | number | Contributor role ID |
name | string | Name of the contributor role |
priority | integer | Priority of the contributor role |
/common/lookup/MonetizationPolicies
This endpoint requires an access token.
Retrieves a list of all monetization policies for the account.
Field | Type | Description |
---|---|---|
distributorStoreId | number | ID of a distributor store associated with the monetization policy |
policyId | number | Monetization policy ID |
name | string | Name of the monetization policy |
orderNum | integer | Numeric order of the monetization policy within the Revelator system |
/common/lookup/trackProperties
Retrieves a list of all track properties for the account.
Field | Type | Description |
---|---|---|
items | array of objects | A parent field containing all track properties |
items.trackPropertyId | number | Track property ID |
items.name | string | Name of the track property |