Rights

Rights

Creating/Editing Contracts

Use the /contract/save resource to add or edit contracts.

  • This endpoint requires a token for the parent account.

    This endpoint can be used to trigger the creation (or modification) of a contract in the parent account as the result of a user action. General creation of contracts is not an activity appropriate for child account users.

  • A default contract and payee are automatically created upon account creation; the contract automatically inherits all assets in the account (that are not explicitly covered by a more specific contract), and the default payee is named as the only payee.

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.

Contract Types

POST /accounting/contract/save

Request Body

ParameterTypeDescription
name
required
stringThe name of the contract.
contractId
optional
integerThe ID of an existing contract to edit.
  • When set to 0, creates a new contract. (Default)
  • Inline with the general behavior of this API, patching is not supported. Existing values for omitted parameters will be deleted or overwritten.
startDate
required
stringThe date from which the contract is effective, in the ISO format YYYY-MM-DD.
This date is for reference only and is not enforced when calculating royalties.
expirationDate
required
stringThe date the contract becomes ineffective, in the ISO format YYYY-MM-DD. If the contract is “in perpetuity”, please specify 2099-12-31.
This date is for reference only and is not enforced when calculating royalties.
isActive
optional
booleanIndicates whether the contract is active. Inactive contracts are not used for royalty calculations. Defaults to false when omitted.
contractPayees
required
array of objectsAn array of objects, where each object represents a payee and details their royalty information. The sum of sharePercentage for all non-comission payees in the contract must equal 100.
See Contract Payee Object
contractLicensors
required
array including one object*An array where the single object represents a licensor (artist or label) and provides information for which of the licensor’s assets should be subject to the contract.
*Although contractLicensors is an array, it should contain only one object. For additional licensors, please create a separate contract.
See Contract Licensor Object
contractReleases
required
array of objectsAn array of objects specifying releases explicitly included in the contract. Each object must contain a releaseId: {"releaseId": <integer>}.
    Behavior based on includeFutureAssets:
  • If includeFutureAssets is true (all future assets covered), this array must be provided as null or empty ([]), as all releases are implicitly covered.
  • If includeFutureAssets is false (only specific assets covered), this array must contain the releaseId values of the releases to be included.
Note on Tracks: When a release is included in this array, all its tracks are automatically subject to the contract. Its individual tracks should not be additionally listed in the contractTracks array.
contractTracks
required
array of objectsAn array of objects specifying individual tracks explicitly included in the contract. Each object must contain a tracId: {"trackId": <integer>}.
    Behavior based on includeFutureAssets and contractReleases:
  • If includeFutureAssets is true (all future assets covered), this array must be provided as null or empty ([]), as all tracks are implicitly covered.
  • If includeFutureAssets is false (only specific assets covered):
    • This array must be provided as null or empty ([]) if all relevant tracks are covered by contractReleases.
    • This array must contain the trackId values of individual tracks to be included, particularly those not part of a release listed in contractReleases.
contractTerms
required
array of objectsSpecifies the terms for the contract.
See Contract Terms Object
payMechanicals
optional
boolean
  • true - to pay digital mechanicals. Additional attributes are required.
  • false - to not pay digital mechanicals (Default)
mechanicalsTypeId
optional 1
integerRate type for mechanicals:
  • 1 - % of Sales
  • 2 - Penny Rate
  • 3 - Copyright Law
1Mandatory when payMechanicals is true.
mechanicalsSalesPercentage
optional 2
integerSales percent.
2Mandatory when mechanicalsTypeId is 1.
mechanicalsFixedPennyRate
optional 3
integerPenny rate.
3Mandatory when mechanicalsTypeId is 2.
mechanicalsIsFullRate
optional 4
booleanRate basis:
  • true - Full
  • false - Minimum
4Mandatory when mechanicalsTypeId is 3.
mechanicalsRatePercentage
optional 4
integerRate percent. 4Mandatory when mechanicalsTypeId is 3.

Contract Payee Object

ParameterTypeDescription
sharePercentage
optional
integer
  • For standard payees (non-commission), the percent of the payee revenue that will go to this payee.
  • For commission payees, the percent of the payor revenue that will go to this payee.
Defaults to 0
startingBalance
optional
integerThe payee’s starting balance. Defaults to 0 for new payees. Defaults to the current value for existing payees. Cannot be changed for existing payees; the request will fail if the provided value does not match the current value.
isCommissionPayee
optional
boolean
  • true - the payee is a commission payee, and will be paid from the payor’s share of the revenue.
  • false - the payee is a standard payee (Default)
