> 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

## Overzicht

Koppel je ElevenLabs AI-agents aan [Cal.com](https://cal.com) om planning en agendaboekingen te beheren. Met deze integratie kunnen je agents beschikbaarheid controleren, afspraken boeken, vergaderingen annuleren of verzetten en bestaande boekingen opzoeken via een natuurlijk gesprek.

## Mogelijkheden

| Mogelijkheid              | Ondersteuning                                    |
| ------------------------- | ------------------------------------------------ |
| Zero retention mode (ZRM) | Niet ondersteund                                 |
| Bijlagen in tools         | Niet ondersteund — tools werken alleen met tekst |

## Installatie

Deze integratie gebruikt een **Cal.com API-sleutel** voor authenticatie (geen OAuth-app).

#### Genereer een API-sleutel in Cal.com

Ga in je Cal.com-account naar **Settings > Developer > API Keys** en klik op **New**. Kopieer de gegenereerde sleutel meteen — deze wordt niet opnieuw getoond.

#### Gebruik een live-sleutel

Cal.com genereert twee typen sleutels — testsleutels (die beginnen met `cal_`) en live-sleutels (die beginnen met `cal_live_`). Gebruik een **live-sleutel**, zodat je agent toegang heeft tot echte agendagegevens.

#### Koppel in ElevenLabs

Plak je Cal.com API-sleutel in de ElevenLabs-integratieconfiguratie in het veld **API Key**.

## Demo

> **Note**
>
> Deze demo gebruikt verouderde webhooktools. Als je de native Cal.com-integratie gebruikt, worden de tools
> automatisch geconfigureerd — handmatige webhookconfiguratie is niet nodig.

## Zo werkt het

De agent plant vergaderingen door tool calls te gebruiken om het boekingsproces stap voor stap te doorlopen. De tabbladen hieronder tonen een overzicht op hoofdlijnen en de gedetailleerde systeemprompt.

#### Overzicht op hoofdlijnen

#### Eerste aanvraag en vergadergegevens

De agent vraagt naar het doel van de vergadering, de gewenste datum/tijd en de duur om planningsinformatie te verzamelen.

#### Beschikbaarheid in de agenda controleren

De agent controleert de beschikbaarheid in de agenda door:

* De tool `get_available_slots` te gebruiken om beschikbare tijdslots op te halen.
* Te controleren of de aangevraagde tijd beschikbaar is.
* Alternatieven voor te stellen als de aangevraagde tijd niet beschikbaar is.
* De geselecteerde tijd met de beller te bevestigen.

#### Contactgegevens verzamelen

Zodra een tijd is overeengekomen, doet de agent het volgende:

* De volledige naam van de deelnemer verzamelen en valideren.
* Controleren of het e-mailadres klopt.
* Informatie over de tijdzone bevestigen.
* Eventuele aanvullende verplichte velden voor het Cal.com-evenementtype verzamelen.

#### Vergadering maken

De agent:

* Roept de tool `book_meeting` aan nadat alle informatie is gecontroleerd.
* Volgt de structuur van de boekingstemplate.
* Bevestigt dat de vergadering is gemaakt met de deelnemer.
* Informeert de deelnemer dat die een agenda-uitnodiging ontvangt.

#### Gedetailleerde systeemprompt

```
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.
```

## Handmatige webhookconfiguratie

> **Note**
>
> Als je de native Cal.com-integratie gebruikt, worden tools automatisch geconfigureerd. De onderstaande stappen
> gelden alleen voor handmatige webhookconfiguratie.

#### Sla je Cal.com-secret op

Sla je API-sleutel veilig op voordat je geauthenticeerde requests uitvoert. Genereer een nieuwe [Cal.com API-sleutel](https://cal.com/docs/api-reference/v1/introduction#get-your-api-keys) als je dat nog niet hebt gedaan.

De Cal.com API verwacht de volgende authenticatieheader:

**`Structuur van Cal-requestheader`**

```plaintext Structuur van Cal-requestheader
'Authorization': 'Bearer YOUR_API_KEY'
```

Sla de sleutel op in de secretopslag van de agent, zodat deze veilig en toegankelijk is bij het uitvoeren van requests.

> **Warning**
>
> Vergeet niet om bij het maken van het secret `Bearer ` vóór de API-sleutel te zetten, zodat de vereiste authenticatiestructuur van Cal.com overeenkomt.

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

#### Voeg tools toe aan de agent

Schakel agendaboekingen in door twee tools te maken:

1. **`get_available_slots`**: Wanneer een gebruiker vraagt *"Is Louis dinsdag om 10:30 uur vrij?"*, gebruikt de agent het [eindpunt 'Get available slots' van Cal.com](https://cal.com/docs/api-reference/v2/slots/find-out-when-is-an-event-type-ready-to-be-booked) om beschikbare tijdslots te controleren.

2. **`book_meeting`**: Nadat de agent een geschikte tijd heeft gevonden, boekt deze de vergadering met het [eindpunt 'Create a booking' van Cal.com](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking).

Ga naar het gedeelte **Tools** van het dashboard en selecteer **Add Tool**. Kies **Webhook** als type tool en vul vervolgens de volgende secties in:

#### Tool 1: get\_available\_slots

#### Configuratie

Metadata die de agent gebruikt om te bepalen wanneer de tool moet worden aangeroepen:

| Veld         | Waarde                                                                     |
| ------------ | -------------------------------------------------------------------------- |
| Naam         | get\_available\_slots                                                      |
| Beschrijving | Deze tool controleert of een bepaald tijdslot beschikbaar is in de agenda. |
| Methode      | GET                                                                        |
| URL          | [https://api.cal.com/v2/slots](https://api.cal.com/v2/slots)               |

#### Headers

Komt overeen met de requestheaders die [hier](https://cal.com/docs/api-reference/v2/slots/get-available-slots#get-available-slots) zijn gedefinieerd:

| Type   | Naam            | Waarde                                        |
| ------ | --------------- | --------------------------------------------- |
| Secret | Authorization   | Selecteer de hierboven gemaakte secretsleutel |
| String | cal-api-version | 2024-09-04                                    |

#### Queryparameters

Komt overeen met de requestqueryparameters die [hier](https://cal.com/docs/api-reference/v2/slots/get-available-slots#get-available-slots) zijn gedefinieerd:

| Gegevenstype | Identifier  | Verplicht | Beschrijving                                                                                                  |
| ------------ | ----------- | --------- | ------------------------------------------------------------------------------------------------------------- |
| string       | start       | Ja        | Startdatum/-tijd (UTC) vanaf wanneer slots moeten worden opgehaald, bijv. '2024-08-13T09:00:00Z'.             |
| string       | end         | Ja        | Einddatum/-tijd (UTC) tot wanneer slots moeten worden opgehaald, bijv. '2024-08-13T17:00:00Z'.                |
| string       | eventTypeId | Ja        | De ID van het evenementtype dat wordt geboekt. Bij 15 minuten: abc. Bij 30 minuten: def. Bij 60 minuten: xyz. |

#### Tool 2: book\_meeting

#### Configuratie

Metadata die de agent gebruikt om te bepalen wanneer de tool moet worden aangeroepen:

| Veld         | Waarde                                                                         |
| ------------ | ------------------------------------------------------------------------------ |
| Naam         | book\_meeting                                                                  |
| Beschrijving | Deze tool boekt een vergadering in de agenda zodra een tijd is overeengekomen. |
| Methode      | POST                                                                           |
| URL          | [https://api.cal.com/v2/bookings](https://api.cal.com/v2/bookings)             |

#### Headers

Komt overeen met de requestheaders die [hier](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking) zijn gedefinieerd:

| Type   | Naam            | Waarde                                        |
| ------ | --------------- | --------------------------------------------- |
| Secret | Authorization   | Selecteer de hierboven gemaakte secretsleutel |
| String | cal-api-version | 2024-08-13                                    |

#### Bodyparameters

Komt overeen met de requestbodyparameters die [hier](https://cal.com/docs/api-reference/v2/bookings/create-a-booking#create-a-booking) zijn gedefinieerd:

| Identifier  | Gegevenstype | Verplicht | Beschrijving                                                                                                  |
| ----------- | ------------ | --------- | ------------------------------------------------------------------------------------------------------------- |
| start       | String       | Ja        | De starttijd van de boeking in ISO 8601-indeling in de UTC-tijdzone, bijv. '2024-08-13T09:00:00Z'.            |
| eventTypeId | Number       | Ja        | De ID van het evenementtype dat wordt geboekt. Bij 15 minuten: abc. Bij 30 minuten: def. Bij 60 minuten: xyz. |
| attendee    | Object       | Ja        | De gegevens van de deelnemer. Je moet deze velden van de gebruiker verzamelen.                                |

> **Note**
>
> De `eventTypeId` moet overeenkomen met de evenementtypen die je beschikbaar hebt in Cal. Roep
> [dit](https://cal.com/docs/api-reference/v1/event-types/find-all-event-types#find-all-event-types)
> endpoint aan om een lijst met evenementtypen van je account op te halen (of maak een andere tool die dit
> automatisch doet).

**Deelnemerobject:**

| Identifier | Gegevenstype | Verplicht | Beschrijving                                                                                                       |
| ---------- | ------------ | --------- | ------------------------------------------------------------------------------------------------------------------ |
| name       | String       | Ja        | De volledige naam van de persoon die de vergadering boekt.                                                         |
| email      | String       | Ja        | Het e-mailadres van de persoon die de vergadering boekt.                                                           |
| timeZone   | String       | Ja        | De tijdzone van de beller. Moet de indeling 'Continent/Stad' hebben, zoals 'Europe/London' of 'America/New\_York'. |

> **Success**
>
> Test de agent door op de knop **Test AI agent** te drukken. Pas de systeemprompt waar nodig aan.

#### Voeg bewustzijn van datum en tijd toe

Standaard kent de agent de huidige datum of tijd niet. Gebruik een van de volgende methoden:

1. **Maak een tool om de tijd op te halen**: Voeg een tool toe die de huidige datum en tijd ophaalt.

2. **Overrides**: Gebruik de functie [overrides](/docs/nl/eleven-agents/customization/personalization/overrides) om aan het begin van elk gesprek de huidige datum en tijd in de systeemprompt in te voegen.

## Beveiligingsoverwegingen

* Gebruik HTTPS-endpoints voor alle webhookaanroepen.
* Sla gevoelige waarden op als secrets met de ElevenLabs Secrets Manager.
* Controleer of alle autorisatieheaders de vereiste indeling volgen (`Bearer YOUR_API_KEY`).
* Deel nooit ID's van evenementtypen of API-details met bellers.

## Nuttige links

* [Cal.com API-documentatie](https://cal.com/docs/api-reference/v2/introduction)
* [Handleiding voor Cal.com API-sleutels](https://cal.com/blog/where-is-my-api-key-and-what-can-it-do)
* [Overzicht van ElevenLabs-tools](/docs/nl/eleven-agents/customization/tools/server-tools)