Back

Acuity Scheduling API Essential Guide

Aug 11, 20246 minute read

What type of API does Acuity Scheduling provide?

Acuity Scheduling uses a REST API.

Key points:

  • Acuity Scheduling provides a RESTful API for developers to integrate with their platform.

  • The API allows developers to perform actions like creating appointments, checking availability, managing clients, etc. through standard HTTP methods.

  • API requests are made to endpoints like https://acuityscheduling.com/api/v1/appointments using HTTP verbs like GET, POST, PUT, DELETE.

  • The API uses JSON for data exchange.

Code example:

Here's a sample API request to create an appointment using Acuity's REST API:

POST https://acuityscheduling.com/api/v1/appointments { "datetime": "2016-12-03T14:00:00-0800", "appointmentTypeID": 1, "firstName": "Bob", "lastName": "McTest", "email": "[email protected]", "fields": [{ "id": 1, "value": "Party time!" }] }

Best practices:

  • Use server-side requests to make API calls, as client-side requests would expose API credentials.

  • Refer to the API documentation for details on available endpoints, request/response formats, and authentication.

  • Handle API errors and rate limits appropriately in your integration.

In summary, Acuity Scheduling provides a standard REST API that follows common REST principles, making it straightforward to integrate with for developers familiar with RESTful web services.

Does the Acuity Scheduling API have webhooks?

Yes, the official Acuity Scheduling API does have webhooks. Here are the key details about Acuity's webhook functionality:

Webhook Support

Acuity offers both static webhooks that can be set up in the account settings, as well as dynamic webhooks that can be created via the API.

Event Types

The webhook events you can subscribe to include:

  • appointment.scheduled
  • appointment.rescheduled
  • appointment.canceled
  • appointment.changed
  • order.completed

Key Points

  • Webhooks notify a specified URL when events like appointments being scheduled, canceled, or rescheduled occur.
  • Webhook requests are POST requests with form-encoded data containing details like the action, appointment ID, calendar ID, etc.
  • There is a limit of 25 webhooks that can be created per Acuity account.
  • Webhooks are signed using your API key, allowing you to verify the authenticity of notifications.
  • Failed webhook calls are retried with exponential backoff over a 24 hour period.

Creating Webhooks

  • Static webhooks can be set up in the Acuity account settings under Integrations.
  • Dynamic webhooks can be created programmatically using the Webhooks API.

Best Practices

  • Verify webhook signatures to ensure notifications are authentic.
  • Handle retries and implement proper error handling for webhook endpoints.
  • Use HTTPS (port 443) for webhook URLs for security.

In summary, Acuity provides a robust webhook system that allows you to receive real-time notifications for key scheduling events, with options for both static and dynamic webhook creation.

Rate Limits and other limitations

Based on the search results provided, here are the key points about the API Rate Limits for the Acuity Scheduling API:

Rate Limits

The Acuity Scheduling API has the following rate limits:

  • 10 requests per second
  • 20 concurrent connections

If these limits are exceeded, the API will return a 429 Too Many Requests error with the following response:

{ "status_code": 429, "error": "too_many_requests", "message": "Rate limit reached. Limit 10req/s and 20 concurrent connections." }

Key Considerations

  • The rate limits apply per IP address.
  • Exceeding the limits will result in requests being blocked temporarily.
  • There is no mention of different rate limits for authenticated vs unauthenticated requests.
  • No information is provided on whether these limits can be increased for enterprise customers.

Best Practices

  • Implement proper error handling to catch 429 errors and back off/retry requests as needed.
  • Consider caching API responses where possible to reduce the number of requests made.
  • Batch API calls when feasible to stay within the rate limits.
  • Monitor your API usage to ensure you are not approaching the limits.

Additional Notes

  • The API uses HTTP Basic Auth for authentication.
  • A maximum of 25 webhooks can be created per Acuity account.
  • The documentation does not provide details on whether there are any daily or monthly request quotas in addition to the per-second limits.

