meetergo
Ein eigenes Kundenportal ruft eine Terminschnittstelle auf, daneben laufen ein Buchungslink und ein signierter Webhook als getrennte Wege

Calendly API: Leitfaden mit echter Beispiel-Integration

|12 Min. Lesezeit
Dominik Rapacki
Dominik Rapacki
Dominik Rapacki ist CEO und Gründer von meetergo.com und treibt Innovationen im DSGVO-konformen Terminmanagement voran. Als Experte für SaaS, Vertrieb und Digitalisierung ist er regelmäßig in Podcasts zu Gast.
Die Calendly API ist eine REST-Schnittstelle unter api.calendly.com. Sie liest Event-Typen, freie Zeiten, Buchungen und Teilnehmer, und sie kann über die Scheduling-API auch direkt buchen. Authentifiziert wird mit einem Personal Access Token oder über OAuth 2.0.
Zwei von drei Anforderungen brauchen gar keine API. Ein Buchungslink übernimmt das Buchen, ein Webhook meldet das Ergebnis. Die Schnittstelle kommt erst ins Spiel, wenn freie Zeiten in deiner eigenen Oberfläche erscheinen sollen.
Der Tarif entscheidet mit, bevor du eine Zeile Code schreibst. Lesende Aufrufe funktionieren auch im Free-Tarif, ein Webhook-Abo und das direkte Buchen über POST /invitees verlangen einen bezahlten Tarif ab Standard (geprüft am 2. November 2026).
Bei meetergo liegen REST-API und MCP-Server in jedem Tarif, auch im kostenlosen. Webhooks sind ab dem Light-Tarif dabei, Tokens lassen sich auf einzelne Bereiche begrenzen, und die Daten bleiben auf Servern in Nürnberg.

Wer die Calendly API sucht, hat meistens eine von drei Aufgaben vor sich: eine Buchung auslösen, von einer Buchung erfahren oder freie Zeiten anzeigen. Nur die dritte braucht tatsächlich eine Schnittstelle. Für die ersten beiden genügen ein Buchungslink und ein Webhook, beide ohne eigenen Code und ohne Token-Verwaltung. Dieser Unterschied kostet Teams regelmäßig Wochen, weil sie eine Integration bauen, wo ein Link gereicht hätte. Dieser Leitfaden zieht deshalb zuerst die Grenze zwischen den drei Werkzeugen und zeigt dann an einem durchgehenden Beispiel, welche Endpunkte, Berechtigungen und Tarifstufen eine echte Integration voraussetzt.

WerkzeugBuchungslink oder Embed
AufgabeBesucher buchen selbst, die Oberfläche kommt vom Anbieter
VoraussetzungHTML-Snippet, kein Token
WerkzeugWebhook
AufgabeDein System erfährt von Buchung, Absage oder No-Show
VoraussetzungBezahlter Tarif, öffentlich erreichbarer HTTPS-Endpunkt
WerkzeugREST API
AufgabeFreie Zeiten, Event-Typen und Buchungsdaten in deiner eigenen Oberfläche
VoraussetzungToken mit passenden Berechtigungen

Ein Buchungslink ist eine fertige Terminseite, die du verschickst oder per Snippet einbettest, inline, als Popup oder als Button. Du gibst Gestaltung und Ablauf ab und bekommst eine Buchungsstrecke, die du nicht pflegen musst. Für Signaturen, Newsletter und die meisten Kontaktseiten ist das die richtige Antwort. Wie eine solche Buchungsseite im Alltag aufgebaut ist, entscheidet am Ende mehr über die Abschlussquote als die Technik dahinter.

Der Webhook übernimmt das Melden

Ein Webhook läuft in die Gegenrichtung. Sobald jemand bucht, absagt oder nicht erscheint, schickt der Anbieter einen POST an eine URL, die du hinterlegst. Du pollst nichts, du wartest. So landen Buchungen in CRM, Ticketsystem oder Datenbank, ohne eine einzige lesende Anfrage. Ohne eigenes Backend hängst du Zapier oder Make an den Webhook und baust die Logik dort.

Die API übernimmt den Rest

Übrig bleibt der Fall, in dem die Buchungsstrecke dir gehören soll. Ein Mandantenportal, eine Mobile App, ein Voice-Bot am Telefon: hier muss dein Code wissen, welche Slots frei sind, und den Termin selbst anlegen. Dafür ist die Calendly-API da, und nur dafür. Im Zweifel hilft eine Frage: Wer rendert die Zeiten? Rendert sie der Anbieter, brauchst du keine Schnittstelle.

