Skip to main content

List Contracts

Returns a paginated list of contracts for a project. Use the includes parameter to embed sub-resource data inline.

Request

GET /v1/contracts

Query Parameters

ParameterTypeRequiredDefaultDescription
projectIdUUIDYesThe project to list contracts for
pageintegerNo1Page number (1-indexed)
perPageintegerNo20Items per page (1–100)
includesstringNoComma-separated list of sub-resources to embed

Headers

HeaderRequiredDescription
AuthorizationYesBearer <token> — must be scoped to the requested project

Sub-Resource Includes

Pass a comma-separated list of sub-resource names in the includes parameter to embed related data in each contract object:
IncludeDescription
entitiesEntities linked to the contract
artistsArtists linked to the contract
writersWriters linked to the contract
royaltiesRoyalty terms extracted from the contract
splitsRevenue split information
costsCost provisions
compensationsCompensation terms
datesKey dates (effective, termination, etc.)
accounting-periodsAccounting period definitions
typesContract type classifications
signaturesSignature information
control-areasControl area definitions
creative-approvalsCreative approval clauses
balancesBalance provisions and terms
recordingsRecordings linked to the contract
compositionsCompositions linked to the contract

Response

{
  "data": [
    {
      "id": "contract-123",
      "name": "Distribution Agreement",
      "project_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "created_at": "2025-03-01T12:00:00Z",
      "entities": [
        { "id": "ent-1", "name": "Sony Music Entertainment" }
      ],
      "royalties": [
        { "id": "roy-1", "rate": "18%", "type": "mechanical" }
      ]
    }
  ]
}
Sub-resource keys only appear in the response when requested via includes. Without includes, only the base contract fields are returned.

Errors

StatusDescription
400Missing projectId or invalid query parameters
403Token is not scoped to the requested project

Example

curl "https://api.royaltyport.com/v1/contracts?projectId=a1b2c3d4-...&page=1&perPage=10&includes=entities,royalties" \
  -H "Authorization: Bearer rp_your_token_here"

Get Contract

Returns a single contract by ID, with optional sub-resource includes.

Request

GET /v1/contracts/{contract_id}

Path Parameters

ParameterTypeRequiredDescription
contract_idstringYesThe contract ID

Query Parameters

ParameterTypeRequiredDefaultDescription
projectIdUUIDYesThe project the contract belongs to
includesstringNoComma-separated list of sub-resources to embed (see table above)

Headers

HeaderRequiredDescription
AuthorizationYesBearer <token> — must be scoped to the requested project

Response

{
  "data": {
    "id": "contract-123",
    "name": "Distribution Agreement",
    "project_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "created_at": "2025-03-01T12:00:00Z",
    "entities": [
      { "id": "ent-1", "name": "Sony Music Entertainment" }
    ]
  }
}

Errors

StatusDescription
400Missing projectId or invalid query parameters
403Token is not scoped to the requested project
404Contract not found

Example

curl "https://api.royaltyport.com/v1/contracts/contract-123?projectId=a1b2c3d4-...&includes=entities,artists,royalties" \
  -H "Authorization: Bearer rp_your_token_here"