Vapi Voice AI Integration
Build an AI voice receptionist that answers phone calls, checks your availability, and books appointments automatically using Reservly's API.
What You'll Build
A phone-answering assistant powered by Vapi that can handle three tasks for your callers:
- List your available services and pricing
- Check open time slots for a specific date
- Book an appointment and confirm it with the caller
Prerequisites
- A Reservly account with an API key (write scope). Go to Settings → Integrations to generate one.
- A Vapi account with a phone number provisioned.
Step 1: Get Your Reservly API Key
In your Reservly dashboard, go to Settings → Integrations and click Generate API Key. Select the write scope (needed for booking). Copy the key — you'll paste it into Vapi in the next steps.
Step 2: Create a Vapi Assistant
In the Vapi dashboard, create a new assistant. Give it a name like "Luxe Salon Receptionist" and choose a voice model. The assistant will use custom tools (defined next) to interact with Reservly's API.
Step 3: Add Custom Tools
In Vapi, go to your assistant's Tools section and add three tools. Each tool maps to a Reservly API endpoint.
Tool 1: Check Services
Lists all available services so the caller can choose one.
{
"type": "function",
"function": {
"name": "check_services",
"description": "Get the list of available services with names, durations, and prices.",
"parameters": {
"type": "object",
"properties": {},
"required": []
}
},
"server": {
"url": "https://reservly.io/api/public/luxe-salon/services"
}
}jsonTool 2: Check Availability
Checks open time slots for a given date and service. The assistant will call this after the caller picks a service and date.
{
"type": "function",
"function": {
"name": "check_availability",
"description": "Check available time slots for a specific date and service.",
"parameters": {
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "The date to check in YYYY-MM-DD format."
},
"service_id": {
"type": "string",
"description": "The service ID returned from check_services."
}
},
"required": ["date", "service_id"]
}
},
"server": {
"url": "https://reservly.io/api/public/luxe-salon/slots"
}
}jsonTool 3: Book Appointment
Creates a booking once the caller confirms. Requires your API key in the Authorization header.
{
"type": "function",
"function": {
"name": "book_appointment",
"description": "Book an appointment for the caller. Collect their name, email, chosen service, date, and time first.",
"parameters": {
"type": "object",
"properties": {
"service_id": {
"type": "string",
"description": "The service ID to book."
},
"date": {
"type": "string",
"description": "Booking date in YYYY-MM-DD format."
},
"time": {
"type": "string",
"description": "Booking time in HH:MM format (24-hour)."
},
"customer_name": {
"type": "string",
"description": "The caller's full name."
},
"customer_email": {
"type": "string",
"description": "The caller's email address."
}
},
"required": ["service_id", "date", "time", "customer_name", "customer_email"]
}
},
"server": {
"url": "https://reservly.io/api/public/luxe-salon/book",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer rsvly_YOUR_API_KEY"
}
}
}jsonReplace rsvly_YOUR_API_KEY with your actual Reservly API key and luxe-salon with your business slug.
Step 4: Configure the System Prompt
In Vapi's assistant settings, set the system prompt to define how the assistant behaves. Here is a starting template:
You are a friendly receptionist for Luxe Salon & Spa. Your job is to help callers book appointments over the phone. Follow this flow: 1. Greet the caller warmly. Ask how you can help. 2. If they want to book, use check_services to list available services. Read out the service names and prices. 3. Once they pick a service, ask what date works for them. 4. Use check_availability to find open slots for that date and service. Read out the available times. 5. Once they pick a time, ask for their full name and email address. 6. Use book_appointment to create the booking. 7. Confirm the booking details: service, date, time, and let them know they'll receive a confirmation email. Be conversational and helpful. If no slots are available, suggest the next day. If they ask about something you can't help with, let them know the salon will call them back.text
Step 5: Test Your Assistant
- In Vapi, click Test to start a simulated call.
- Ask to book a haircut for tomorrow.
- Verify the assistant calls
check_services, thencheck_availability, thenbook_appointmentin sequence. - Check your Reservly dashboard — the booking should appear in the Bookings page.
Example Use Case
Luxe Salon & Spaassigns a local phone number through Vapi. When a customer calls, the AI receptionist answers, walks them through available services (haircut, color, blowout), finds an open slot, and books the appointment. The customer receives a confirmation email automatically. The salon owner sees the booking in their dashboard with the source marked as "API".
Next Steps
- REST API Reference— full endpoint documentation
- All Integration Guides— connect with other platforms