Was die Calendly API in welchem Tarif erlaubt

Die Dokumentation ist an diesem Punkt klar und wird oft überlesen. Lesende und schreibende Aufrufe sind in jedem Tarif möglich, auch im Free-Tarif. Drei Endpunkte hängen am Enterprise-Tarif: das Activity Log und die beiden Löschendpunkte für Teilnehmer- und Termindaten, die für Löschkonzepte relevant sind.

Zwei Dinge sind dagegen hart an einen bezahlten Tarif gebunden. Ein Webhook-Abo kann nur ein Konto anlegen, das laut Dokumentation auf Standard, Teams oder Enterprise liegt. Und das direkte Buchen über die Scheduling-API antwortet Konten im Free-Tarif mit 403 Forbidden (beides geprüft am 2. November 2026).

Dass die Namen in deiner Abrechnung anders aussehen, ist kein Widerspruch: verkauft werden inzwischen Standard Plus und Teams Plus, die Entwicklerdokumentation nennt noch die alten Stufen. Den aktuellen Stand zeigt unsere Übersicht der Calendly-Tarife.

Dazu kommen Limits, die im Lastfall wichtiger sind als jede Feature-Liste:

GrenzeBezahlte Tarife, allgemein
Wert500 Anfragen pro Nutzer und Minute
GrenzeFree-Tarif, allgemein
Wert50 Anfragen pro Nutzer und Minute
GrenzePOST /invitees, bezahlt ohne Enterprise
Wert10 pro Minute, 50 pro Stunde, 100 pro Tag
GrenzePOST /invitees, Testphase
Wert5 pro Tag
GrenzePOST /invitees, Enterprise
Wert500 pro Minute
GrenzeOAuth-Token-Ausgabe
Wert8 Token pro Nutzer und Minute

Gezählt wird pro Nutzer, auch Aufrufe über Drittanbieter-Integrationen. Jede Antwort trägt die Header X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset, bei Überschreitung kommt ein 429 (geprüft am 2. November 2026). Hundert Buchungen pro Tag klingen großzügig, bis ein Portal mit saisonalem Ansturm dagegenläuft.

Beispielprojekt: Beratungstermin aus dem eigenen Mandantenportal

Nehmen wir einen konkreten Fall, der in der DACH-Praxis oft vorkommt. Eine Steuerberatungskanzlei hat ein Mandantenportal. Mandanten sollen dort einen Beratungstermin buchen, ohne das Portal zu verlassen, und jede Buchung soll sofort als Aktivität im CRM auftauchen. Das ist der Fall, in dem API und Webhook zusammenarbeiten müssen.

Schritt 1: Token mit genau den nötigen Berechtigungen ausstellen

Für eine interne Integration reicht ein Personal Access Token. Die Verwaltung liegt im Profilmenü unter Developer, Reiter Personal access tokens. Du gibst dem Token einen Namen, wählst mindestens eine Berechtigung, bestätigst einen Code aus der E-Mail und siehst den Wert genau einmal. Pro Konto sind bis zu zehn Token möglich (geprüft am 2. November 2026).

Ein Detail entscheidet hier über das Risiko: Erstellt ein Organisations-Admin das Token, reicht der Zugriff auf die Calendly-Daten aller Personen in der Organisation. Für unser Portal brauchst du vier Berechtigungen, nicht mehr: event_types:read, availability:read, scheduled_events:write und scheduled_events:read für den späteren Webhook. Schreibrechte schließen die Leserechte derselben Domäne mit ein, du musst sie also nicht doppelt anhaken. Wie du den Wert danach ablegst, behandelt unser Leitfaden zum sicheren Umgang mit API-Schlüsseln.

Sollen später fremde Calendly-Konten dein Portal anbinden, führt der Weg über OAuth 2.0 statt über ein persönliches Token, mit entsprechend mehr Aufwand.

Schritt 2: Event-Typ und freie Zeiten lesen

Der Einstieg ist immer derselbe. Du holst dir die eigene Nutzer-URI, dann die Event-Typen, dann die freien Zeiten:

GET https://api.calendly.com/users/me
GET https://api.calendly.com/event_types?user={user_uri}
GET https://api.calendly.com/event_type_available_times
    ?event_type={event_type_uri}
    &start_time=2026-11-10T00:00:00Z
    &end_time=2026-11-24T00:00:00Z

