Concertify API (beta) API Reference

The Concertify API (beta) grants third-party developers and applications access to internal Concertify resources such as performances, works, venues, organizers, etc. through an easy-to-use RESTful API.

The current beta version grants access to a limited amount of resources. If you are a beta user and would like to request a specific feature, you can reach us at support@concertify.io.

API Endpoint
https://beta.api.concertify.io/v1
Terms of Service: https://beta.concertify.io/terms-and-conditions
Schemes: https
Version: 1.1.0

Authentication

api_key

All requests must be authenticated with the API key supplied to your organization or application. The key should be included in a x-api-key header.

Please contact us at support@concertify.io if you would like to request an API key.

type
apiKey
in
header
name
x-api-key

Performances

Any live performance of a Setlist comprised of Musical Works at a physical location is considered an individual Performance. Please note that at Concertify, the concept of a Performance is a single interpretation of a particular Setlist. Therefore, a music festival would be a group of Performances.

Fetching a known performance

GET /performances/{PerformanceId}

Get the full details of a single performance.

uuid: string (uuid)
in path

UUID of the performance to be fetched

200 OK

Successful operation

404 Not Found

Resource not found

Response Example (200 OK)
{
  "Date": "string (date)",
  "OriginMetaData": {
    "SubmitterCMOCode": "string",
    "SubmissionDateTime": "string (date-time)",
    "SubmitterName": "string",
    "SubmitterId": "string",
    "IdAtOrigin": "string",
    "SubmitterLastName": "string",
    "OriginName": "string"
  },
  "License": {
    "PaymentDate": "string (date)",
    "BoxOffice": "number",
    "EstimatedValue": "number",
    "NetDistributable": "number",
    "SocietyAdminFeePercentage": "number",
    "SocietyAdminFeeValue": "number",
    "OtherDeductions": "number",
    "LicenseFee": "number",
    "DeductionsDesc": "string",
    "Currency": "string",
    "SocietyTariffValue": "number",
    "SocietyTariffPercentage": "number",
    "EstimatedValueDate": "string (date)",
    "Collections": "number"
  },
  "PerformingArtist": {
    "Contact": {
      "SocialMedia": {
        "Twitter": "string",
        "Facebook": "string"
      },
      "Website": "string",
      "Email": "string (email)"
    },
    "IdAtOrigin": "string",
    "Name": "string"
  },
  "CMOCode": "string",
  "Organizer": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "Setlist": {
    "SubmissionDateTime": "string",
    "SubmitterId": "string",
    "LastModificationTimeStamp": "string",
    "Works": [
      {
        "WorkId": "string",
        "WorkIdAtOrigin": "string",
        "Performers": [
          "string"
        ],
        "Title": "string",
        "ISWC": "string",
        "OriginName": "string",
        "OriginalDuration": "integer",
        "PerformanceDuration": "integer",
        "WorkKey": "string",
        "RightsOwners": [
          {
            "CAERole": "string",
            "PerformingRightsSocietyId": "string",
            "FirstName": "string",
            "LastName": "string",
            "IPINumber": "string"
          }
        ],
        "LastModificationDateTime": "string"
      }
    ],
    "Title": "string",
    "Status": "string"
  },
  "PerformanceId": "string",
  "Venue": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "StartTime": "string",
  "EndTime": "string",
  "Status": "string",
  "LastModificationDateTime": "string"
}
Response Example (404 Not Found)

Updating existing performances

PUT /performances/{PerformanceId}

This operation updates an existing performance. Currently, partial updates are supported only on root attributes representing objects. This can be summarized in two important points:

  • Updating a root attribute that represents an object (such as PerformingArtist, Setlist, Venue, License, OriginMetaData, or Organizer) will completely replace the corresponding value and delete any sub-attributes not present in the updated body.
  • In order to update a deeply-nested attribute (such as Venue.Address.CountryCode), the update body should contain a Venue attribute containing all original values plus the updated value.

Updated attributes of the performance. For this operation, attributes marked as required in the schema may be omitted. A 400 Bad Request (validation error) is only returned for invalid value types.

