Complete the following workflow to distribute a release.
Revelator’s distribution services include both supply chain and agreements with the stores (DSPs). If you would like to use your own distribution agreements for some or all of the stores you distribute to, you must configure this in your parent account.
Validate the release’s metadata. See Validating Releases.
Fix any validation errors by editing the release. See Adding/Editing Releases.
severity of 1 must be resolved before a release can be distributed.severity of 2 indicate a probable issue, but do not prevent distribution.(Optional) Set distribution options. See Setting Distribution Options.
Add the release to the distribution queue. See Adding Releases to the Distribution Queue.
Inspect and approve the release’s metadata. See Inspecting and Approving Releases.
Performed in the revelator user interface.
(Optional) Retrieve a release’s distribution status. See Retrieving Distribution Status.
Use the validate resource to run an automated validation of a release’s metadata. The validation process checks a
release for various errors, some of which indicate there may be a problem and others which must be corrected before
distribution can proceed.
severity of 1 must be resolved before a release can be distributed.severity of 2 indicate a probable issue, but do not prevent distribution.You are responsible for providing accurate and acceptable release metadata. Failing to correct inappropriate metadata may cause stores to reject your releases and can ultimately result in the suspension of your distribution privileges.
/distribution/release/{releaseId}/validate| Parameter | Description |
|---|---|
releaseId | The ID of the release to validate. This ID was returned by the /content/release/save request which created the release. |
This request returns no body when the validation completes successfully.
| Parameter | Type | Description |
|---|---|---|
validationErrors | array of objects | A list of all validation errors detected for the release. |
validationErrors.objectId | integer | The ID of the object that caused the error. |
validationErrors.objectType | string | The type of the object (e.g., Release). |
validationErrors.errorMessage | string | A human-readable message describing the issue. |
validationErrors.severity | integer | The severity level of the issue (1 or 2). |
Use the /content/release/retail/save resource to set distribution options for a release, such as specifying a date the
release should go live.
You cannot change distribution options for a release that is currently in distribution queue.
/content/release/retail/save| Parameter | Type | Description |
|---|---|---|
releaseId required | integer | The ID of the release to set distribution options for. This ID was returned in the /content/release/save request which created the release. |
saleStartDate optional | string | The date the release should go live, in the ISO format YYYY-MM-DD.
|
saleStartTime optional | string | The time the release should go live, in the format “hh:mm”.
|
saleStartTimezoneId optional | integer | The timezone for the saleStartTime. The release will go live at the same instant everywhere.
|
saleStartTimezone optional | integer | The timezone offset for the saleStartTime. The release will go live at the same instant everywhere.
saleStartTimezoneId instead. |
salePreOrderDate optional | string | The date the preorder should become available, in the ISO format YYYY-MM-DD
|
monetizationPolicyIds required | array of integers | Release-level monetization policy ID(s) for YouTube Content ID, Facebook Rights Manager and TikTok. Array should include only one policy for each store, or none if you are not distributing to that store. See Monetization Policies for more information and limitations. |
trackMonetizationPolicyIds optional | array of objects | Track-level monetization policy ID(s) for YouTube Content ID, Facebook Rights Manager and TikTok. Array should include only one policy for each store, or none if you are not distributing to that store. Only TikTok currently supports differing policies per track; for YouTube Content ID and Facebook Rights Manager the policy must be the same for all tracks. See Monetization Policies for more information and limitations. |
trackMonetizationPolicyIds.trackId required | integer | Track ID |
trackMonetizationPolicyIds.policyId required | integer | Policy ID |
countriesIncluded optional | array of objects | A list of Country objects (countryId only) defining the countries where the release will be distributed. If omitted, the release will be distributed to all available countries. |
countriesIncluded.countryId required | integer | The Country ID to include. |
countriesExcluded optional | array of objects | A list of Country objects (countryId only) defining the countries where the release will not be distributed. Important: If this array is provided and not empty, countriesIncluded will be ignored. |
countriesExcluded.countryId required | integer | The Country ID to exclude. |
priceTierIds optional | array of integers | An array of priceTierId values to apply to the release/tracks for distribution. This specifies the exact price tiers the release/tracks should be available at.
|
Monetization policies are used to instruct DSPs with user generated content (UGC) what to do in the event that part, or whole, of your sound recording is used in content (a video, a post, etc.) on their network.
Monetization Policy IDs are unique to each account. Once monetization is enabled for your account, you can retrieve your
monetization policy IDs by calling /common/lookup/MonetizationPolicies (with an access token).
In addition to setting the monetization policy for a store during
Setting Distribution Options, you must include the same store in the
addtoqueue request. See
Adding Releases to the Distribution Queue.
If the same policy applies to all tracks in a release, you can achieve the same result by:
monetizationPolicyIds on a release level (recommended)trackMonetizationPolicyIds on a track levelIf a different policy applies to different tracks in a release (currently only supported for TikTok):
trackMonetizationPolicyIds on a track level and omit any policyId for that store from the
monetizationPolicyIds on a release levelMonetization policy limitations
You can use these descriptions to better understand the monetization policies available to you.
| Policy Name | Relevant Store | Description |
|---|---|---|
| Monetize in all countries | YT CID (307) | Receive royalties when tracks are used/played |
| Track in all countries | YT CID (307) | Receive analytics for when tracks are used/played |
| Custom Policy | YT CID (307) | Please contact support to discuss |
| Claim Ad earnings | FRM (310) | Receive royalties when tracks are used/played |
| Block | FRM (310) | Prevent videos with your tracks from being used/played. |
| Monitor | FRM (310) | Receive analytics for when tracks are used/played |
| NoTikTokScanning | TT (319) | Provide your sound recording to TikTok’s audio library for inclusion in videos, but do not enable scanning for videos in which it is embedded Use this when your track does not meet the suitability requirements |
| Monetize | TT (319) | Scan for videos where your sound recording is being used and generate royalties from these claims |
| BlockAccess | TT (319) | Scan for videos where your sound recording is being used and block them |
Use the addtoqueue resource to specify which DSPs (stores) a release should be distributed to and add it to the
distribution queue.
In addition to standard distribution, Revelator supports monetization policies for your assets on platforms such as YouTube Content ID and Facebook Rights Manager. These policies determine how your content behaves when used by others - for example, whether it;s tracked, blocked, or monetized.
Before distributing to YouTube Content ID, Facebook Rights Manager or TikTok, you must configure an appropriate monetization policy for each DSP. See Setting Distribution Options.
To enable support for these platforms, please contact your Revelator account manager.
When distributing a release to YouTube Content ID, you must also distribute it to YouTube Music. Failing to do so will result in a suspension of your YouTube distribution privileges.
Additionally:
It is acceptable to distribute to YouTube Music without distributing to YouTube Content ID.
/distribution/release/addtoqueue| Parameter | Description |
|---|---|
releaseId required | The ID of the release to add to the queue. This ID was returned in the /content/release/save request which created the release. |
Provide an array of Revelator store (DSP) IDs representing where the release should be distributed.
Look up valid DSP IDs using the GET /common/lookup/stores resource. Only DSPs that are enabled for your account
will appear in the lookup results.
If you provide a DSP ID that is not enabled for your account or does not exist, the system will return the
following error:"Sequence contains no matching element"
This usually means the provided DSP ID is invalid for your tenant. Always confirm the IDs using the lookup endpoint before submitting the request.
isActive == false will fail.Releases in the distribution queue will not be sent to stores until a user of your parent account inspects and approves the releases in the Revelator web interface. This involves identifying fraudulent content and metadata style guide violations and preventing releases with these issues from being distributed.
You are responsible for providing acceptable release metadata. Failing to correct inappropriate metadata will result in stores rejecting your releases and will ultimately result in the suspension of your distribution privileges.