Zwei Einschränkungen des Verfügbarkeits-Endpunkts solltest du einplanen, bevor du die Portal-Oberfläche entwirfst. Der Zeitraum darf nicht länger als 31 Tage sein, und der Start darf nicht in der Vergangenheit liegen. Außerdem kennt dieser Endpunkt keine klassische Keyset-Paginierung, du bekommst die Liste also am Stück (geprüft am 2. November 2026). Jeder Slot trägt start_time, den Status und das Feld invitees_remaining, das bei Gruppenterminen mehr als eins sein kann.

Für eine Monatsansicht heißt das zwei Aufrufe statt einem, für eine Drei-Monats-Vorschau entsprechend mehr. Dann wird das Minutenlimit zum Thema.

Der direkte Weg ist die Scheduling-API. Sie legt die Buchung an, als wäre sie in der Oberfläche entstanden, inklusive Benachrichtigungen, Kalendereinladung und hinterlegter Automatisierungen:

POST https://api.calendly.com/invitees
{
  "event_type": "https://api.calendly.com/event_types/AAAA",
  "start_time": "2026-11-18T09:00:00Z",
  "invitee": { "name": "M. Berger", "email": "berger@example.de" },
  "questions_and_answers": [ { "question": "Thema", "answer": "Jahresabschluss" } ]
}

Die Antwort ist ein 201 mit der angelegten Teilnehmer-Ressource. Nötig sind scheduled_events:write und ein bezahlter Tarif, höchstens zehn Gäste sind erlaubt, und bei Round-Robin-Event-Typen darf kein location-Objekt mitgehen.

Der leichtere Weg wird oft übersehen. Über POST /scheduling_links erzeugst du einen Einmal-Link mit max_event_count: 1, der auf einen Event-Typ zeigt und als booking_url zurückkommt. Du behältst die Kontrolle darüber, wer buchen darf, und sparst dir die gesamte Slot-Darstellung.

Eine Lücke bleibt in beiden Varianten: Für das Verschieben eines Termins gibt es keinen Endpunkt. Absagen geht per API, Verschieben nicht. Die Umbuchungs- und Absage-URLs liegen auf der Teilnehmer-Ressource und im Webhook-Payload, du reichst also einen Link durch, statt die Logik selbst zu bauen.

Schritt 4: Webhook abonnieren und die Signatur prüfen

Jetzt die Gegenrichtung. Ein Abo legst du über POST /webhook_subscriptions an und wählst dabei, ob es für die ganze Organisation, eine einzelne Person oder eine Gruppe gilt.

Verfügbar sind invitee.created, invitee.canceled, invitee_no_show.created, invitee_no_show.deleted, die drei event_type-Ereignisse, routing_form_submission.created, die drei contact-Ereignisse sowie die Meeting-Recaps. Jede Familie verlangt die passende Leseberechtigung, für die Teilnehmer-Ereignisse also scheduled_events:read. Formular-Einsendungen gibt es nur mit Organisations-Scope, Recaps nur mit Nutzer-Scope (geprüft am 2. November 2026).

Beim Anlegen kannst du einen Signing Key setzen, bei OAuth-Anwendungen wird er automatisch erzeugt. Tu das. Jede Anfrage trägt dann einen Header dieser Form:

Calendly-Webhook-Signature: t=1492774577,v1=5257a869e7ecebeda32affa62cdca3fa...

Du vergleichst den Wert hinter v1= mit der Signatur, die du selbst aus Secret und Rohbody berechnest. Und du prüfst den Zeitstempel hinter t= gegen ein Toleranzfenster, drei Minuten sind ein üblicher Wert, damit ein abgefangener Payload nicht später erneut eingespielt werden kann. Ohne diese zwei Prüfungen ist dein Endpunkt eine offene Tür für jeden, der die URL kennt.

Schritt 5: Die Fehlerfälle, die im Betrieb tatsächlich auftreten

Drei Zahlen solltest du im Kopf haben. Der Verbindungsaufbau läuft nach 10 Sekunden ab, das Lesen der Antwort nach 15. Antwortet dein Endpunkt mit 3xx, 4xx oder 5xx, wiederholt Calendly die Zustellung bis zu 24 Stunden lang mit wachsenden Abständen. Danach wird das Abo deaktiviert und muss neu angelegt werden (geprüft am 2. November 2026).

Daraus folgt ein Entwurfsprinzip: Der Endpunkt quittiert sofort mit 2xx und legt das Ereignis in eine Queue. Die Arbeit, etwa das Anlegen der Aktivität im HubSpot-CRM, passiert asynchron. Wer erst den CRM-Call abwartet, läuft unter Last in den Read-Timeout und verarbeitet die Wiederholungen doppelt.

