In this article, we show you how you can use the Konzertmeister REST API to automate access to our platform. The API is continuously being expanded with new functions.

API Key

To access the Konzertmeister API, you must first create an API key for your association in the web app. The key is always tied to the association and can only be managed by someone with a leader role.

To do this, navigate to the association details in the Web App and switch to the Edit tab (far right or by clicking the Edit button). Then scroll down to the Public API section.

Public API of the association
Public API of the association
Public API with key
Public API with key

Here you can create, delete, or recreate an API key (this overwrites an existing key).

The API key is only displayed once upon creation and must be stored in a safe place.

If the API key is lost or falls into the wrong hands, it can be deleted or recreated at any time.

Authentication of API requests

The API key must be set in the header X-KM-ORG-API-KEY for every request.

Base URL of the API

The base-url of the Konzertmeister API is: https://rest.konzertmeister.app

Documentation of endpoints

Here you will find the documentation for the available endpoints. This is continuously being expanded.

Querying appointments

You can query the appointment list via the following endpoint:

POST {base-url}/api/v4/org/m2m/appointments

Below is the description of the AppointmentFilterRequestBody for the filter settings that can be sent in the request body:

interface AppointmentFilterRequestBody {
  filterStart: Date;
  filterEnd: Date;
  typeIds: AppointmentType[];
  activationStatusList: AppointmentStatus[];
  publishedStatus: "ALL" | "PUBLISHED" | "UNPUBLISHED";
  tags: string[];
  sortMode: "STARTDATE" | "DEADLINE";
  dateMode: "UPCOMING" | "FROM_DATE";
  page: number;
}

enum AppointmentType {
  Rehearsal = 1,
  Performance = 2,
  Other = 3,
  RehearsalRequest = 4,
  PerformanceRequest = 5,
  Information = 6
}

type AppointmentStatus = "ACTIVE" | "CANCELLED";

/*
NOTES:
- page size is 10
- values of type "Date" have to be in the ISO 8601 offset date-time format "YYYY-MM-DDTHH:mm:ss±hh:mm" (e.g. "2011-12-03T10:15:30+01:00")
*/

Notes:

  • The page size is 10.
  • Values of type Date must be sent in ISO 8601 Offset Date Time format.
    • Format: YYYY-MM-DDTHH:mm:ss±hh:mm
    • Example: 2011-12-03T10:15:30+01:00

Example:

{
  "filterStart": "2025-01-01T00:00:00+01:00",
  "filterEnd": "2025-12-31T23:59:59+01:00",
  "typeIds": [1, 2, 3],
  "activationStatusList": ["ACTIVE", "CANCELLED"],
  "publishedStatus": "PUBLISHED",
  "tags": ["party", "rehearsal", "concert"],
  "sortMode": "STARTDATE",
  "dateMode": "UPCOMING",
  "page": 0
}

The endpoint returns a list of Appointment (see Model).

You can create an appointment in Konzertmeister via the following endpoint. An appointment template is used as the basis for creation. There you can configure all important settings. All members of the active sections who are stored in the template will be invited.

Creating an appointment is done via the following endpoint:

POST {base-url}/api/v4/app/m2m/create

Below is the description of the AppointmentCreateRequestBody for creating an appointment using a template:

interface AppointmentCreateRequestBody {
  name: string;
  description: string;
  startZoned: Date;
  appointmentTemplateExtId: string;
  creatorMail: string;
}

/*
NOTES:
- values of type "Date" have to be in the ISO 8601 offset date-time format "YYYY-MM-DDTHH:mm:ss±hh:mm" (e.g. "2011-12-03T10:15:30+01:00")
*/

Example:

{
  "name": "Board Meeting",
  "description": "Discussion of the most important points for the autumn concert.",
  "startZoned": "2025-11-22T19:30:00+01:00",
  "appointmentTemplateExtId": "APP_TEMP_abb6ea69-1341-4401-9f24-a5609533b7f3",
  "creatorMail": "stefan@example.com"
}
  • appointmentTemplateExtId

    You can view the external template ID in the web app in the details of the appointment templates.

  • creatorMail

    Here you must provide the email address of an account with permission to create appointments in the association. The appointments will be created on behalf of this person.

The response delivers an Appointment (see Model) of the created appointment.

API Models

The return values of the endpoints are documented here.

Below is the description of the Appointment model:

interface Appointment {
  id: number;
  name: string;
  description: string;
  start: Date;
  end: Date;
  typId: AppointmentType;
  active: boolean;
  statusDeadline: Date;
  remindDeadline: Date;
  createdAt: Date;
  timeUndefined: boolean;
  room: Room;
  location: Location;
  meetingPoint: MeetingPoint;
  tags: Tag[];
  publicSharingUrl: string;
  privateLinkURL: string;
  publicsite: boolean;
  timezoneId: string;
  externalAppointmentLink: string;
  published: boolean;
  openAppointment: boolean;
}

enum AppointmentType {
  Rehearsal = 1,
  Performance = 2,
  Other = 3,
  RehearsalRequest = 4,
  PerformanceRequest = 5,
  Information = 6
}

interface Tag {
  id: any;
  tag: string;
  color: string;
}

interface Room {
  id: number;
  name: string;
  description: string;
  capacity: number;
  address: Address;
}

interface Address {
  id: number;
  city: string;
  countryIso3: string;
  geoLocation: {
    latitude: number;
    longitude: number;
  };
  postalCode: string;
  region: string;
  streetline1: string;
  streetline2: string;
}

interface MeetingPoint {
  id: number;
  description: string;
  meetingDateTime: Date;
  meetingLocation: Location;
}

interface Location {
  id: number;
  geo: boolean;
  name: string;
  formattedAddress: string;
  latitude: number;
  longitude: number;
}

/*
NOTES:
- values of type "Date" are delivered in the ISO 8601 UTC date-time format "YYYY-MM-DDTHH:mm:ssZ" (e.g. "2025-07-01T17:00:00Z")
- the "timezoneId" defines the timezone of the appointment (e.g. "Europe/Berlin")
*/

Note:

Values of type Date are delivered in ISO 8601 UTC Date Time format.

  • Format: YYYY-MM-DDTHH:mm:ssZ
  • Example: 2025-07-01T17:00:00Z

Example:

{
   "id": 2670,
   "name": "General Rehearsal",
   "description": "Rehearsal program for autumn concert",
   "start": "2025-12-01T17:00:00Z",
   "end": "2025-12-01T19:00:00Z",
   "typId": 1,
   "active": true,
   "statusDeadline": "2025-07-01T17:00:00Z",
   "remindDeadline": "2025-07-01T15:00:00Z",
   "createdAt": "2025-06-12T08:40:35Z",
   "timeUndefined": false,
   "tags": [],
   "publicSharingUrl": "https://rest.konzertmeister.app/api/v3/app/SHAP_a6ca6738-9c45-460e-8d94-80922213428b/public",
   "privateLinkURL": "https://web.konzertmeister.app/appointment/2670",
   "publicsite": false,
   "timezoneId": "Europe/Berlin",
   "pinnwallLocked": false,
   "externalAppointmentLink": "",
   "published": true,
   "openAppointment": false
}