Request Example
{
  "Date": "string (date)",
  "OriginMetaData": {
    "SubmitterCMOCode": "string",
    "SubmissionDateTime": "string (date-time)",
    "SubmitterName": "string",
    "SubmitterId": "string",
    "IdAtOrigin": "string",
    "SubmitterLastName": "string",
    "OriginName": "string"
  },
  "License": {
    "PaymentDate": "string (date)",
    "BoxOffice": "number",
    "EstimatedValue": "number",
    "NetDistributable": "number",
    "SocietyAdminFeePercentage": "number",
    "SocietyAdminFeeValue": "number",
    "OtherDeductions": "number",
    "LicenseFee": "number",
    "DeductionsDesc": "string",
    "Currency": "string",
    "SocietyTariffValue": "number",
    "SocietyTariffPercentage": "number",
    "EstimatedValueDate": "string (date)",
    "Collections": "number"
  },
  "PerformingArtist": {
    "Contact": {
      "SocialMedia": {
        "Twitter": "string",
        "Facebook": "string"
      },
      "Website": "string",
      "Email": "string (email)"
    },
    "IdAtOrigin": "string",
    "Name": "string"
  },
  "CMOCode": "string",
  "Organizer": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "Setlist": {
    "SubmissionDateTime": "string",
    "SubmitterId": "string",
    "LastModificationTimeStamp": "string",
    "Works": [
      {
        "WorkId": "string",
        "WorkIdAtOrigin": "string",
        "Performers": [
          "string"
        ],
        "Title": "string",
        "ISWC": "string",
        "OriginName": "string",
        "OriginalDuration": "integer",
        "PerformanceDuration": "integer",
        "WorkKey": "string",
        "RightsOwners": [
          {
            "CAERole": "string",
            "PerformingRightsSocietyId": "string",
            "FirstName": "string",
            "LastName": "string",
            "IPINumber": "string"
          }
        ],
        "LastModificationDateTime": "string"
      }
    ],
    "Title": "string",
    "Status": "string"
  },
  "PerformanceId": "string",
  "Venue": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "StartTime": "string",
  "EndTime": "string",
  "Status": "string",
  "LastModificationDateTime": "string"
}
200 OK

OK

400 Bad Request

Validation error

404 Not Found

Resource not found

Response Example (200 OK)
{
  "Date": "string (date)",
  "OriginMetaData": {
    "SubmitterCMOCode": "string",
    "SubmissionDateTime": "string (date-time)",
    "SubmitterName": "string",
    "SubmitterId": "string",
    "IdAtOrigin": "string",
    "SubmitterLastName": "string",
    "OriginName": "string"
  },
  "License": {
    "PaymentDate": "string (date)",
    "BoxOffice": "number",
    "EstimatedValue": "number",
    "NetDistributable": "number",
    "SocietyAdminFeePercentage": "number",
    "SocietyAdminFeeValue": "number",
    "OtherDeductions": "number",
    "LicenseFee": "number",
    "DeductionsDesc": "string",
    "Currency": "string",
    "SocietyTariffValue": "number",
    "SocietyTariffPercentage": "number",
    "EstimatedValueDate": "string (date)",
    "Collections": "number"
  },
  "PerformingArtist": {
    "Contact": {
      "SocialMedia": {
        "Twitter": "string",
        "Facebook": "string"
      },
      "Website": "string",
      "Email": "string (email)"
    },
    "IdAtOrigin": "string",
    "Name": "string"
  },
  "CMOCode": "string",
  "Organizer": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "Setlist": {
    "SubmissionDateTime": "string",
    "SubmitterId": "string",
    "LastModificationTimeStamp": "string",
    "Works": [
      {
        "WorkId": "string",
        "WorkIdAtOrigin": "string",
        "Performers": [
          "string"
        ],
        "Title": "string",
        "ISWC": "string",
        "OriginName": "string",
        "OriginalDuration": "integer",
        "PerformanceDuration": "integer",
        "WorkKey": "string",
        "RightsOwners": [
          {
            "CAERole": "string",
            "PerformingRightsSocietyId": "string",
            "FirstName": "string",
            "LastName": "string",
            "IPINumber": "string"
          }
        ],
        "LastModificationDateTime": "string"
      }
    ],
    "Title": "string",
    "Status": "string"
  },
  "PerformanceId": "string",
  "Venue": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "StartTime": "string",
  "EndTime": "string",
  "Status": "string",
  "LastModificationDateTime": "string"
}
Response Example (400 Bad Request)
Response Example (404 Not Found)

Deleting performances

DELETE /performances/{PerformanceId}

Remove a performance from Concertify. This is a soft delete operation, meaning that the performance is not permanently removed. However, the deleted performance will not appear any search results and trying to GET the deleted performance will result in a ResourceNotFoundError