Häufige Fehler bei der Calendly-API-Integration

  • Token mit allen Berechtigungen ausstellen. Ein Admin-Token mit vollem Satz reicht in die Daten aller Kolleginnen und Kollegen. Hake an, was der Anwendungsfall braucht, und erzeuge für ein zweites Projekt ein zweites Token statt dasselbe weiterzugeben.
  • Den Webhook ohne Signaturprüfung in Produktion nehmen. Die URL steht in jedem Log und in jedem Proxy. Wer sie kennt, kann frei erfundene Buchungen in dein CRM schreiben, solange du nicht prüfst, dass die Nachricht wirklich von Calendly stammt.
  • Verfügbarkeiten lange cachen. Das Feld invitees_remaining ändert sich in Sekunden. Ein zehn Minuten alter Cache produziert genau den Fehler, der Mandanten am meisten ärgert: einen Slot anklicken, der beim Buchen abgelehnt wird.
  • Das Verschieben selbst nachbauen. Es gibt keinen Endpunkt dafür. Jede Eigenkonstruktion aus Absage plus Neubuchung verliert Verlauf, Teilnehmerantworten und Automatisierungen. Reiche die Umbuchungs-URL aus dem Payload durch.
  • Im Free-Tarif entwickeln und bezahlt ausrollen. Webhook-Abo und direktes Buchen laufen im Free-Tarif in ein 403. Wer das erst in der Abnahme merkt, hat die halbe Architektur auf einer Annahme gebaut.

Die Frage, die vor dem ersten Request kommt

Technisch ist die Integration nach wenigen Tagen fertig. Rechtlich beginnt sie dann erst. Calendly ist ein US-Unternehmen mit US-Hosting, und über die API bewegst du mehr personenbezogene Daten als über einen eingebetteten Link: Namen, E-Mail-Adressen und die Antworten aus Intake-Fragen, bei einer Kanzlei also potenziell das Beratungsthema selbst.

Das ist kein Ausschlusskriterium, aber eine Hausaufgabe. Du brauchst einen Auftragsverarbeitungsvertrag für die Terminbuchung, eine dokumentierte Grundlage für den Drittlandtransfer und eine Einschätzung zum CLOUD Act, weil ein US-Mutterkonzern unabhängig vom Serverstandort auskunftspflichtig bleiben kann. Zertifikate wie SOC 2 oder ISO 27001 lösen das nicht, sie betreffen die Sicherheit der Verarbeitung, nicht die Rechtsordnung. Die praktischen Schritte stehen in der Anleitung zum DSGVO-konformen Einbinden von Calendly.

Viele Teams lösen das. Für Kanzleien, Praxen und öffentliche Stellen ist es oft der Punkt, an dem die Architekturentscheidung neu aufgerollt wird.

Wenn die Schnittstelle selbst der Engpass ist

meetergo ist ein in Deutschland gebautes Terminbuchungs- und Vertriebssystem, dessen Schnittstelle von Anfang an als Headless-Engine gedacht ist. Der auffälligste Unterschied im Alltag: REST-API und MCP-Server liegen in jedem Tarif, auch im kostenlosen, und ein POST /booking nimmt eine beliebige Dauer zur Laufzeit an, also auch 17 Minuten, wenn ein Telefon-Agent genau so lange braucht.

Buchen mit dynamischem Kontext

Statt Besucher auf einen vordefinierten Meeting-Typ zu schicken, übergibst du Dauer und Kontext programmatisch, etwa eine Gesprächszusammenfassung, die anschließend in der Kalendereinladung steht. Für den KI-Telefonassistenten ist die API auf Antwortzeiten unter 100 Millisekunden ausgelegt, weil im laufenden Anruf jede Verzögerung hörbar ist.

Eine API für Termin, CRM, Rechnung und Portal

Dieselbe Schnittstelle bedient Kontakte und Deals über /crm, Aufgaben und Notizen, Rechnungen über /invoicing/documents sowie Kundenportale über /space/from-template. Im Kanzlei-Fall entstehen Buchung und CRM-Eintrag damit gegen denselben Host.

Tokens, die nur einen Bereich öffnen

Ein Zugriffstoken lässt sich auf Terminplanung, CRM, Rechnungen, Formulare, Portale oder das Konto begrenzen. Alles außerhalb des gewählten Bereichs beantwortet die API mit 403, auch wenn das Token technisch gültig ist.

Signierte Webhooks mit Secret-Rotation

Die Webhooks folgen dem Standard-Webhooks-Format mit den Headern webhook-id, webhook-timestamp und webhook-signature, und beim Rotieren des Secrets signiert meetergo 24 Stunden lang mit altem und neuem Wert. Du stellst also um, ohne Ereignisse zu verlieren. Neben Buchungen melden sie auch Formular-Einsendungen, unterschriebene Dokumente und Aktivitäten im Kundenportal, erkennbar am Feld webhookType.

