REST API · v1.0 · Base URL: api.dialogbot.ca/v1

DialogBot Developer Docs

Integrate DialogBot's voice AI into your dental practice management software. Manage calls, appointments, recall campaigns, and analytics — all via a simple REST API.

Getting Started

Overview

The DialogBot REST API lets you programmatically manage every aspect of your dental practice voice AI — from call routing and appointment booking to recall campaigns and analytics.

Base URL
api.dialogbot.ca/v1
Auth
Bearer token (API key)
Format
JSON (application/json)
Getting Started

Authentication

All API requests must include your API key as a Bearer token in the Authorization header. You can generate and manage API keys from your DialogBot dashboard.

http
Authorization: Bearer db_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Keep your API key secret. Never expose it in client-side code or public repositories. Use environment variables in your backend.

API Key types

db_live_...
Live key

For production use. Affects real patient data and calls.

db_test_...
Test key

For development and testing. No real calls are made.

Getting Started

Quickstart

Make your first API call in under 2 minutes. This example retrieves a list of recent patient calls from your practice.

1. Install the DialogBot SDK (optional)

bash
npm install @dialogbot/node

2. Fetch recent calls

javascript
import DialogBot from '@dialogbot/node';

const client = new DialogBot({
  apiKey: process.env.DIALOGBOT_API_KEY,
});

const calls = await client.calls.list({
  limit: 10,
  status: 'completed',
});

console.log(calls.data);

3. Example response

json
{
  "data": [
    {
      "id": "call_01HXYZ",
      "patient_phone": "+14165550100",
      "direction": "inbound",
      "status": "completed",
      "duration_seconds": 94,
      "intent": "appointment_booking",
      "appointment_booked": true,
      "created_at": "2025-05-10T14:32:00Z"
    }
  ],
  "meta": {
    "total": 1482,
    "page": 1,
    "per_page": 10
  }
}
API Reference

Calls

Retrieve and manage patient call records. All inbound and outbound calls handled by DialogBot are logged and accessible via this endpoint.

GET/callsList all calls
GET/calls/{id}Retrieve a call
GET/calls/{id}/transcriptGet call transcript
GET/calls/{id}/recordingGet call recording URL
POST/calls/outboundInitiate an outbound call

List calls — query parameters

limitintegerNumber of results (default: 20, max: 100)
pageintegerPage number for pagination
statusstringFilter by status: completed, missed, in_progress
directionstringFilter by direction: inbound, outbound
fromISO 8601Start date filter
toISO 8601End date filter
API Reference

Appointments

Create, update, and cancel appointments. DialogBot syncs with your practice management software in real time — changes made via the API are reflected immediately.

GET/appointmentsList appointments
GET/appointments/{id}Retrieve an appointment
POST/appointmentsCreate an appointment
PATCH/appointments/{id}Update an appointment
DELETE/appointments/{id}Cancel an appointment

Create appointment — request body

json
{
  "patient_phone": "+14165550100",
  "patient_name": "Maria Santos",
  "appointment_type": "cleaning",
  "provider_id": "prov_01HXYZ",
  "start_time": "2025-06-15T10:00:00-04:00",
  "duration_minutes": 60,
  "notes": "Patient requested morning slot"
}
API Reference

Recall Campaigns

Create and manage automated recall campaigns. DialogBot will proactively call patients overdue for cleanings, check-ups, or follow-up treatments.

GET/recall/campaignsList recall campaigns
POST/recall/campaignsCreate a campaign
GET/recall/campaigns/{id}/resultsGet campaign results
PATCH/recall/campaigns/{id}Update a campaign
POST/recall/campaigns/{id}/pausePause a campaign
POST/recall/campaigns/{id}/resumeResume a campaign

Create campaign — request body

json
{
  "name": "June Hygiene Recall",
  "type": "hygiene_recall",
  "patient_list": ["pat_01", "pat_02"],
  "script_id": "script_cleaning_en",
  "schedule": {
    "start_date": "2025-06-01",
    "call_window": { "from": "09:00", "to": "17:00" },
    "timezone": "America/Toronto",
    "max_attempts": 3
  }
}
API Reference

Analytics

Pull call volume, booking rates, recall success metrics, and ROI data for your practice or across multiple locations.

GET/analytics/callsCall volume & outcomes summary
GET/analytics/bookingsAppointment booking metrics
GET/analytics/recallRecall campaign performance
GET/analytics/roiRevenue recovery estimate

Call analytics — example response

json
{
  "period": "2025-05-01/2025-05-31",
  "total_calls": 842,
  "answered": 798,
  "missed": 44,
  "answer_rate": 0.948,
  "appointments_booked": 312,
  "booking_conversion_rate": 0.391,
  "avg_call_duration_seconds": 87,
  "top_intents": [
    { "intent": "appointment_booking", "count": 312 },
    { "intent": "general_inquiry", "count": 241 },
    { "intent": "emergency_triage", "count": 89 }
  ]
}
API Reference

Webhooks

Receive real-time event notifications when calls complete, appointments are booked, or recall campaigns reach milestones. Register webhook endpoints from your dashboard.

call.completed

A patient call has ended

call.missed

An inbound call was not answered

appointment.booked

A new appointment was created

appointment.cancelled

An appointment was cancelled

recall.attempt.completed

A recall call attempt finished

recall.campaign.finished

A recall campaign has ended

Webhook payload example — appointment.booked

json
{
  "event": "appointment.booked",
  "created_at": "2025-05-10T14:32:00Z",
  "data": {
    "appointment_id": "appt_01HXYZ",
    "patient_phone": "+14165550100",
    "patient_name": "Maria Santos",
    "appointment_type": "cleaning",
    "start_time": "2025-06-15T10:00:00-04:00",
    "booked_via": "voice_ai",
    "call_id": "call_01HABC"
  }
}
Resources

Error Codes

DialogBot uses standard HTTP status codes. All error responses include a machine-readable code and a human-readable message.

400bad_requestInvalid request body or missing required fields
401unauthorizedMissing or invalid API key
403forbiddenAPI key does not have permission for this action
404not_foundThe requested resource does not exist
409conflictAppointment slot is no longer available
422unprocessableRequest is valid but cannot be processed
429rate_limitedToo many requests — retry after the Retry-After header
500server_errorAn unexpected error occurred on our end
Resources

PHIPA & PIPEDA

All data accessed via the DialogBot API is subject to Ontario's Personal Health Information Protection Act (PHIPA) and Canada's federal PIPEDA. Here's what that means for your integration.

Data residency

All patient data is stored and processed on Canadian servers. API responses never route through non-Canadian infrastructure.

Consent logging

DialogBot logs patient consent for outbound calls. Your integration must not initiate recall calls without a valid consent record.

Audit trail

Every API call that reads or modifies patient data is logged with your API key ID, timestamp, and IP address for PHIPA audit purposes.

Data minimization

Only request the patient fields your integration needs. Avoid storing full call transcripts unless required for your use case.

Resources

SDKs & Libraries

Official DialogBot SDKs are available for the most common backend languages used in dental practice integrations.

Node.js
@dialogbot/node
npm install @dialogbot/node
Python
dialogbot-python
pip install dialogbot
PHP
dialogbot/dialogbot-php
composer require dialogbot/dialogbot-php

Need help with your integration?

Our Ontario-based developer support team is available Monday–Friday, 9am–6pm ET.