In summary, the Acuity Scheduling API has fairly standard rate limiting in place to prevent abuse and ensure fair usage across clients. Developers should be aware of these limits and implement appropriate measures to work within them when integrating with the API.

Latest API Version

Based on the search results provided, here are the key points regarding the most recent version of the Acuity Scheduling API:

  1. The current version of the Acuity Scheduling API is v1.

  2. The API endpoint URL is https://acuityscheduling.com/api/v1/.

  3. The API uses HTTP Basic Auth for authentication, requiring a User ID and API Key.

Key points to consider:

  • The API allows for various operations such as creating appointments, browsing availability, and blocking off time.

  • Cross-origin requests are not supported directly. API requests must be made from a server where API credentials can be securely stored.

  • The API provides endpoints for managing appointments, clients, forms, calendars, and more.

  • There is a JavaScript SDK available for integrating with the Acuity Scheduling API.

Best practices:

  1. Always use HTTPS for API requests to ensure secure communication.

  2. Store API credentials securely on your server, not in client-side code.

  3. Use the provided SDK or follow the API documentation closely when implementing integrations.

  4. Be aware of rate limits and implement appropriate error handling in your code.

  5. For multi-account integrations, consider using the OAuth2 authentication flow.

While the search results don't explicitly state when the v1 API was released or if there are plans for a newer version, the consistent reference to v1 across multiple sources suggests that it is the most current version available as of the search date.

How to get a Acuity Scheduling developer account and API Keys?

To get a developer account for Acuity Scheduling and create an API integration, you'll need to follow these steps:

1. Sign up for an Acuity Scheduling account

First, you need to have an active Acuity Scheduling account. If you don't already have one, sign up for an account on their website.

2. Register as an OAuth2 client

To create an API integration, you'll need to register as an OAuth2 client. This is recommended if you're developing an application where many different Acuity users need to authenticate. Here's how to do it:

  1. Go to the Acuity Scheduling Developer Hub (https://developers.acuityscheduling.com/)
  2. Look for a "Register" or "Sign Up" option for developers
  3. Follow the registration process to create your OAuth2 client account

3. Obtain API credentials

Once registered, you'll receive the following credentials:

  • Client ID
  • Client Secret
  • Redirect URI (you'll need to specify this)

These credentials are essential for authenticating your requests to the Acuity API.

4. Set up your integration

With your credentials in hand, you can now set up your integration:

  1. Use the authorization URL to redirect users to Acuity for authentication:

    https://acuityscheduling.com/oauth2/authorize?response_type=code&scope=api-v1&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI
    
  2. After user authorization, you'll receive an authorization code

  3. Exchange this code for an access token using a POST request to Acuity's token endpoint

5. Start making API requests

Once you have the access token, you can start making API requests to Acuity. Set the Authorization header to Bearer AN_ACCESS_TOKEN in your requests.

What can you do with the Acuity Scheduling API?

Based on the Acuity Scheduling API documentation, here are the main data models you can interact with and what is possible for each:

Appointments

  • Get list of appointments
  • Create new appointments
  • Get details of a specific appointment
  • Update appointment details
  • Cancel appointments
  • Reschedule appointments
  • Get payments for an appointment

Appointment Add-ons

  • Get list of appointment add-ons

Appointment Types

  • Get list of appointment types

Availability

  • Get available dates
  • Get available times
  • Get available classes
  • Check availability for specific times

Blocks

  • Get list of blocked off times
  • Create new blocks
  • Get details of a specific block
  • Delete blocks

Calendars

  • Get list of calendars

Certificates

  • Get list of gift certificates
  • Create new gift certificates
  • Delete gift certificates
  • Check gift certificate validity

Clients

  • Get list of clients
  • Create new clients
  • Update client details
  • Delete clients

Forms

  • Get list of forms

Labels

  • Get list of labels

Account Info

  • Get details about the authenticated account

Orders

  • Get list of orders
  • Get details of a specific order

Products

  • Get list of products

The API allows you to manage most aspects of scheduling and client management in Acuity, including creating and modifying appointments, managing availability, working with clients, and more. The data models cover the core functionality of the scheduling system.