Overview

Using the API, experienced users can connect the calendar to other systems, such as Make.com (Integromat).

This feature is available in the Premium version

API Key

You can create and manage API keys in the admin settings under API. The API key must be included as a header in every request:

X-API-KEY: {{YOUR_API_KEY}}

Retrieve Appointments

Retrieve a list of all appointments within a specific time period:

curl --location --request GET 'https://api.calendar.online/public/event?startDate=2021-01-01&endDate=2025-01-01&timeZone=Europe/Berlin&query=' \
--header 'X-API-KEY: {{YOUR_API_KEY}}'

Retrieve a single event

curl --location --request GET 'https://api.calendar.online/public/event/{{EVENT_ID}}?timeZone=Europe/Berlin' \
--header 'X-API-KEY: {{YOUR_API_KEY}}'

Create appointment

curl --location --request POST 'https://api.calendar.online/public/event' \
--header 'X-API-KEY: {{YOUR_API_KEY}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "startDate": "2025-07-01 12:00:00",
    "endDate": "2025-07-01 13:00:00",
    "timeZone": "Europe/Berlin",
    "title": "API Test",
    "subCalendars": [{{SUBCALENDAR_ID/SUBCALENDAR_NAME}}],
    "description": "",
    "who": "",
    "where": "",
    "wholeDay": false,
    "links": []
}'

Change Event

curl --location --request PUT 'https://api.calendar.online/public/event/{{EVENT_ID}}' \
--header 'X-API-KEY: {{YOUR_API_KEY}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "startDate": "2025-07-01 13:00:00",
    "endDate": "2025-07-01 14:00:00",
    "timeZone": "Europe/Berlin",
    "title": "API Test",
    "subCalendars": [{{SUBCALENDAR_ID/SUBCALENDAR_NAME}}],
    "description": "",
    "who": "",
    "where": "",
    "wholeDay": false,
    "links": []
}'

Delete Event

curl --location --request DELETE 'https://api.calendar.online/public/event/{{EVENT_ID}}' \
--header 'X-API-KEY: {{YOUR_API_KEY}}'

Create subcalendar

curl --location --request POST 'https://api.calendar.online/public/subcalendar' \
--header 'X-API-KEY: {{YOUR_API_KEY}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "API Test"
}'

Edit subcalendar

curl --location --request POST 'https://api.calendar.online/public/subcalendar/{{SUBCALENDAR_ID}}' \
--header 'X-API-KEY: {{YOUR_API_KEY}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "API Test"
}'

Delete subcalendar

curl --location --request DELETE 'https://api.calendar.online/public/subcalendar/{{SUBCALENDAR_ID}}' \
--header 'X-API-KEY: {{YOUR_API_KEY}}'

Webhooks

Webhooks allow you to set up automatic notifications and integrations with other systems. The following events can be triggered:

  • Appointment created

  • Appointment modified

  • Appointment deleted

Set up a webhook

Go to the API under API Keys and click the Webhooks button. Click + New Webhook and enter the relevant data.


Webhooks


Placeholder for webhooks:

{{EVENT_ID}} Appointment ID

{{REQUEST_TYPE}} CREATE, UPDATE, or DELETE

{{START_DATE}} Start time (local)

{{END_DATE}} End time (local)

{{WHOLEDAY}} All-day event (true/false)

{{TITLE}} Title

{{DESCRIPTION}} Description

{{WHO}} Who

{{WHERE}} Where

{{LINKS}} Links (array)

{{SUBCALENDARS}} Subcalendars (comma-separated string)

{{TIMEZONE}} Time zone