Cal.com

Create Cal.com Booking

Books a Cal.com event for a customer.

Unverified

What the model is told

Book a meeting for the customer. Check availability first, then confirm the exact time, name and email address with the customer before booking. start must be an available slot in UTC. The customer receives a confirmation email. Tell them the booking is made and give the booking uid so they can quote it later.

Request

POSThttps://api.cal.com/v2/bookings

Headers

  • Content-Typeapplication/json
  • cal-api-version2026-02-25
  • AuthorizationBearer YOUR_CAL_API_KEY

Body

{
  "start": "{{start}}",
  "eventTypeSlug": "YOUR_CAL_EVENT_TYPE_SLUG",
  "username": "YOUR_CAL_USERNAME",
  "attendee": {
    "name": "{{name}}",
    "email": "{{email}}",
    "timeZone": "{{timeZone}}"
  }
}

Parameters

  • start stringThe chosen start time in UTC ISO 8601, exactly as returned by the availability check.
  • name stringThe customer's full name.
  • email stringThe customer's email address.
  • timeZone stringThe customer's IANA time zone.

Engage payload

{
  "source": "VOICE_AI",
  "tool": {
    "id": "4bb33b80-b592-4932-a0c5-5b30d4f51deb",
    "type": "HTTP_REQUEST",
    "label": "Create Cal.com Booking",
    "name": "create_cal_com_booking",
    "customName": false,
    "description": "Book a meeting for the customer. Check availability first, then confirm the exact time, name and email address with the customer before booking. start must be an available slot in UTC. The customer receives a confirmation email. Tell them the booking is made and give the booking uid so they can quote it later.",
    "parameters": [
      {
        "name": "start",
        "type": "string",
        "description": "The chosen start time in UTC ISO 8601, exactly as returned by the availability check."
      },
      {
        "name": "name",
        "type": "string",
        "description": "The customer's full name."
      },
      {
        "name": "email",
        "type": "string",
        "description": "The customer's email address."
      },
      {
        "name": "timeZone",
        "type": "string",
        "description": "The customer's IANA time zone."
      }
    ],
    "config": {
      "endpoint": {
        "method": "POST",
        "url": "https://api.cal.com/v2/bookings"
      },
      "headers": [
        {
          "name": "Content-Type",
          "value": "application/json"
        },
        {
          "name": "cal-api-version",
          "value": "2026-02-25"
        },
        {
          "name": "Authorization",
          "value": "Bearer YOUR_CAL_API_KEY"
        }
      ],
      "body": "{\n  \"start\": \"{{start}}\",\n  \"eventTypeSlug\": \"YOUR_CAL_EVENT_TYPE_SLUG\",\n  \"username\": \"YOUR_CAL_USERNAME\",\n  \"attendee\": {\n    \"name\": \"{{name}}\",\n    \"email\": \"{{email}}\",\n    \"timeZone\": \"{{timeZone}}\"\n  }\n}",
      "timeout": null
    }
  }
}

IDs are regenerated on every copy.