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.
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
Request Body
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
Datemust 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
-
Format:
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
}
Response
The endpoint returns a list of Appointment (see Model).
Creating an appointment with template
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
Request Body
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"
}
Input values
appointmentTemplateExtIdYou can view the external template ID in the web app in the details of the appointment templates.
creatorMailHere 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.
Response
The response delivers an Appointment (see Model) of the created appointment.
API Models
The return values of the endpoints are documented here.
Appointment
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
}