Skip to main content

Demo bookings

Demo booking APIs exist in two mounts:

  1. Global — /api/v1/demo-bookings/ (uses active workspace or query param)
  2. Workspace nested — /api/v1/{workspace_id}/leads/demo-bookings/

Global routes​

GET /api/v1/demo-bookings/
POST /api/v1/demo-bookings/create/
POST /api/v1/demo-bookings/check-overlap/
GET /api/v1/demo-bookings/settings/
PATCH /api/v1/demo-bookings/settings/
GET /api/v1/demo-bookings/{booking_id}/
PUT /api/v1/demo-bookings/{booking_id}/update/
DELETE /api/v1/demo-bookings/{booking_id}/delete/
POST /api/v1/demo-bookings/{booking_id}/convert-to-lead/
POST /api/v1/demo-bookings/bulk-convert-to-lead/
Authorization: Bearer <token>

Check overlap (pre-flight)​

Call this before creating a Google Meet or Microsoft Teams calendar event so a slot conflict does not leave an orphan meeting in Outlook/Google.

POST /api/v1/demo-bookings/check-overlap/
Content-Type: application/json
Authorization: Bearer <token>
{
"workspace_id": "20acf86e-f26f-4e70-aaa4-e6097d5a680b",
"start_time": "2026-08-20T15:00:00Z",
"end_time": "2026-08-20T15:30:00Z",
"mode": "microsoft_teams",
"source": "manual"
}
  • 200 → { "ok": true, "available": true }
  • 409 → same demo_booking_time_overlap payload as create
  • Calendly mode/source skips the check (always available here)

Recommended client order for Meet/Teams:

  1. check-overlap
  2. …/integrations/calendar/create-demo-event/ or …/microsoft-calendar/create-demo-event/
  3. …/demo-bookings/create/ with meeting_link + calendar fields

Create booking​

POST /api/v1/demo-bookings/create/
Content-Type: application/json
Authorization: Bearer <token>

Request body​

{
"event_id": "550e8400-e29b-41d4-a716-446655440000",
"lead_name": "Jane Doe",
"lead_email": "jane@example.com",
"scheduled_at": "2026-07-01T14:00:00Z"
}

Response (201 Created)​

{
"id": "dd0e8400-e29b-41d4-a716-446655440008",
"lead_name": "Jane Doe",
"lead_email": "jane@example.com",
"scheduled_at": "2026-07-01T14:00:00Z",
"status": "scheduled",
"event_id": "550e8400-e29b-41d4-a716-446655440000"
}

Convert to lead​

POST /api/v1/demo-bookings/{booking_id}/convert-to-lead/

Creates or links a lead from the demo booking.

Settings​

GET /api/v1/demo-bookings/settings/
PATCH /api/v1/demo-bookings/settings/

Configure demo booking defaults (Calendly integration, etc.).

Webhooks​

  • demo_booking.created
  • demo_booking.updated / demo_booking.status_changed

Integrations​

Calendly sync and booking creation: Calendly guide · API