Booking Lifecycle
Create a Booking
Request Body
*Either
hostIds or queueId is required
Attendee Object
*Not required when
phoneOnlyBooking is true and the meeting type has allowPhoneOnlyBooking enabled. See Voice AI Bot for details.
See Create Booking API Reference for full field documentation, examples with custom ICS content, and UTM tracking.
Response (Standard)
Store the
secret to cancel or reschedule without authentication.Response (Double Opt-In)
If the meeting type requires email confirmation:Get Appointments
Get Paginated Appointments
Get Single Appointment
Response
Cancel an Appointment
As Host (Authenticated)
With Secret (Unauthenticated)
For self-service cancellation by attendees:- Cancellation emails to all parties
booking_cancelledwebhook event- Calendar event removal (if integrated)
Reschedule an Appointment
With Secret (Unauthenticated)
As Host (Authenticated)
Response
- Updated calendar invites
- Notification emails
booking_rescheduledwebhook event
Meeting Transcription & Summary
After a meeting takes place, you can attach a transcription and/or an AI-generated summary. Both fields accept markdown-formatted text, making them ideal for structured meeting records. This is designed for integrations with transcription services (e.g. Otter.ai, Fireflies, Whisper), AI meeting assistants, or any tool that produces meeting records.Update Transcription
Request Body
Reading Transcription Data
Thetranscription and summary fields are included in the appointment response when you fetch an appointment:
Both fields are
null by default until populated. They are returned in all authenticated appointment endpoints (single, paginated, today, current).Form Fields and UTM Parameters
Pass form field responses and UTM tracking data viaattendee.notes:
- Included in webhook payloads
- Visible in the dashboard
- Synced to CRM integrations (UTM parameters can be mapped to Salesforce fields via Integrations → Salesforce → Settings)
Round-Robin Bookings
For team meeting types, usequeueId instead of hostIds:
- Round-robin rotation
- Current availability
- Existing bookings
Error Handling
Time Slot Unavailable
Invalid Duration
Missing Host
hostIds array or queueId.
Best Practices
Always query availability first - Don’t book without checking available slots
Store the secret - You’ll need it for self-service cancel/reschedule
Handle race conditions - Slots can be booked between availability query and booking
Use webhooks - Get real-time notifications instead of polling