Skip to main content
POST
/
split
Create split
curl --request POST \
  --url https://api.royalti.io/split/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "asset": "d1c5b49e-95fa-4aed-930e-cf314c16a53d",
  "product": "b53230c5-2110-40ce-abe5-2112724ffb53",
  "type": "Publishing",
  "startDate": "2022-01-01",
  "endDate": "2022-01-31",
  "name": "Nigerian split train",
  "split": [
    {
      "user": "cf960b5a-37cd-484a-b461-0b191b09bed1",
      "share": 60
    },
    {
      "user": "4e39b347-7db0-417d-a5bc-3d8493c9ce19",
      "share": 40
    }
  ]
}
'
{
  "id": "8a8f3ee8-8855-4749-9649-897f9e0e6c6b",
  "AssetId": "2e0d9f94-59eb-4ef8-adc6-9f3ddebf49fc",
  "ProductId": "76293a6e-6c0a-4842-84b5-6bffbe1ea538",
  "type": "Publishing",
  "startDate": "2022-01-01T00:00:00.000Z",
  "endDate": "2022-01-31T00:00:00.000Z",
  "name": "Nigerian split train",
  "contract": null,
  "ContractId": null,
  "conditions": null,
  "TenantId": 2
}
This endpoint requires authentication. Include your Bearer token in the Authorization header.

Description

Create Revenue Split The Split Revenue endpoint allows you to split revenue generated from a specific asset and product among multiple users. This endpoint calculates the revenue shares based on the provided split percentages for each user. Method: POST Temporal Splits & Date Ranges:
  • Splits support temporal periods with startDate and endDate
  • startDate is INCLUSIVE - the split becomes active on this date
  • endDate is EXCLUSIVE - the split ends before this date (not included)
  • Example: startDate: "2025-01-01", endDate: "2025-04-01" covers Jan 1 through Mar 31
  • Adjacent splits: Next split can start on the previous split’s endDate (no gap)
  • Permanent splits: Omit both dates for indefinite coverage
Split Succession Pattern: To create a chain of temporal splits without gaps:
  1. Q1 Split: startDate: "2025-01-01", endDate: "2025-04-01" (covers Jan-Mar)
  2. Q2 Split: startDate: "2025-04-01", endDate: "2025-07-01" (starts Apr 1, covers Apr-Jun)
  3. Q3 Split: startDate: "2025-07-01", endDate: "2025-10-01" (starts Jul 1, covers Jul-Sep)
Validation:
  • Split shares must total exactly 100%
  • Overlapping temporal splits are prevented (same asset/product/type)
  • At least one of asset or product must be provided
Parameters:
ParameterTypeRequiredDescription
assetstringConditionalThe UUID of the asset related to the revenue (required if product not provided)
productstringConditionalThe UUID of the product related to the revenue (required if asset not provided)
typestringNoThe type of revenue (e.g., Publishing, YouTube, Live)
startDatestringNoThe start date of the split period (INCLUSIVE - period begins on this date)
endDatestringNoThe end date of the split period (EXCLUSIVE - period ends before this date)
namestringNoThe name or description of the revenue split
conditionsarrayNoArray of condition objects for split matching (territory, DSP, usage type filters)
contractstringNoContract details
ContractIdstringNoContract ID
memostringNoAdditional notes
splitarrayYesAn array of objects containing user shares (must total 100%)

Code Examples

const response = await fetch('https://api.royalti.io/split/', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "asset": "sample-asset",
    "product": "sample-product",
    "type": "sample-type",
    "startDate": "2024-01-21",
    "endDate": "2024-01-21",
    "name": "sample-name",
    "split": [
      {
        "ref": "#/components/schemas/SplitShare"
      }
    ],
    "conditions": [
      {
        "mode": "sample-mode",
        "memo": "sample-memo",
        "territories": [
          {}
        ],
        "dsps": [
          {}
        ],
        "usageTypes": [
          {}
        ],
        "customDimension": "sample-customDimension",
        "customValues": [
          {}
        ]
      }
    ],
    "contract": "sample-contract",
    "ContractId": "sample-ContractId",
    "memo": "sample-memo"
  })
});

const data = await response.json();
console.log(data);

Authorizations

Authorization
string
header
required

JWT Authorization header using the Bearer scheme. Format: "Bearer {token}"

Body

application/json
split
object[]
required

An array of objects containing user shares

asset
string<uuid>

The UUID of the asset related to the revenue

product
string<uuid>

The UUID of the product related to the revenue

type
string | null

The type of revenue (e.g., Publishing, YouTube, Live)

startDate
string<date> | null

The start date of the split period (inclusive)

endDate
string<date> | null

The end date of the split period (exclusive)

name
string | null

The name or description of the revenue split

conditions
object[] | null

Conditions for split matching

contract
string | null
ContractId
string<uuid> | null
memo
string | null

Response

Split created successfully

id
string<uuid>
AssetId
string<uuid>
ProductId
string<uuid>
type
string
startDate
string<date> | null
endDate
string<date> | null
name
string
contract
string | null
ContractId
string | null
conditions
string | null
TenantId
integer