Ehrlich bleiben muss man an einer Stelle: Webhooks gibt es erst ab dem Light-Tarif und maximal sechs pro Konto. Wer mehr als sechs Zielsysteme direkt bedienen will, braucht eine Zwischenschicht wie Make oder n8n, die das Ereignis entgegennimmt und verteilt. Und der Integrationskatalog ist kleiner als der von Calendly, auch wenn er mit Pipedrive und den DACH-typischen Branchensystemen die Fälle abdeckt, für die unsere Kunden ihn einsetzen.

Die Daten liegen in Nürnberg auf nach ISO 27001 zertifizierten Servern, und es gibt keinen US-Mutterkonzern, über den ein Zugriff nach fremdem Recht laufen könnte. Details dazu auf der Sicherheitsseite, die Tarifstufen auf der Preisübersicht.

100% DSGVO-konform

API-Keys in unter zwei Minuten

REST API und MCP in jedem TarifKeine Kreditkarte erforderlich
meetergo kostenlos starten

Häufige Fragen zur Calendly API

Brauche ich für die Calendly API einen bezahlten Tarif?

Für lesende und schreibende Aufrufe nicht. GET- und POST-Anfragen sind in jedem Tarif möglich, auch im Free-Tarif, abgesehen von drei Enterprise-Endpunkten für Activity Log und Datenlöschung. Webhook-Abo und direktes Buchen verlangen dagegen einen bezahlten Tarif (geprüft am 2. November 2026).

Wo finde ich meinen Calendly API Key?

Im Profilmenü unter Developer, Reiter Personal access tokens. Dort legst du ein Token an, wählst die Berechtigungen und bestätigst einen Code per E-Mail. Konten, deren Umstellung noch läuft, verwalten Token über die Integrationsseite. Der Wert wird nur einmal angezeigt.

Kann ich über die API einen Termin verschieben?

Nein. Einen Endpunkt zum Umbuchen gibt es nicht, nur einen zum Absagen. Die Umbuchungs- und Absage-URLs findest du auf der Teilnehmer-Ressource und im Webhook-Payload und kannst sie an eigener Stelle in deiner Anwendung ausgeben.

Was passiert, wenn mein Webhook-Endpunkt ausfällt?

Calendly wiederholt die Zustellung bis zu 24 Stunden lang mit wachsenden Abständen. Kommt in dieser Zeit keine erfolgreiche Antwort, wird das Abo deaktiviert und muss neu angelegt werden. Deshalb gehören Monitoring und eine Benachrichtigung bei Fehlern von Anfang an dazu.

Wie prüfe ich, ob ein Webhook echt von Calendly stammt?

Über den Header Calendly-Webhook-Signature. Du berechnest aus dem Signing Key und dem Rohbody die erwartete Signatur und vergleichst sie mit dem Wert hinter v1=. Zusätzlich prüfst du den Zeitstempel hinter t= gegen ein Toleranzfenster, damit alte Nachrichten nicht erneut eingespielt werden können.

Lässt sich die Calendly API an KI-Agenten anbinden?

Ja, neben der REST-API gibt es einen MCP-Server, über den Agenten Terminaktionen aufrufen können. Bei meetergo laufen über 60 MCP-Tools auf demselben Weg, vom Abfragen freier Zeiten bis zum Umbuchen, und der Server steht unter MIT-Lizenz zur Verfügung.

Kostet die API bei Calendly extra?

Ein separates API-Produkt gibt es nicht, die Schnittstelle gehört zum jeweiligen Tarif. Unterschiede entstehen über die Limits und über die Funktionen, die am Tarif hängen. Wer die Tarifgrenzen regelmäßig erreicht, vergleicht an dieser Stelle sinnvollerweise auch DSGVO-konforme Alternativen zu Calendly und die Schnittstelle von Cal.com.

Öfter von meetergo lesen

Ein Klick macht meetergo zu deiner bevorzugten Quelle bei Google. Unsere Artikel erscheinen dann häufiger in deinen Suchergebnissen, im AI-Modus und in AI Overviews.

Bei Google bevorzugen
DSGVO-konform. Auf EU-Servern gehostet.

Terminplanung zuerst. Nur die Apps dazu, die du brauchst.

Starte mit Terminplanung. Formulare, Video, CRM und KI-Notizen aktivierst du nur, wenn sie in deinen Ablauf passen.

Keine Kreditkarte nötig. Jederzeit kündbar.