Use the GET /distribution/store/all endpoint to retrieve distribution statuses across DSPs (stores).
This resource’s behavior changes based on whether you include the releaseId and/or status parameters.
releaseId and no status provided - Returns only counts of releases per store, grouped by store ID.
Useful for overall monitoring or dashboard summaries.status provided, but no releaseId - Returns counts of releases per store in that specific status. For
example, you can quickly see how many releases are currently “Delivered” (status = 50) for each DSP.releaseId provided - Returns detailed statuses for that specific release across all relevant DSPs. This is
the only mode that includes individual store-level status data for the release.To list all releases currently in a given distribution status, use the distributionStatus filter with the
GET /content/release/all endpoint.
If a distribution status indicates an error, first review the returned message and attempt to resolve the issue using the provided details. Some errors may resolve automatically after internal retries, while others may require metadata corrections and redistribution.
If the issue persists, please contact Revelator support and include your releaseId(s) or UPC(s) for investigation.
/distribution/store/all| Parameter | Description |
|---|---|
releaseId optional | The ID of the release to retrieve detailed distribution information for. If omitted, only count data per store will be returned. |
status optional | The status of the releases for which to get distribution information. Please see the Query String Text in Distribution Statuses. Including this parameter narrows the response to only this status. |
Each object in the items array represents the distribution record for a single release-store pair when releaseId is
provided.
releaseId - The ID of the release.distributorStoreId - The DSP (store) identifier.releaseStatus.status and releaseStatus.statusText - Numeric and textual indicators of the current status.When calling this endpoint without releaseId, the response will always be aggregated counts per store,
optionally filtered by status. To retrieve actual lists of releases in a specific status (for example, all releases
currently marked as 50 — Delivered), use the distributionStatus filter on
GET /content/release/all.
The statuses below are ordered by their general progression through the distribution and takedown workflow.
| Status | Status Text | Query String Text | Additonal Information |
|---|---|---|---|
| -13 | Rejected by Inspector | RejectedByInspector | Metadata for the release was rejected (in parent account). |
| -11 | Parked/Hidden | Hidden | Release hidden from the metadata inspection queue (put aside to inspect later). |
| -10 | Pending Approval | PendingApproval | Pending metadata inspection (before distribution is approved in the parent account). |
| -21 | Failed Owner Inspection | RejectedDealInspection | The final quality inspection by the Revelator failed. The release is returned to the parent account’s inspection queue, where the inspector must review the failure reason and take the appropriate corrective action (edit, reject). Important Note: This status is only relevant for releases distributed using Revelator deal. |
| -20 | Pending Owner Inspection | PendingDealInspection | This status indicates the release is pending final quality inspection by the Revelator. This inspection is triggered when specific conditions are met (e.g., artist matches a deny list, audio matches ACR results). From a child account perspective, this release is still considered Pending Approval (-10).Important Note: This status is only relevant for releases distributed using Revelator deal. |
| 0 | Pending | Pending | Ready for Distribution (Start state for Distribution). |
| 4 | Waiting for Download Assets | WaitingForDownloadAssets | Waiting to download files. |
| 5 | Downloading Assets | DownloadAssets | Downloading files. |
| 6 | Downloading of Assets Failed | DownloadAssetsFailed | Downloading a file failed. |
| 8 | Waiting for Audio Encoding | PendingTransformation | Waiting for audio encoding. |
| 10 | Encoding Audio | TransformationInProgress | Encoding audio. |
| 11 | Encoding Audio Failed | TransformationFailed | Encoding audio failed. Re-queueing the release may fix the problem; if not, please contact customer support. |
| 20 | Waiting for Validation | WaitingForValidation | Waiting for metadata validation. |
| 21 | Validation Failed | ValidationFailed | Release has failed the DSP’s unique metadata validation. See the errorMessage for more information.
|
| 30 | Waiting for Package Creation | WaitingForPackageCreation | Waiting for package creation. |
| 31 | Creating Package | CreatingPackage | Creating the package. |
| 32 | Package Creation Failed | CreatingPackageFailed | The majority of the time, this indicates a temporary error that will resolve itself; this is due to the system optimizing for speed of delivery vs. 100% delivery on the first try. See the errorMessage for more information.
|
| 45 | Triage Pending | WaitingForRevelatorNetcoreDistributionDelivery | Triage Pending. |
| 46 | Triage in Progress | WaitingForIdentificationByNetcore | Triage in Progress. |
| 40 | Waiting for Upload | WaitingForUpload | Waiting for upload. |
| 41 | Uploading Package | Uploading | Uploading the package. |
| 42 | Package Upload Failed | UploadingFailed | Uploading the package failed. Re-queueing the release may fix the problem; if not, please contact customer support. |
| 50 | Delivered to DSP | Delivered | Uploaded/delivered to the DSP. |
| 60 | On Store | OnStore | DSP has provided a link. Confirmed as available on the DSP. Currently, only 4 DSPs support an update to this status. The rest will remain in status 50. |
| 70 | Takedown Pending | TakedownWaitingForPackageCreation | Takedown pending. |
| 71 | Takedown Package Creation in Progress | TakedownCreatingPackage | Takedown package creation in progress. |
| 75 | Waiting for Enqueue | TakedownWaitingForRevelatorNetcore | Waiting for enqueue. |
| 76 | Takedown Enqueued | TakedownEnqueuedByRevelatorNetcore | Takedown enqueued. Waiting for upload. |
| 72 | Takedown Uploading | TakedownUploading | Takedown upload in progress. |
| 77 | Takedown Failed | TakedownError | Taking down the release failed. Re-queueing the takedown may fix the problem; if not, please contact customer support. |
| 78 | Takedown Delivered | TakedownCompleted | Takedown delivered. |
| 79 | Removed from Store | RemovedFromStore | Takedown confirmed by DSP. |
| 100 | System Error | ProcessError | Processing error. |
In many cases, it is possible to update a release without a full takedown. Stores do not require a full takedown as long as the following are all true:
If any of the above need to be changed, you must issue a takedown for the release and create the release as new.
/distribution/release/takedownTakedown a release from one or more stores.
| Parameter | Type | Description |
|---|---|---|
releaseId required | integer | The ID of the release to takedown. |
An array of Revelator store IDs to takedown. Look up DSP IDs using GET /common/lookup/stores (with an access token) |