Acuity Scheduling is cloud-based appointment scheduling software that allows service businesses to automate bookings, calendar management, intake forms, payments, and client communication. The Acuity Scheduling REST API exposes appointments, clients, calendars, availability, orders, certificates, products, and webhooks, enabling integrations to read scheduling data, programmatically book or cancel appointments, manage clients, and react to scheduling events in real time.
Power end-to-end data operations for your Acuity Scheduling API with Nexla. Our bi-directional Acuity Scheduling connector is purpose-built for Acuity Scheduling, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Acuity Scheduling or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Acuity Scheduling workflows fast, secure, and fully governed.
Features
Type: API
SourceDestination
Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
Request optimization with intelligent batching, retry, and caching to minimize API calls and costs
Acuity Scheduling supports two authentication methods for the REST API, and the credentials required depend on which method best fits the integration scenario. Review the prerequisites for the relevant method below before creating a credential in Nexla.
HTTP Basic Authentication uses your Acuity Scheduling User ID (numeric) and API Key. This method is best for single-account or internal integrations where the application owner is also the Acuity Scheduling account owner.
Scroll to the API section near the bottom of the Integrations page. Acuity Scheduling displays both your numeric User ID and your API Key in this section.
Copy the User ID and the API Key values, and store them securely. These credentials grant full access to your Acuity Scheduling account data, so they should be treated like a password.
If your API Key has been exposed or you want to rotate it, click Reset API Key in the API section of the Integrations page. Resetting the key invalidates the previous value, so any existing integrations using the old key will need to be updated.
OAuth 2.0 is the recommended authentication method for multi-tenant integrations or any application that connects on behalf of other Acuity Scheduling users. Instead of sharing API keys, each Acuity Scheduling user authorizes your application through a standard OAuth 2.0 consent flow.
Register an OAuth 2.0 client application with Acuity Scheduling at acuityscheduling.com/oauth2/register. Provide the requested application details, including the application name, description, and redirect URI.
Redirect URI: Set this to the Nexla OAuth callback URL provided in the Nexla credential overlay. The redirect URI registered with Acuity Scheduling must exactly match the one used during the authorization flow.
After the application is approved, Acuity Scheduling provides a Client ID and Client Secret. Copy and store both values securely — the Client Secret is shown only once.
Confirm that the api-v1 scope is enabled for your application. This is currently the only scope supported by Acuity Scheduling and grants full API access on behalf of the authorizing user.
The Client Secret and API Key values grant access to Acuity Scheduling account data. Store them in a secure secret manager, never commit them to source control, and rotate them immediately if you suspect they have been exposed.
After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.
Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.
Select the authentication method that matches your Acuity Scheduling setup, and complete the corresponding fields.
Acuity Scheduling Authentication Methods
HTTP Basic Authentication
OAuth 2.0
Authenticate using your Acuity Scheduling User ID and API Key. Best suited for single-account or internal integrations where the integration owner is also the Acuity Scheduling account owner.
Enter your numeric Acuity Scheduling **User ID** in the **User ID** field. This value is found in the **API** section under **Integrations** in Acuity Scheduling.
Enter your Acuity Scheduling **API Key** in the **API Key** field. This value is also found in the **API** section under **Integrations** in Acuity Scheduling and is treated as a secret.
Authenticate using a 3-legged OAuth 2.0 flow. Recommended for multi-tenant integrations where Acuity Scheduling users authorize your application directly.
Enter the **Client ID** issued for your registered Acuity Scheduling OAuth application in the **Client ID** field.
Enter the **Client Secret** issued for your registered Acuity Scheduling OAuth application in the **Client Secret** field.
Confirm that the **Access Scope** field is set to `api-v1`, which is the only scope currently supported by Acuity Scheduling.
Click **Authorize** to launch the Acuity Scheduling consent screen. Sign in to the Acuity Scheduling account that will be connected, and approve access for your application.
After the consent screen is approved, Acuity Scheduling redirects back to Nexla with an authorization code. Nexla automatically exchanges this code for an access token and refresh token, and stores the resulting tokens on the credential.
Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Acuity Scheduling connector tile, then select the credential that will be used to connect to the Acuity Scheduling instance, and click Next; or, create a new Acuity Scheduling credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Acuity Scheduling endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.
List Appointments
This endpoint retrieves scheduled appointments from your Acuity Scheduling account. Use it to sync booking data into a warehouse or downstream system, build reporting on appointment volume and revenue, or feed appointment data into a CRM.
All filter parameters on this endpoint are optional. Leave them blank to return appointments using Acuity Scheduling's default behavior, or set specific values to narrow the result set.
Enter the maximum number of appointments to return per request in the Max field. The Acuity Scheduling default is 100 and the API caps this at 250.
Enter the earliest appointment date to include (in YYYY-MM-DD format) in the Min Date field, and the latest appointment date to include in the Max Date field. Date filtering is applied against the appointment's scheduled date.
To restrict results to a single calendar or appointment type, enter the corresponding ID in the Calendarid or Appointmenttypeid field. Calendar IDs can be obtained from the List Calendars endpoint, and appointment type IDs from List Appointment Types.
To filter by client information, enter values in the Firstname, Lastname, Email, or Phone fields. Phone numbers with a leading + must be URL-encoded as %2B (for example, +14155551212 becomes %2B14155551212).
To include or exclude canceled appointments, enter true or false in the Canceled field.
To filter by a custom intake-form field value, enter the desired value in the Custom Field Filter (field:ID) field. The corresponding form field ID is substituted into the URL parameter and can be obtained from the List Forms endpoint.
Set the Exclude Forms field to true to omit intake-form answers from each appointment record. Acuity Scheduling recommends enabling this for list operations because it significantly speeds up responses.
Use the Direction field to control the sort order of returned appointments (ASC or DESC).
The Acuity Scheduling /appointments endpoint does not support offset/page parameters. To paginate, advance the Min Date filter to the latest returned appointment date and re-run the call. For additional reference, see the Acuity Scheduling pagination guidance.
Get Appointment
This endpoint retrieves the full record for a single appointment by ID. Use it to enrich an existing dataset of appointment IDs with the latest details, or to feed downstream systems that operate on individual appointments.
Enter the appointment ID in the Appointment Id field. This field is required. Appointment IDs can be obtained from the List Appointments endpoint or from upstream Nexla data flows.
Set the Include Past Form Answers field to true to include the client's historical intake-form answers from previous appointments, or leave it blank to return only the answers attached to this appointment.
This endpoint returns a single appointment object (not an array). The path to data is set to the response root, so the appointment is treated as the record.
List Appointment Types
This endpoint returns all appointment types configured in the account — the services that clients can book. Use it to sync your service catalog into a warehouse or to populate downstream selectors.
Set the Includedeleted field to true to include soft-deleted appointment types, or leave it blank to return only active types.
List Appointment Add-ons
This endpoint returns all add-on services that clients can attach to an appointment. Use it to keep a catalog of available add-ons synced to a warehouse or downstream system.
No configuration is required for this endpoint beyond selecting it. All available add-ons are returned automatically.
Get Appointment Payments
This endpoint retrieves all payments associated with a specific appointment. Use it to reconcile revenue against bookings or feed billing data into accounting systems.
Enter the appointment ID in the Appointment Id field. By default, the template substitutes the upstream record's id attribute, so the endpoint can be driven by an upstream List Appointments source.
Pair this endpoint with List Appointments as an upstream source to fetch payment details for every appointment in a defined date range.
List Calendars
This endpoint returns all calendars (staff or resources) on the account, including their names, IDs, timezones, and emails. Use it as a reference dataset for calendar IDs needed by other endpoints, or to sync staff/resource metadata.
No configuration is required for this endpoint beyond selecting it. All calendars on the account are returned automatically.
Calendar IDs from this endpoint are required by other endpoints — including List Appointments, List Blocks, Get Available Dates, Get Available Times, and Get Available Classes — when filtering by calendar.
List Clients
This endpoint returns the client list for the account, optionally filtered by a free-text search term. Use it to sync your client base into a CRM, marketing platform, or warehouse.
To narrow the result set, enter a search term in the Search field. The search is matched against client name, email, and phone.
Leave the Search field blank to return all clients on the account.
List Blocks
This endpoint returns blocked-off (unavailable) time periods on calendars — vacations, breaks, or recurring unavailable slots. Use it to feed availability dashboards or sync downtime into other scheduling systems.
Enter the maximum number of blocks to return in the Max field, or leave it blank to use the Acuity Scheduling default.
To restrict results to a specific date range, enter the earliest date (in YYYY-MM-DD format) in the Mindate field and the latest date in the Maxdate field.
To restrict results to a single calendar, enter the calendar ID in the Calendarid field. Calendar IDs can be obtained from the List Calendars endpoint.
List Labels
This endpoint returns all labels available in the Acuity Scheduling account. Labels are used to tag and categorize appointments, and this endpoint exposes the full label catalog.
No configuration is required for this endpoint beyond selecting it. All labels on the account are returned automatically.
List Forms
This endpoint returns all intake forms configured in the Acuity Scheduling account, including each form's questions and field IDs. Use it to map intake-form responses to downstream systems or to look up field IDs needed by List Appointments.
No configuration is required for this endpoint beyond selecting it. All forms on the account are returned automatically.
Field IDs from this endpoint are required to use the Custom Field Filter (field:ID) parameter on the List Appointments endpoint.
Get Available Dates
This endpoint returns the dates within a given month that have availability for a specific appointment type. Use it to surface available booking dates in a custom UI or downstream scheduling assistant.
Enter the target month (in YYYY-MM format, for example 2026-05) in the Month field.
Enter the appointment type ID in the Appointment Type ID field. Appointment type IDs can be obtained from the List Appointment Types endpoint.
Optionally, enter a calendar ID in the Calendar ID field to restrict results to a specific staff member or resource.
Optionally, enter add-on IDs in the Add-on IDs field to compute availability for an appointment that includes specific add-ons. Add-on IDs can be obtained from the List Appointment Add-ons endpoint. Repeat the parameter to pass multiple values.
Optionally, enter a timezone in the Timezone field (for example, America/New_York) to control how availability is calculated.
Get Available Times
This endpoint returns the available appointment times for a specific date, appointment type, and calendar. Use it after Get Available Dates to drill into time-slot availability for a chosen date.
Enter the target date (in YYYY-MM-DD format, for example 2026-05-15) in the Date field.
Enter the appointment type ID in the Appointment Type ID field.
Optionally, enter a calendar ID in the Calendar ID field to restrict results to a specific staff member or resource.
Optionally, enter add-on IDs in the Add-on IDs field to compute availability for an appointment that includes specific add-ons. Repeat the parameter to pass multiple values.
Optionally, enter a timezone in the Timezone field to control how times are returned.
To exclude specific existing appointments from the busy calculation, enter their IDs in the Ignore Appointment IDs field. This is used during a reschedule so the appointment being moved does not block its own slot.
Get Available Classes
This endpoint returns available class sessions for a specified month or date range. Use it to surface class schedules in a custom UI, sync upcoming classes into a warehouse, or feed downstream booking tools.
Restrict the time window by either entering a single month (in YYYY-MM format) in the Month field, or by entering both a Minimum Date and a Maximum Date (both in YYYY-MM-DD format).
Optionally, restrict results to a specific class type by entering the appointment type ID in the Appointment Type ID field, or to a specific calendar by entering the calendar ID in the Calendar ID field.
Optionally, enter a timezone in the Timezone field to control how class times are returned.
Set Include Unavailable to true to include classes that have no remaining capacity, and Include Private to true to include private classes that are not normally shown on the public booking page.
List Certificates
This endpoint returns certificates (gift certificates and coupons) issued in the account, optionally filtered by product, order, appointment type, or customer email. Use it to feed promotions data into downstream analytics or finance systems.
To restrict the result set, enter a value in one or more of the optional fields: Product ID, Order ID, Appointment Type ID, or Email.
Leave all fields blank to return all certificates issued on the account.
List Orders
This endpoint returns orders placed in the Acuity Scheduling account — for packages, subscriptions, gift certificates, or product purchases. Use it to sync revenue and order history into a warehouse or accounting system.
Enter the maximum number of orders to return in the Maximum Results field, or leave it blank to use the Acuity Scheduling default.
Get Order
This endpoint retrieves a single order by ID. Use it to enrich an existing dataset of order IDs with the full order details, including line items and payment status.
Enter the order ID in the Order ID field. Order IDs can be obtained from the List Orders endpoint.
List Products
This endpoint returns all products available in the Acuity Scheduling account — packages, subscriptions, and gift certificates that clients can purchase. Use it to keep a downstream catalog in sync.
Set the Deleted field to true to include soft-deleted products, or leave it blank to return only active products.
Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.
Acuity Scheduling data sources can also be manually configured to ingest data from any valid Acuity Scheduling API endpoint, including endpoints not covered by the pre-built templates, chained API calls — for example, listing appointments and then fetching the payment records for each — or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.
All Acuity Scheduling API URLs use the base https://acuityscheduling.com/api/v1/ followed by the resource path (for example, https://acuityscheduling.com/api/v1/appointments). Most Acuity Scheduling list endpoints (such as /appointments, /clients, /orders) return a top-level JSON array, so the path to data is $[*]; endpoints that return a single object (such as /appointments/{id}) use $ to treat the entire response body as a single record.
When using date/time macros, Acuity Scheduling expects the YYYY-MM-DD format for mindate, maxdate, and date filters and the YYYY-MM format for the month parameter, so the selected macro date format must match the endpoint being called. You do not need to add authentication headers manually — the Authorization header for Basic Auth or OAuth 2.0 is added automatically based on your Acuity Scheduling credential.
Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Acuity Scheduling data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.
Click the + icon on the Nexset that will be sent to the Acuity Scheduling destination, and select the Send to Destination option from the menu. Select the Acuity Scheduling connector from the list of available destination connectors, then select the credential that will be used to connect to the Acuity Scheduling account, and click Next; or, create a new Acuity Scheduling credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Acuity Scheduling endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.
Create Appointment
This endpoint creates a new appointment in Acuity Scheduling. Use it to programmatically book appointments from upstream systems — for example, when a lead converts in a CRM, or when an external scheduling assistant resolves a booking.
Each record in the upstream Nexset must include the fields that Acuity Scheduling requires to book an appointment. The required fields are appointmentTypeID (the appointment type ID, obtainable from the List Appointment Types source endpoint), datetime (the appointment start time in ISO 8601 format, for example 2026-05-15T14:30:00-0500), and the client's firstName, lastName, and email. An optional calendarID selects the calendar to book against; when omitted, Acuity Scheduling assigns the appointment automatically.
The full record is sent as the JSON body of the POST /appointments call. Use the Nexla transform layer to shape upstream attributes into the field names expected by Acuity Scheduling.
Before booking, use the Check Time Availability destination (or the Get Available Times source) to verify the chosen time slot is still available. For full payload reference, see the Acuity Scheduling appointment scheduling docs.
Update Appointment
This endpoint updates an existing appointment — useful for syncing client info changes, intake-form values, labels, or notes back to Acuity Scheduling from a downstream system of record.
Enter the appointment ID in the Appointment ID field. The default value is {{id}}, which substitutes the id attribute from each upstream record — so the destination can be driven directly by a List Appointments source.
The body of each PUT call is the upstream record (as JSON). Include only the fields that should be changed; omitted fields are left untouched.
Updating an appointment does not change its datetime or calendar — use the Reschedule Appointment endpoint for those operations.
Cancel Appointment
This endpoint cancels an existing appointment. The cancellation is irreversible and fires Acuity Scheduling's appointment.canceled webhook to any subscribed listeners.
Enter the appointment ID in the Appointment ID field. This is required.
Set the Admin field to true to cancel as the account admin, which bypasses cancellation rules and allows setting noShow. Set it to false to cancel as the client (subject to your account's cancellation policy).
Set the Skip Email/SMS field to true to suppress the cancellation email and SMS sent to the client.
Because cancellation is irreversible, validate upstream data carefully before activating this destination. Consider routing through a Nexla transform that filters to only the appointments that should genuinely be canceled.
Reschedule Appointment
This endpoint moves an existing appointment to a new datetime, optionally onto a different calendar. It fires the appointment.rescheduled webhook for any subscribed listeners.
Enter the appointment ID in the Appointment ID field. This is required.
The body of each PUT call must include a datetime field with the new appointment time. Acuity Scheduling parses this value using PHP's strtotime in the business timezone — ISO 8601 timestamps are the safest format.
Optionally, include a calendarID in the body to move the appointment to a different calendar.
Before rescheduling, call the Get Available Times source endpoint with the appointment's own ID in Ignore Appointment IDs so its current slot is not seen as busy by itself when computing availability.
Subscribe Webhook
This endpoint registers a webhook subscription with Acuity Scheduling. Use it to programmatically subscribe a Nexla webhook source (or any external listener) to scheduling events without manually configuring webhooks in the Acuity Scheduling UI.
Each record in the upstream Nexset must include an event field (one of appointment.scheduled, appointment.rescheduled, appointment.canceled, appointment.changed, or order.completed) and a target field (the HTTPS URL where Acuity Scheduling should POST the event payload).
Acuity Scheduling allows a maximum of 25 active webhook subscriptions per account.
Acuity Scheduling signs every webhook delivery with an x-acuity-signature header (HMAC-SHA256, keyed with your API key). Verify the signature on receipt before trusting the payload. For full details, see the Acuity Scheduling webhook reference.
Check Time Availability
This endpoint checks whether a specific datetime is available for an appointment type and calendar. Use it as a pre-flight check ahead of Create Appointment or Reschedule Appointment to avoid double-bookings.
Each record in the upstream Nexset must include a datetime field (the slot to check, in ISO 8601 format), an appointmentTypeID field (the appointment type to check), and a calendarID field (the calendar to check).
Enable the Response Webhook option (in the Configure Manually section below, after switching to the Advanced tab) to capture the API response into a Nexla webhook source for downstream branching.
Create Client
This endpoint creates a new client record in Acuity Scheduling. Use it to seed your Acuity Scheduling client list from an external CRM or contact database before bookings are made.
Each record in the upstream Nexset must include firstName and lastName (both required), and may include email, phone (recommended for matching), and notes (optional free-text notes).
The full record is sent as the JSON body of the POST /clients call.
Update Client
This endpoint updates an existing client record. Acuity Scheduling identifies clients by their current first name, last name, and (optionally) phone number rather than by ID, so the lookup fields and the new values are passed in different parts of the request.
Enter the client's current first name in the Lookup First Name field and current last name in the Lookup Last Name field. Both are required, and they are sent as URL query parameters that identify which client to update.
Optionally, enter the client's current phone number in the Lookup Phone field. This is used as a disambiguator when more than one client shares the same first and last name.
The body of each PUT call carries the new values to apply — for example, an updated email, phone, or notes field. Use the Nexla transform layer to split the upstream record into the lookup query params and the body payload.
Because the lookup is by name (not ID), make sure each upstream record contains both the previous and the new values when renaming a client. For complete details, see the Acuity Scheduling update client reference.
Acuity Scheduling destinations can also be manually configured to send data to any valid Acuity Scheduling API endpoint, including custom URL patterns, query parameters, or batch settings not covered by the pre-built templates. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.
The Acuity Scheduling API expects application/json for all write endpoints, so JSON is the appropriate Content Format for every Acuity Scheduling destination. For update or state-change operations, include the appointment or order ID at the end of the URL — Nexla macros can substitute the ID from each upstream record (for example, https://acuityscheduling.com/api/v1/appointments/{id}). The Authorization header and Content-Type header are added automatically based on your credential and the selected Content Format.
The Acuity Scheduling API does not natively support batched create/update calls — each appointment, client, or webhook is created with its own request — so record batching is best left disabled for Acuity Scheduling destinations. Enabling the response webhook option is particularly useful for Create Appointment (to capture the new appointment ID), Check Time Availability (to branch on the availability result), and Subscribe Webhook (to capture the new webhook subscription ID).
Important
Test payloads sent to write endpoints (such as Create Appointment, Cancel Appointment, or Reschedule Appointment) will make real, irreversible changes in your Acuity Scheduling account. Use a sandbox or test account before sending test data against a production Acuity Scheduling account.
Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To begin sending data to Acuity Scheduling, open the destination resource menu, and select Activate.
The Nexset data will not be sent to Acuity Scheduling until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.