Skip to main content

List Statements

Returns a paginated list of statements for a project.

Request

GET /v1/statements

Query Parameters

ParameterTypeRequiredDefaultDescription
projectIdUUIDYesThe project to list statements for
pageintegerNo1Page number (1-indexed)
perPageintegerNo20Items per page (1–100)

Headers

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

Response

{
  "data": {
    "items": [
      {
        "id": 1234,
        "file_name": "Q1-2025-royalties.xlsx",
        "file_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "file_size": 524288,
        "statement_name": "Q1 2025 Royalties",
        "statement_type": "royalty",
        "statement_category": "recording",
        "statement_producer": "Sony Music Entertainment",
        "processing_status": "completed",
        "upload_status": "completed",
        "approval_status": "approved",
        "has_revenues": true,
        "has_costs": false,
        "has_summary": true,
        "currency_transaction": "USD",
        "currency_royalty": "EUR",
        "entity_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "created_at": "2025-03-01T12:00:00Z",
        "processed_at": "2025-03-01T12:05:00Z"
      }
    ],
    "total_count": 42,
    "page": 1,
    "per_page": 20
  }
}
Null fields are stripped from the response. For example, if a statement has not been processed yet, processed_at, statement_name, and other derived fields will be absent.

Errors

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

Example

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

Get Statement

Returns a single statement by ID with full metadata.

Request

GET /v1/statements/{statement_id}

Path Parameters

ParameterTypeRequiredDescription
statement_idintegerYesThe statement ID

Query Parameters

ParameterTypeRequiredDefaultDescription
projectIdUUIDYesThe project the statement belongs to

Headers

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

Response

{
  "data": {
    "id": 1234,
    "file_name": "Q1-2025-royalties.xlsx",
    "file_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    "file_size": 524288,
    "statement_name": "Q1 2025 Royalties",
    "statement_desc": "Quarterly royalty report for recording revenues",
    "statement_type": "royalty",
    "statement_category": "recording",
    "statement_subtype": "mechanical",
    "statement_producer": "Sony Music Entertainment",
    "statement_version": "1.0",
    "processing_status": "completed",
    "upload_status": "completed",
    "approval_status": "approved",
    "has_revenues": true,
    "has_costs": false,
    "has_summary": true,
    "has_summary_lines": true,
    "currency_transaction": "USD",
    "currency_royalty": "EUR",
    "entity_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "created_at": "2025-03-01T12:00:00Z",
    "processed_at": "2025-03-01T12:05:00Z",
    "modified_at": "2025-03-02T09:30:00Z"
  }
}
The get endpoint returns additional fields not present in the list response: statement_desc, statement_subtype, statement_version, has_summary_lines, and modified_at.

Errors

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

Example

curl "https://api.royaltyport.com/v1/statements/1234?projectId=a1b2c3d4-..." \
  -H "Authorization: Bearer rp_your_token_here"