payee
required
objectDetails of the payee.
See Payee Object
permission
optional
objectThe permissions the payee has in their payee portal.
This parameter sets permissions for the payee to log into the Revelator UI. It is not relevant for most API use cases, and is never relevant when the payee already has a user/child account that was created with the signup resource.

Payee Object

ParameterTypeDescription
payeeId
optional
integerID for an existing payee to associate with the contract.
  • When set to 0, a new payee is created. (Default)
A default payee (and default contract) is automatically created upon account creation.
Note: You should never create a new payee for a user for whom you have already created a child account.
companyName
required
stringThe name of the payee. If omitted, defaults to the name of the associated contact.
contactId
optional
integerThe ID for an existing contact.
  • When set to 0, a new contact is created. (Default)
  • If provided, this value must match the contact.contactId value within the nested object.
contact
required
objectContact information for the payee.
contact.contactId
optional
integerThe ID for an existing contact.
  • When set to 0, a new contact is created. (Default)
contact.name
optional
stringThe name of the contact.
Defaults to the companyName.
contact.email
optional
stringThe contact’s email address.
This email is used for sending statement notifications when automatic email notifications are enabled.
currencyCode
optional
stringThe currency code for the payee’s currency. Defaults to the parent account’s currency code.
Look up currency codes using the GET /common/lookup/currencies resource.
paymentProviderId
optional
integer
  • 2 - paypal
Only necessary when using the PayPal integration for paying the payee.
paymentUserId
optional
stringThe PayPal email address for the payee.
Only necessary when using the PayPal integration for paying the payee.

Contract Licensor Object

ParameterTypeDescription
id
optional
UUIDThe ID for an existing contract licensor entity.
Not relevant for new contracts. Should be provided when editing existing releases.
licensorType
required
integerThe type of licensor that will be used to specify the assets to include in the contract.
  • 1 - artist*
  • 2 - label
* For artist licensors(licensorType = 1), only assets where the artist is the primary artist on the release level can be specified. Therefore, compilations cannot be directly specified for artist licensors. Additionally, when includeFutureAssets is true, only the primary artist on the asset is considered; other contributors are ignored, including contributors with the role “primary”.
licensorId
required
stringThe ID of the licensor. Either an artistId or labelId, corresponding to the licensorType.
includeFutureAssets
optional
boolean
  • true - to include all of the licensor’s current and future assets. When this is true for a licensor, none of the licensor’s assets should be included in the contractReleases or contractTracks arrays.
  • false - to not include all of the licensor’s current and future assets (Default)

Contract Terms Object

ParameterTypeDescription
contractTermsId
optional
UUIDThe ID for an existing contract terms entity.
Not relevant for new contracts. Should be provided when editing existing releases.
contractTermsRate
optional
integerThe percent of the revenue being paid out to payees. Defaults to 0.
contractTermsRateTypeId
required
integer
  • 1 - to calculate the payout with retail
  • 2 - to calculate the payout with wholesale
isCountriesIncluded
optional
boolean
  • true - the countries array provides the only territories included in the contract
  • false - the countries array provides the only territories excluded by the contract, and all other countries are included (Default)
    To include all territories in the contract, set isCountriesIncluded to false and leave countries empty.
isDistributorStoresIncluded
optional
boolean
  • true - the distributorStores array provides the only services included in the contract
  • false - the distributorStores array provides the only DSPs excluded by the contract, and all other DSPs are included (Default)
    To include all DSPs in the contract, set isDistributorStoresIncluded to false and leave distributorStores empty.
countries
optional
array of integersIDs for the countries included or excluded from the contract. See isCountriesIncluded.
Look up country IDs using the GET /common/lookup/countries resource.
distributorStores
optional
array of integersIDs for the services included or excluded from the contract. See isDistributorStoresIncluded.
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.
releaseTypes
optional
array of integersTypes of releases to include in the contract terms:
  • 1 - Album
  • 2 - Single
  • 4 - EP
An empty array will cause all types to be included for the contract. (Default)
deliveryTypes
optional
array of integersDelivery channels to include in the contract terms. Each integer in the array is an ID that represents a delivery type; each channel includes multiple delivery types.
  • Download: 101,106, 123
  • Subscription: 102,104,105,107
  • Ad supported: 103, 115, 109, 118
  • Physical: 110
  • Rental: 116
  • Digital Licensing: 117
  • UGC: 120
An empty array will cause all types to be included for the contract. (Default)
Example