A reason as to why the Performance is being deleted must be provided in the request body.

Reason for deleting the Performance

Request Example
{
  "ReasonForDeletion": "string"
}
200 OK

OK

type
object
400 Bad Request

Validation error

404 Not Found

Resource not found

Response Example (200 OK)
{
  "Deleted": true,
  "ReasonForDeletion": "Cancelled",
  "LastModificationDateTime": "2019-08-30T12:48:37.294113"
}
Response Example (400 Bad Request)
Response Example (404 Not Found)

Adding performances

POST /performances

This operation adds one or more Performances to Concertify. Currently, there is no check for duplicates, meaning that the caller is responsible for making sure that no duplicate entries are being entered.

This is an atomic operation. If the request contains more than one Performance and there is any validation error, none of the Performance will be created. The maximum amount of allowed Performances per request is 20.

Performance to add

Request Example
{
  "Date": "string (date)",
  "OriginMetaData": {
    "SubmitterCMOCode": "string",
    "SubmissionDateTime": "string (date-time)",
    "SubmitterName": "string",
    "SubmitterId": "string",
    "IdAtOrigin": "string",
    "SubmitterLastName": "string",
    "OriginName": "string"
  },
  "License": {
    "PaymentDate": "string (date)",
    "BoxOffice": "number",
    "EstimatedValue": "number",
    "NetDistributable": "number",
    "SocietyAdminFeePercentage": "number",
    "SocietyAdminFeeValue": "number",
    "OtherDeductions": "number",
    "LicenseFee": "number",
    "DeductionsDesc": "string",
    "Currency": "string",
    "SocietyTariffValue": "number",
    "SocietyTariffPercentage": "number",
    "EstimatedValueDate": "string (date)",
    "Collections": "number"
  },
  "PerformingArtist": {
    "Contact": {
      "SocialMedia": {
        "Twitter": "string",
        "Facebook": "string"
      },
      "Website": "string",
      "Email": "string (email)"
    },
    "IdAtOrigin": "string",
    "Name": "string"
  },
  "CMOCode": "string",
  "Organizer": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "Setlist": {
    "SubmissionDateTime": "string",
    "SubmitterId": "string",
    "LastModificationTimeStamp": "string",
    "Works": [
      {
        "WorkId": "string",
        "WorkIdAtOrigin": "string",
        "Performers": [
          "string"
        ],
        "Title": "string",
        "ISWC": "string",
        "OriginName": "string",
        "OriginalDuration": "integer",
        "PerformanceDuration": "integer",
        "WorkKey": "string",
        "RightsOwners": [
          {
            "CAERole": "string",
            "PerformingRightsSocietyId": "string",
            "FirstName": "string",
            "LastName": "string",
            "IPINumber": "string"
          }
        ],
        "LastModificationDateTime": "string"
      }
    ],
    "Title": "string",
    "Status": "string"
  },
  "PerformanceId": "string",
  "Venue": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "StartTime": "string",
  "EndTime": "string",
  "Status": "string",
  "LastModificationDateTime": "string"
}
200 OK

OK

type
object
400 Bad Request

Validation error

Response Example (200 OK)
{
  "Summary": [
    {
      "PerformanceId": "string",
      "Date": "string (date)",
      "VenueName": "string",
      "City": "string",
      "CountryCode": "string"
    }
  ]
}
Response Example (400 Bad Request)

Musical Works

Song, composition, arrangement, translation, or any other form of musical work

Searching musical works

GET /works?q=enter%20sandman

Search for musical works available in Concertify. This performs a BEGINS_WITH operation under the hood, meaning that a query for the title "enter" will return all musical works beginning with the word "enter".

q: string
in query

Title of the musical work to query (e.g. 'Fade To Black', 'Bad Medicine'). The title must be URL-encoded (e.g. Fade To Black -> fade%20to%20black)

200 OK

Search results

type
object
Response Example (200 OK)
{
  "Works": [
    {
      "WorkId": "string",
      "WorkIdAtOrigin": "string",
      "Performers": [
        "string"
      ],
      "Title": "string",
      "ISWC": "string",
      "OriginName": "string",
      "OriginalDuration": "integer",
      "PerformanceDuration": "integer",
      "WorkKey": "string",
      "RightsOwners": [
        {
          "CAERole": "string",
          "PerformingRightsSocietyId": "string",
          "FirstName": "string",
          "LastName": "string",
          "IPINumber": "string"
        }
      ],
      "LastModificationDateTime": "string"
    }
  ]
}

