Calendly

Book Calendly Meeting

Books a Calendly event for a customer at a free time.

Unverified

What the model is told

Book a meeting for the customer. First check availability, then confirm the exact time, name and email address with the customer before booking. start_time must be an available slot exactly as returned, in UTC. The customer receives a Calendly confirmation email. Tell them the booking is made, or that the slot was taken if it fails and offer another time.

Request

POSThttps://api.calendly.com/invitees

Headers

  • Content-Typeapplication/json
  • AuthorizationBearer YOUR_CALENDLY_PERSONAL_ACCESS_TOKEN

Body

{
  "event_type": "https://api.calendly.com/event_types/{{eventTypeId}}",
  "start_time": "{{startTime}}",
  "invitee": {
    "name": "{{name}}",
    "email": "{{email}}",
    "timezone": "{{timezone}}"
  }
}

Parameters

  • eventTypeId stringThe UUID of the Calendly event type, the last part of its API URI.
  • startTime stringThe chosen start time in UTC, 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": "c4a489a1-3d90-4c00-a211-fd296e8889de",
    "type": "HTTP_REQUEST",
    "label": "Book Calendly Meeting",
    "name": "book_calendly_meeting",
    "customName": false,
    "description": "Book a meeting for the customer. First check availability, then confirm the exact time, name and email address with the customer before booking. start_time must be an available slot exactly as returned, in UTC. The customer receives a Calendly confirmation email. Tell them the booking is made, or that the slot was taken if it fails and offer another time.",
    "parameters": [
      {
        "name": "eventTypeId",
        "type": "string",
        "description": "The UUID of the Calendly event type, the last part of its API URI."
      },
      {
        "name": "startTime",
        "type": "string",
        "description": "The chosen start time in UTC, 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.calendly.com/invitees"
      },
      "headers": [
        {
          "name": "Content-Type",
          "value": "application/json"
        },
        {
          "name": "Authorization",
          "value": "Bearer YOUR_CALENDLY_PERSONAL_ACCESS_TOKEN"
        }
      ],
      "body": "{\n  \"event_type\": \"https://api.calendly.com/event_types/{{eventTypeId}}\",\n  \"start_time\": \"{{startTime}}\",\n  \"invitee\": {\n    \"name\": \"{{name}}\",\n    \"email\": \"{{email}}\",\n    \"timezone\": \"{{timezone}}\"\n  }\n}",
      "timeout": null
    }
  }
}

IDs are regenerated on every copy.