Webhook tool

Open Dental AI receptionist that books patients into open slots

The agent finds open slots and creates appointments through Open Dental's REST API, and hands anything clinical to your front desk.

Dental front desk agent

Finds patients and books appointments.

Instructions

Find the patient by name and date of birth. Offer two open slots for the visit length they need and book one. Do not give clinical advice. Transfer anything about pain, medication or insurance details to the front desk.

Handoff
Front desk

Connected tools

  • Find patientWebhook
  • Find open slotsWebhook
  • Book appointmentWebhook
  • Transfer to front deskTransfer

What a Open Dental AI voice agent can do

Open one to watch a call. The grey lines are the tools the agent calls mid-sentence.

The slots endpoint returns open times by length and date, and the agent offers the caller two that fit the visit.

Tool definitions

Webhook tools go to POST /v1/agents/tools. Transfers are a system tool on the agent. Replace the placeholder values in capitals with your own.

Webhook

Find patient

Finds the patient by name and date of birth and returns the PatNum the booking needs.

Show the JSON definition
find_patient
{
  "type": "webhook",
  "name": "find_patient",
  "description": "Finds the caller's patient record by last name, first name and date of birth. Use it before booking, and pass the PatNum it returns to book_appointment.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.opendental.com/api/v1/patients/Simple",
    "method": "GET",
    "query_params_schema": {
      "properties": {
        "LName": {
          "type": "string",
          "description": "The patient's last name."
        },
        "FName": {
          "type": "string",
          "description": "The patient's first name."
        },
        "Birthdate": {
          "type": "string",
          "description": "Date of birth, yyyy-MM-dd."
        }
      },
      "required": [
        "LName",
        "FName",
        "Birthdate"
      ]
    },
    "request_headers": {
      "Authorization": {
        "type": "secret",
        "secret_value": "ODFHIR YOUR_DEVELOPER_KEY/YOUR_CUSTOMER_KEY"
      }
    }
  }
}

Webhook

Find open slots

Returns open appointment times from Open Dental.

Show the JSON definition
find_open_slots
{
  "type": "webhook",
  "name": "find_open_slots",
  "description": "Lists open appointment slots. Use before offering times to a caller.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.opendental.com/api/v1/appointments/Slots",
    "method": "GET",
    "query_params_schema": {
      "properties": {
        "dateStart": {
          "type": "string",
          "description": "First date to search, yyyy-MM-dd."
        },
        "dateEnd": {
          "type": "string",
          "description": "Last date to search, yyyy-MM-dd."
        },
        "lengthMinutes": {
          "type": "integer",
          "description": "Visit length in minutes, such as 60 for a cleaning."
        }
      },
      "required": [
        "dateStart",
        "dateEnd"
      ]
    },
    "request_headers": {
      "Authorization": {
        "type": "secret",
        "secret_value": "ODFHIR YOUR_DEVELOPER_KEY/YOUR_CUSTOMER_KEY"
      }
    }
  }
}

Webhook

Book appointment

Creates the appointment for a patient.

Show the JSON definition
book_appointment
{
  "type": "webhook",
  "name": "book_appointment",
  "description": "Schedules an appointment for a patient in the slot the caller chose.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://api.opendental.com/api/v1/appointments",
    "method": "POST",
    "request_body_schema": {
      "type": "object",
      "properties": {
        "PatNum": {
          "type": "integer",
          "description": "The PatNum returned by find_patient."
        },
        "Op": {
          "type": "integer",
          "description": "The OpNum of the chosen slot."
        },
        "AptDateTime": {
          "type": "string",
          "description": "The chosen slot's DateTimeStart, in yyyy-MM-dd HH:mm:ss format."
        },
        "Pattern": {
          "type": "string",
          "description": "Visit length as X and / characters, one per 5 minutes, such as XXXXXXXXXXXX for 60 minutes."
        }
      },
      "required": [
        "PatNum",
        "Op",
        "AptDateTime"
      ]
    },
    "request_headers": {
      "Authorization": {
        "type": "secret",
        "secret_value": "ODFHIR YOUR_DEVELOPER_KEY/YOUR_CUSTOMER_KEY"
      }
    }
  }
}

Transfer

Transfer to front desk

Cold transfer to the front desk.

Show the JSON definition
transfer_to_front_desk
{
  "config": {
    "system_tools": {
      "transfer_to_number": {
        "description": null,
        "pre_tool_speech": "auto",
        "transfers": [
          {
            "destination": {
              "type": "phone",
              "phone_number": "+14155550103"
            },
            "condition": "The caller has a clinical question, a billing dispute, or asks for a person."
          }
        ]
      }
    }
  }
}

Set it up

No native connector. Open Dental exposes a documented REST API, and you point webhook tools at it with your developer and customer keys. Vendor details read in October 2026.

  1. Enable the API in the office

    Open Dental's API needs an eConnector running at the office and the API enabled in API Setup, where customer keys are created.

  2. Get a developer key

    Open Dental issues developer keys to the party building the integration. Pricing tiers for API developers are on its API page.

  3. Add the webhook tools

    Store the combined Authorization value as a secret header, add the tools, and test against Open Dental's hosted test database first.

  4. Assign a number and call it

    Import your office number or use a Cartesia number, and book a test appointment.

Before you build

Patient data

Open Dental asks API developers to have a Business Associate Agreement with their clients. Settle that, and your own agreements for call data, before real patients call.

Field names are Open Dental's

Parameters such as PatNum and AptDateTime follow Open Dental's Pascal case. Check the Appointments page for the fields your version supports.

Enterprise-grade security

  • HIPAA compliant badge

    HIPAA compliant

  • SOC 2 Type 2 badge

    SOC 2 Type 2

  • GDPR badge

    GDPR

Open Dental AI voice agent FAQs

Can an AI receptionist book appointments in Open Dental?

Yes, through Open Dental's REST API. A Cartesia agent finds the patient by name and date of birth, reads open times from Appointments GET Slots, and books with Appointments POST, using your developer and customer keys. Clinical questions go to the front desk by transfer. There is no native Open Dental connector.

Is an Open Dental AI receptionist HIPAA compliant?

It can be, if every party that touches patient data has a business associate agreement. Open Dental asks API developers to have a BAA with their clients, and Cartesia offers BAAs on its Enterprise plan. The healthcare guide lists what to check.

What does Open Dental need turned on for the API?

An eConnector running at the office and the API enabled in API Setup, where customer keys are created. Open Dental issues a developer key to whoever builds the integration, with pricing tiers on its API page. Test against Open Dental's hosted test database before real patients call.

Can the agent use Open Dental's Local or Service API?

Only through a service of yours in front of it. The Local and Service modes run on the office network, and a webhook tool needs a public HTTPS URL. The tools on this page use the Remote API at api.opendental.com, which needs the office's eConnector running.

Will the AI agent answer clinical questions?

No. Its instructions keep it to scheduling and office questions, and a transfer rule sends anything clinical to the front desk. Transfers only work on Twilio and SIP trunk calls, so import your office number through Twilio or a SIP trunk.

What does an Open Dental voice agent cost to run?

Agents run at $0.03/min, plus LLM usage and telephony. Open Dental bills its API developer tier separately. Telephony comes from the number you use, your imported office number or a Cartesia number.

Get started today

Talk to an expert.

Connect with a member of our team and learn how Cartesia can help you build world-class voice experiences.

Contact Sales

Start building.

Access our models via API and bring a voice agent into production in minutes.

Try Cartesia