Schema Definitions

OriginMetaData: object

SubmitterCMOCode: string | null
SubmissionDateTime: string | null (date-time)
SubmitterName: string | null
SubmitterId: string | null
IdAtOrigin: string | null
SubmitterLastName: string | null
OriginName: string | null
Example
{
  "SubmitterCMOCode": "string",
  "SubmissionDateTime": "string (date-time)",
  "SubmitterName": "string",
  "SubmitterId": "string",
  "IdAtOrigin": "string",
  "SubmitterLastName": "string",
  "OriginName": "string"
}

License: object

PaymentDate: string | null (date)
BoxOffice: number | null x ≥ 0
EstimatedValue: number | null x ≥ 0
NetDistributable: number | null x ≥ 0
SocietyAdminFeePercentage: number | null 0 ≤ x ≤ 100
SocietyAdminFeeValue: number | null x ≥ 0
OtherDeductions: number | null x ≥ 0
LicenseFee: number | null x ≥ 0
DeductionsDesc: string | null
Currency: string | null
SocietyTariffValue: number | null x ≥ 0
SocietyTariffPercentage: number | null 0 ≤ x ≤ 100
EstimatedValueDate: string | null (date)
Collections: number | null x ≥ 0
Example
{
  "PaymentDate": "string (date)",
  "BoxOffice": "number",
  "EstimatedValue": "number",
  "NetDistributable": "number",
  "SocietyAdminFeePercentage": "number",
  "SocietyAdminFeeValue": "number",
  "OtherDeductions": "number",
  "LicenseFee": "number",
  "DeductionsDesc": "string",
  "Currency": "string",
  "SocietyTariffValue": "number",
  "SocietyTariffPercentage": "number",
  "EstimatedValueDate": "string (date)",
  "Collections": "number"
}

SocialMedia: object

Twitter: string | null
Facebook: string | null
Example
{
  "Twitter": "string",
  "Facebook": "string"
}

Contact: object

SocialMedia: | null
Website: string | null
Email: string | null (email)
Example
{
  "SocialMedia": {
    "Twitter": "string",
    "Facebook": "string"
  },
  "Website": "string",
  "Email": "string (email)"
}

PerformingArtist: object

Contact: | null
IdAtOrigin: string | null
Name: string
Example
{
  "Contact": {
    "SocialMedia": {
      "Twitter": "string",
      "Facebook": "string"
    },
    "Website": "string",
    "Email": "string (email)"
  },
  "IdAtOrigin": "string",
  "Name": "string"
}

Address: object

Line1: string | null
ZipCode: string | null
Line2: string | null
State: string | null
Phone: string | null
CountryCode: string
City: string
Example
{
  "Line1": "string",
  "ZipCode": "string",
  "Line2": "string",
  "State": "string",
  "Phone": "string",
  "CountryCode": "string",
  "City": "string"
}

Organizer: object

IdAtOrigin: string | null
Name: string
Address: Address
Example
{
  "IdAtOrigin": "string",
  "Name": "string",
  "Address": {
    "Line1": "string",
    "ZipCode": "string",
    "Line2": "string",
    "State": "string",
    "Phone": "string",
    "CountryCode": "string",
    "City": "string"
  }
}

RightsOwner: object

CAERole: string | null
PerformingRightsSocietyId: string | null
FirstName: string | null
LastName: string
IPINumber: string | null
Example
{
  "CAERole": "string",
  "PerformingRightsSocietyId": "string",
  "FirstName": "string",
  "LastName": "string",
  "IPINumber": "string"
}

Work: object

WorkId: string | null
WorkIdAtOrigin: string | null
Performers: string[] | null
string
Title: string
ISWC: string | null
OriginName: string | null
OriginalDuration: integer
PerformanceDuration: integer | null
WorkKey: string | null
RightsOwners: RightsOwner | null
RightsOwner
LastModificationDateTime: string | null
Example
{
  "WorkId": "string",
  "WorkIdAtOrigin": "string",
  "Performers": [
    "string"
  ],
  "Title": "string",
  "ISWC": "string",
  "OriginName": "string",
  "OriginalDuration": "integer",
  "PerformanceDuration": "integer",
  "WorkKey": "string",
  "RightsOwners": [
    {
      "CAERole": "string",
      "PerformingRightsSocietyId": "string",
      "FirstName": "string",
      "LastName": "string",
      "IPINumber": "string"
    }
  ],
  "LastModificationDateTime": "string"
}

