For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
WebsiteStatusSupportDashboard
DocumentationAPI ReferenceMCPSDKsCLI (new)What's New?
DocumentationAPI ReferenceMCPSDKsCLI (new)What's New?
  • Get started
    • Introduction
    • Phone calls
    • Web calls
    • Vapi Guides
    • Composer
    • CLI quickstart
  • Assistants
    • Quickstart
    • Tools
    • Custom keywords
    • Custom voices
    • Custom transcriber
    • Custom TTS
      • Appointment scheduling
      • Lead qualification
      • Inbound support
      • Voice widget
      • Documentation agent
      • Support escalation
      • Multilingual agent
  • Observability
    • Boards
  • Squads
    • Quickstart
    • Overview
    • Handoff tool
    • Passing data between assistants
  • Best practices
    • Prompting guide
    • Debugging voice agents
    • Enterprise environments (DEV/UAT/PROD)
    • IVR navigation
  • Phone numbers
    • Free Vapi number
    • Inbound SMS
    • Phone Number Hooks
  • Calls
    • Call end reasons
    • Troubleshoot call errors
  • Outbound Campaigns
    • Quickstart
    • Overview
  • Chat
    • Quickstart
    • Streaming
    • Non-streaming
    • OpenAI compatibility
    • Session management
    • Variable substitution
    • SMS chat
    • Web widget
    • Webhooks
  • Workflows
    • Quickstart
    • Overview
LogoLogo
WebsiteStatusSupportDashboard
On this page
  • Overview
  • Prerequisites
  • 1. Prepare data (optional)
  • 2. Create calendar tools
  • 3. Create the assistant
  • 4. Make calls
  • 5. Test and validate
  • Next steps
AssistantsExamples

Appointment scheduling assistant

Build an AI receptionist that books, reschedules, and cancels appointments using Assistants and tools
Was this page helpful?
Edit this page
Previous

Lead qualification assistant

Build an outbound sales assistant that qualifies leads and books meetings using tools
Next
Built with

Overview

Build an AI-powered appointment scheduling assistant that handles inbound calls for booking, rescheduling, and canceling appointments. This approach uses a single Assistant with tools for calendar availability, customer lookups, and confirmations.

Assistant Capabilities:

  • Real-time availability checks and booking
  • Reschedule and cancel with confirmation
  • Customer verification and data lookups
  • SMS/email confirmations via tools

What You’ll Build:

  • An assistant with a focused prompt for scheduling flows
  • Tools for calendar availability and booking
  • Optional CSV knowledge bases for customers/services
  • A phone number attached to your assistant

Prerequisites

  • A Vapi account
  • Google Calendar or a scheduling backend

1. Prepare data (optional)

Use sample CSVs for customers, services, and appointments during development.

1

Download sample spreadsheets

2

Upload files (optional)

Dashboard
TypeScript (Server SDK)
Python (Server SDK)
  1. Open your Vapi Dashboard → Files
  2. Upload the three CSVs and note their file IDs

2. Create calendar tools

Use the Google Calendar integration for availability and booking, or your own API via a custom tool.

Use Google Calendar (recommended)
Custom tools (HTTP)

See: Google Calendar Integration

Configure tools for:

  • check_availability(service, date)
  • book_appointment(customer, service, time)
  • reschedule_appointment(appointmentId, time)
  • cancel_appointment(appointmentId)

3. Create the assistant

Dashboard
TypeScript (Server SDK)
Python (Server SDK)
1

Create assistant

  • Go to Assistants → Create Assistant → Blank template
  • Name it Receptionist
2

Configure system prompt

System Prompt
You are an AI receptionist for a barbershop. Your goals:
1) Verify the customer
2) Offer booking, rescheduling, or cancellation
3) Confirm details and send a confirmation
When needed, call tools: check_availability, book_appointment, reschedule_appointment, cancel_appointment.
Keep replies under 30 words. Confirm date/time clearly.
3

Attach tools

Add your scheduling tools to the assistant and publish.


4. Make calls

TypeScript (Server SDK)
Python (Server SDK)
cURL (web)
cURL (phone)
create web call
1import { VapiClient } from "@vapi-ai/server-sdk";
2
3const vapi = new VapiClient({ token: process.env.VAPI_API_KEY! });
4
5await vapi.calls.create({
6 transport: { type: "web" },
7 assistant: { assistantId: "your-assistant-id" }
8});
create phone call
1await vapi.calls.create({
2 phoneNumberId: "your-phone-number-id",
3 customer: { number: "+15551234567" },
4 assistant: { assistantId: "your-assistant-id" }
5});

5. Test and validate

1

Attach a phone number

Create a phone number and assign your assistant. See Phone calls quickstart.

2

Test scenarios

  • New booking → check availability → book → confirm
  • Reschedule existing appointment → confirm
  • Cancel appointment → confirm

Next steps

  • Tools: Google Calendar, Custom Tools
  • Structured outputs: Extract structured data
  • Multichannel: Web integration