Webhook tool

Acuity Scheduling AI receptionist that books by phone

The agent reads open times for an appointment type from Acuity and books the one the caller picks, with the same checks as an online booking.

Booking agent

Offers open times and books Acuity appointments.

Instructions

Ask which service the caller wants and which day suits them. Offer two open times and book the one they pick. Spell the email back before booking. Transfer reschedules and questions about payments, packages or gift certificates to the front desk.

Handoff
Front desk

Connected tools

  • Get available timesWebhook
  • Book appointmentWebhook
  • Transfer to front deskTransfer

What a Acuity Scheduling AI voice agent can do

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

The agent asks Acuity for open times on the day the caller wants, for one appointment type, and reads two of them back.

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

Get available times

Lists open times for one appointment type on a date.

Show the JSON definition
get_available_times
{
  "type": "webhook",
  "name": "get_available_times",
  "description": "Lists open start times for the appointment type on one date. Use it before offering times.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://acuityscheduling.com/api/v1/availability/times",
    "method": "GET",
    "query_params_schema": {
      "properties": {
        "appointmentTypeID": {
          "type": "string",
          "constant_value": "12345678"
        },
        "date": {
          "type": "string",
          "description": "The date to check, YYYY-MM-DD."
        },
        "timezone": {
          "type": "string",
          "constant_value": "America/New_York"
        }
      },
      "required": [
        "date"
      ]
    },
    "authentication": {
      "mode": "basic_auth",
      "username": "YOUR_ACUITY_USER_ID",
      "password": {
        "type": "secret",
        "secret_value": "YOUR_ACUITY_API_KEY"
      }
    }
  }
}

Webhook

Book appointment

Creates the appointment at the chosen time.

Show the JSON definition
book_appointment
{
  "type": "webhook",
  "name": "book_appointment",
  "description": "Books the appointment at a time returned by get_available_times.",
  "pre_tool_speech": "auto",
  "execution_mode": "immediate",
  "response_timeout_secs": 20,
  "api_schema": {
    "url": "https://acuityscheduling.com/api/v1/appointments",
    "method": "POST",
    "request_body_schema": {
      "type": "object",
      "properties": {
        "appointmentTypeID": {
          "type": "integer",
          "constant_value": 12345678
        },
        "datetime": {
          "type": "string",
          "description": "The chosen start time, exactly as get_available_times returned it."
        },
        "firstName": {
          "type": "string",
          "description": "Caller's first name."
        },
        "lastName": {
          "type": "string",
          "description": "Caller's last name."
        },
        "email": {
          "type": "string",
          "description": "Caller's email, spelled back to them."
        },
        "phone": {
          "type": "string",
          "dynamic_variable": "system__caller_id"
        },
        "timezone": {
          "type": "string",
          "constant_value": "America/New_York"
        }
      },
      "required": [
        "datetime",
        "firstName",
        "lastName",
        "email"
      ]
    },
    "authentication": {
      "mode": "basic_auth",
      "username": "YOUR_ACUITY_USER_ID",
      "password": {
        "type": "secret",
        "secret_value": "YOUR_ACUITY_API_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": "+14155550132"
            },
            "condition": "The caller wants to reschedule, asks about payments, packages or gift certificates, or asks for a person."
          }
        ]
      }
    }
  }
}

Set it up

No native connector. The tools call Acuity's API directly with HTTP Basic auth, using your numeric User ID and an API key stored as a secret. Vendor details read in November 2026.

  1. Copy your API credentials

    In Acuity, open Integrations and copy your numeric User ID and API key. Store the key as the secret password on both tools.

  2. Find the appointment type

    Call GET /appointment-types once to get the ID of the service the agent books, and set it as a constant on both tools.

  3. Set the time zone

    Pass your business's IANA time zone, such as America/New_York, so the times the agent reads match what clients see online.

  4. Book a test appointment

    Book from a test call, check it in Acuity and the confirmation email, then cancel it.

Before you build

Leave admin mode off

With admin=true Acuity skips availability and form checks. Without it, a booking is validated the same way as one made online.

Required fields

A client booking needs firstName, lastName and email, and your account settings may also require a phone number. Required intake form fields go in the fields array.

Enterprise-grade security

  • HIPAA compliant badge

    HIPAA compliant

  • SOC 2 Type 2 badge

    SOC 2 Type 2

  • GDPR badge

    GDPR

Acuity Scheduling AI voice agent FAQs

Can an AI receptionist book Acuity Scheduling appointments?

Yes, through Acuity's API. A Cartesia agent reads open times from GET /availability/times and books with POST /appointments, using your numeric User ID and an API key over HTTP Basic auth. There is no native connector or service in between. Acuity checks the booking as if the client booked online.

What details does Acuity need from the caller to book?

First name, last name and email, plus a phone number if your account settings require one. Required intake form fields go in the booking's fields array. The agent spells the email back before it books.

Can the agent book more than one Acuity appointment type?

Yes. Add a pair of tools per appointment type, or replace the appointment type constant with a description and list the IDs in the agent's instructions so it picks one. Get the IDs once from GET /appointment-types.

Can callers reschedule Acuity appointments by phone?

Yes, with another tool on Acuity's PUT /appointments/:id/reschedule endpoint, which needs the appointment ID. The tools on this page only read times and book, so without that tool the agent transfers reschedules to the front desk.

What does an Acuity Scheduling voice agent cost to run?

Agents run at $0.03/min, plus LLM usage and telephony. Acuity bills its own plan separately. Transfers work only on Twilio and SIP trunk numbers, not on Cartesia numbers, so put the number on Twilio or a SIP trunk if the agent hands callers to staff.

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