Setlist: object

SubmissionDateTime: string | null
SubmitterId: string | null
LastModificationTimeStamp: string | null
Works: Work
Work
Title: string | null
Status: string | null unconfirmed, confirmed
Example
{
  "SubmissionDateTime": "string",
  "SubmitterId": "string",
  "LastModificationTimeStamp": "string",
  "Works": [
    {
      "WorkId": "string",
      "WorkIdAtOrigin": "string",
      "Performers": [
        "string"
      ],
      "Title": "string",
      "ISWC": "string",
      "OriginName": "string",
      "OriginalDuration": "integer",
      "PerformanceDuration": "integer",
      "WorkKey": "string",
      "RightsOwners": [
        {
          "CAERole": "string",
          "PerformingRightsSocietyId": "string",
          "FirstName": "string",
          "LastName": "string",
          "IPINumber": "string"
        }
      ],
      "LastModificationDateTime": "string"
    }
  ],
  "Title": "string",
  "Status": "string"
}

Venue: object

IdAtOrigin: string | null
Name: string
Address: Address
Example
{
  "IdAtOrigin": "string",
  "Name": "string",
  "Address": {
    "Line1": "string",
    "ZipCode": "string",
    "Line2": "string",
    "State": "string",
    "Phone": "string",
    "CountryCode": "string",
    "City": "string"
  }
}

Performance: object

Date: string (date)
OriginMetaData: | null
License: | null
PerformingArtist: PerformingArtist
CMOCode: string
Organizer: | null
Setlist: | null
PerformanceId: string | null
Venue: Venue
StartTime: string | null
EndTime: string | null
Status: string | null new, scheduled, invoiced, collected, distributed
LastModificationDateTime: string | null
Example
{
  "Date": "string (date)",
  "OriginMetaData": {
    "SubmitterCMOCode": "string",
    "SubmissionDateTime": "string (date-time)",
    "SubmitterName": "string",
    "SubmitterId": "string",
    "IdAtOrigin": "string",
    "SubmitterLastName": "string",
    "OriginName": "string"
  },
  "License": {
    "PaymentDate": "string (date)",
    "BoxOffice": "number",
    "EstimatedValue": "number",
    "NetDistributable": "number",
    "SocietyAdminFeePercentage": "number",
    "SocietyAdminFeeValue": "number",
    "OtherDeductions": "number",
    "LicenseFee": "number",
    "DeductionsDesc": "string",
    "Currency": "string",
    "SocietyTariffValue": "number",
    "SocietyTariffPercentage": "number",
    "EstimatedValueDate": "string (date)",
    "Collections": "number"
  },
  "PerformingArtist": {
    "Contact": {
      "SocialMedia": {
        "Twitter": "string",
        "Facebook": "string"
      },
      "Website": "string",
      "Email": "string (email)"
    },
    "IdAtOrigin": "string",
    "Name": "string"
  },
  "CMOCode": "string",
  "Organizer": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "Setlist": {
    "SubmissionDateTime": "string",
    "SubmitterId": "string",
    "LastModificationTimeStamp": "string",
    "Works": [
      {
        "WorkId": "string",
        "WorkIdAtOrigin": "string",
        "Performers": [
          "string"
        ],
        "Title": "string",
        "ISWC": "string",
        "OriginName": "string",
        "OriginalDuration": "integer",
        "PerformanceDuration": "integer",
        "WorkKey": "string",
        "RightsOwners": [
          {
            "CAERole": "string",
            "PerformingRightsSocietyId": "string",
            "FirstName": "string",
            "LastName": "string",
            "IPINumber": "string"
          }
        ],
        "LastModificationDateTime": "string"
      }
    ],
    "Title": "string",
    "Status": "string"
  },
  "PerformanceId": "string",
  "Venue": {
    "IdAtOrigin": "string",
    "Name": "string",
    "Address": {
      "Line1": "string",
      "ZipCode": "string",
      "Line2": "string",
      "State": "string",
      "Phone": "string",
      "CountryCode": "string",
      "City": "string"
    }
  },
  "StartTime": "string",
  "EndTime": "string",
  "Status": "string",
  "LastModificationDateTime": "string"
}

DeletePerformanceRequest: object

ReasonForDeletion: string Canceled, Cancelled, WrongSubmission
Example
{
  "ReasonForDeletion": "string"
}