> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Cal.com

## Überblick

Verbinden Sie Ihre ElevenLabs-KI-Agenten mit [Cal.com](https://cal.com), um Terminplanung und Kalenderbuchungen zu verwalten. Mit dieser Integration können Ihre Agenten Verfügbarkeiten prüfen, Termine buchen, Meetings absagen oder verschieben und bestehende Buchungen per natürlichem Gespräch abrufen.

## Funktionen

| Funktion                  | Unterstützung                                  |
| ------------------------- | ---------------------------------------------- |
| Zero Retention Mode (ZRM) | Nicht unterstützt                              |
| Anhänge in Tools          | Nicht unterstützt — Tools verarbeiten nur Text |

## Einrichtung

Diese Integration verwendet zur Authentifizierung einen **Cal.com API-Schlüssel** (keine OAuth-App).

#### API-Schlüssel in Cal.com erstellen

Öffnen Sie in Ihrem Cal.com-Konto **Settings > Developer > API Keys** und klicken Sie auf **New**. Kopieren Sie den generierten Schlüssel sofort — er wird nicht erneut angezeigt.

#### Live-Schlüssel verwenden

Cal.com erstellt zwei Arten von Schlüsseln — Testschlüssel (beginnend mit `cal_`) und Live-Schlüssel (beginnend mit `cal_live_`). Verwenden Sie einen **Live-Schlüssel**, damit Ihr Agent auf echte Kalenderdaten zugreifen kann.

#### In ElevenLabs verbinden

Fügen Sie in der ElevenLabs-Integrationseinrichtung Ihren Cal.com API-Schlüssel in das Feld **API Key** ein.

## Demo

> **Note**
>
> Diese Demo verwendet ältere Webhook-Tools. Wenn Sie die native Cal.com-Integration verwenden, werden die Tools
> automatisch konfiguriert — eine manuelle Webhook-Einrichtung ist nicht erforderlich.

## So funktioniert es

Der Agent plant Meetings mithilfe von Tool-Aufrufen, die ihn durch den Buchungsprozess führen. Die folgenden Tabs zeigen eine Übersicht und den detaillierten System-Prompt.

#### Überblick

#### Erstanfrage und Meetingdetails

Der Agent fragt nach dem Zweck des Meetings, dem bevorzugten Datum und der Uhrzeit sowie der Dauer, um Planungsinformationen zu erfassen.

#### Kalenderverfügbarkeit prüfen

Der Agent prüft die Kalenderverfügbarkeit, indem er:

* das Tool `get_available_slots` verwendet, um freie Zeitfenster abzurufen.
* prüft, ob die gewünschte Uhrzeit verfügbar ist.
* Alternativen vorschlägt, wenn die gewünschte Uhrzeit nicht verfügbar ist.
* die ausgewählte Uhrzeit mit dem Anrufer bestätigt.

#### Kontaktinformationen erfassen

Sobald eine Uhrzeit vereinbart wurde, führt der Agent Folgendes aus:

* Erfasst und validiert den vollständigen Namen des Teilnehmers.
* Prüft die Richtigkeit der E-Mail-Adresse.
* Bestätigt die Zeitzoneninformationen.
* Erfasst alle weiteren erforderlichen Felder für den Cal.com-Ereignistyp.

#### Meeting erstellen

Der Agent:

* Ruft nach der Prüfung aller Informationen das Tool `book_meeting` auf.
* Folgt der Struktur der Buchungsvorlage.
* Bestätigt dem Teilnehmer die Erstellung des Meetings.
* Informiert ihn darüber, dass er eine Kalendereinladung erhält.

#### Detaillierter System-Prompt

```
You are a helpful receptionist responsible for scheduling meetings using the Cal.com integration. Be friendly, precise, and concise.

Begin by briefly asking for the purpose of the meeting and the caller's preferred date and time.
Then, ask about the desired meeting duration (15, 30, or 60 minutes), and wait for the user's response before proceeding.

Once you have the meeting details, say you will check calendar availability:
- Call get_available_slots with the appropriate date range
- Verify if the requested time slot is available
- If not available, suggest alternative times from the available slots
- Continue until a suitable time is agreed upon

After confirming a time slot, gather the following contact details:
- The attendee's full name
- A valid email address. Note that the email address is transcribed from voice, so ensure it is formatted correctly.
- The attendee's time zone (in 'Continent/City' format like 'America/New_York')
- Read the email back to the caller to confirm accuracy

Once all details are confirmed, explain that you will create the meeting.
Create the meeting by using the book_meeting tool with the following parameters:
- start: The agreed meeting time in ISO 8601 format
- eventTypeId: The appropriate ID based on the meeting duration (15min: 1351800, 30min: 1351801, 60min: 1351802)
- attendee: An object containing the name, email, and timeZone

Thank the attendee and inform them they will receive a calendar invitation shortly.

Clarifications:
- Do not inform the user that you are formatting the email; simply do it.
- If the caller asks you to proceed with booking, do so with the existing information.

Guardrails:
- Do not share any internal IDs or API details with the caller.
- If booking fails, check for formatting issues in the email or time conflicts.
```

## Manuelle Webhook-Einrichtung

> **Note**
>
> Wenn Sie die native Cal.com-Integration verwenden, werden Tools automatisch konfiguriert. Die folgenden Schritte
> gelten nur für die manuelle Webhook-Einrichtung.

#### Ihr Cal.com-Secret speichern

Speichern Sie Ihren API-Schlüssel sicher, bevor Sie authentifizierte Anfragen stellen. Erstellen Sie einen neuen [Cal.com API-Schlüssel](https://cal.com/docs/api-reference/v1/introduction#get-your-api-keys), falls Sie dies noch nicht getan haben.

Die Cal.com API erwartet den folgenden Authentifizierungsheader:

**`Cal request header structure`**

```plaintext Cal request header structure
'Authorization': 'Bearer YOUR_API_KEY'
```

Speichern Sie den Schlüssel im Secret-Speicher des Agenten, damit er sicher und bei Anfragen zugänglich bleibt.

> **Warning**
>
> Um der erwarteten Authentifizierungsstruktur von Cal.com zu entsprechen, denken Sie daran, dem API-Schlüssel beim Erstellen des Secrets `Bearer ` voranzustellen.

![Tool-Secrets](/docs/_fern-img/5ffae070945a86b74975cd9b56679c2bb76f0ce70d05fe7b10e8e5dff6ddd630.webp)

#### Tools zum Agenten hinzufügen

Aktivieren Sie Kalenderbuchungen, indem Sie zwei Tools erstellen:

1. **`get_available_slots`**: Wenn ein Nutzer fragt: *"Ist Louis am Dienstag um 10:30 Uhr frei?"*, verwendet der Agent den [Cal.com-Endpunkt „Get available slots“](https://cal.com/docs/api-reference/v2/slots/find-out-when-is-an-event-type-ready-to-be-booked), um freie Zeitfenster zu prüfen.

2. **`book_meeting`**: Nachdem eine passende Uhrzeit gefunden wurde, bucht der Agent das Meeting über den [Cal.com-Endpunkt „Create a booking“](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking).

Navigieren Sie im Dashboard zum Bereich **Tools** und wählen Sie **Add Tool**. Wählen Sie **Webhook** als Tool-Typ und füllen Sie dann die folgenden Bereiche aus:

#### Tool 1: get_available_slots

#### Konfiguration

Metadaten, anhand derer der Agent bestimmt, wann das Tool aufgerufen werden soll:

| Feld         | Wert                                                                        |
| ------------ | --------------------------------------------------------------------------- |
| Name         | get_available_slots                                                         |
| Beschreibung | Dieses Tool prüft, ob ein bestimmtes Zeitfenster im Kalender verfügbar ist. |
| Methode      | GET                                                                         |
| URL          | [https://api.cal.com/v2/slots](https://api.cal.com/v2/slots)                |

#### Header

Entspricht den [hier](https://cal.com/docs/api-reference/v2/slots/get-available-slots#get-available-slots) definierten Anfrage-Headern:

| Typ    | Name            | Wert                                            |
| ------ | --------------- | ----------------------------------------------- |
| Secret | Authorization   | Wählen Sie den oben erstellten Secret-Schlüssel |
| String | cal-api-version | 2024-09-04                                      |

#### Abfrageparameter

Entspricht den [hier](https://cal.com/docs/api-reference/v2/slots/get-available-slots#get-available-slots) definierten Anfrageparametern:

| Datentyp | Bezeichner  | Erforderlich | Beschreibung                                                                                               |
| -------- | ----------- | ------------ | ---------------------------------------------------------------------------------------------------------- |
| string   | start       | Ja           | Startdatum/-zeit (UTC), ab dem Zeitfenster abgerufen werden, z. B. '2024-08-13T09:00:00Z'.                 |
| string   | end         | Ja           | Enddatum/-zeit (UTC), bis zu dem Zeitfenster abgerufen werden, z. B. '2024-08-13T17:00:00Z'.               |
| string   | eventTypeId | Ja           | Die ID des gebuchten Ereignistyps. Bei 15 Minuten abc zurückgeben. Bei 30 Minuten def. Bei 60 Minuten xyz. |

#### Tool 2: book_meeting

#### Konfiguration

Metadaten, anhand derer der Agent bestimmt, wann das Tool aufgerufen werden soll:

| Feld         | Wert                                                                           |
| ------------ | ------------------------------------------------------------------------------ |
| Name         | book_meeting                                                                   |
| Beschreibung | Dieses Tool bucht ein Meeting im Kalender, sobald eine Uhrzeit vereinbart ist. |
| Methode      | POST                                                                           |
| URL          | [https://api.cal.com/v2/bookings](https://api.cal.com/v2/bookings)             |

#### Header

Entspricht den [hier](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking) definierten Anfrage-Headern:

| Typ    | Name            | Wert                                            |
| ------ | --------------- | ----------------------------------------------- |
| Secret | Authorization   | Wählen Sie den oben erstellten Secret-Schlüssel |
| String | cal-api-version | 2024-08-13                                      |

#### Body-Parameter

Entspricht den [hier](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking) definierten Anfrage-Body-Parametern:

| Bezeichner  | Datentyp | Erforderlich | Beschreibung                                                                                               |
| ----------- | -------- | ------------ | ---------------------------------------------------------------------------------------------------------- |
| start       | String   | Ja           | Die Startzeit der Buchung im ISO-8601-Format in der UTC-Zeitzone, z. B. '2024-08-13T09:00:00Z'.            |
| eventTypeId | Number   | Ja           | Die ID des gebuchten Ereignistyps. Bei 15 Minuten abc zurückgeben. Bei 30 Minuten def. Bei 60 Minuten xyz. |
| attendee    | Object   | Ja           | Die Daten des Teilnehmers. Sie müssen diese Felder vom Nutzer erfassen.                                    |

> **Note**
>
> Die `eventTypeId` muss den Ereignistypen entsprechen, die Ihnen in Cal zur Verfügung stehen. Rufen Sie
> [diesen](https://cal.com/docs/api-reference/v1/event-types/find-all-event-types#find-all-event-types)
> Endpunkt auf, um eine Liste der Ereignistypen Ihres Kontos zu erhalten (oder erstellen Sie ein weiteres Tool,
> das dies automatisch erledigt).

**Teilnehmerobjekt:**

| Bezeichner | Datentyp | Erforderlich | Beschreibung                                                                                                               |
| ---------- | -------- | ------------ | -------------------------------------------------------------------------------------------------------------------------- |
| name       | String   | Ja           | Der vollständige Name der Person, die das Meeting bucht.                                                                   |
| email      | String   | Ja           | Die E-Mail-Adresse der Person, die das Meeting bucht.                                                                      |
| timeZone   | String   | Ja           | Die Zeitzone des Anrufers. Sie sollte im Format „Kontinent/Stadt“ vorliegen, etwa „Europe/London“ oder „America/New_York“. |

> **Success**
>
> Testen Sie den Agenten, indem Sie auf die Schaltfläche **Test AI agent** klicken. Passen Sie den System-Prompt bei Bedarf an.

#### Datum und Uhrzeit berücksichtigen

Standardmäßig kennt der Agent weder das aktuelle Datum noch die aktuelle Uhrzeit. Verwenden Sie einen der folgenden Ansätze:

1. **Tool zum Abrufen der Uhrzeit erstellen**: Fügen Sie ein Tool hinzu, das das aktuelle Datum und die aktuelle Uhrzeit abruft.

2. **Overrides**: Verwenden Sie die Funktion [Overrides](/docs/de/eleven-agents/customization/personalization/overrides), um das aktuelle Datum und die aktuelle Uhrzeit zu Beginn jeder Unterhaltung in den System-Prompt einzufügen.

## Sicherheitsaspekte

* Verwenden Sie HTTPS-Endpunkte für alle Webhook-Aufrufe.
* Speichern Sie vertrauliche Werte als Secrets im ElevenLabs Secrets Manager.
* Validieren Sie, dass alle Autorisierungsheader dem erforderlichen Format entsprechen (`Bearer YOUR_API_KEY`).
* Geben Sie Anrufern niemals Ereignistyp-IDs oder API-Details preis.

## Nützliche Links

* [Cal.com API-Dokumentation](https://cal.com/docs/api-reference/v2/introduction)
* [Leitfaden zu Cal.com API-Schlüsseln](https://cal.com/blog/where-is-my-api-key-and-what-can-it-do)
* [Überblick über ElevenLabs-Tools](/docs/de/eleven-agents/customization/tools/server-tools)