Maton

Acuity Scheduling

Access the Acuity Scheduling API with managed OAuth authentication. Manage appointments, calendars, clients, availability, and more.

Reference

Get Account Info

GET /acuity-scheduling/api/v1/me

Returns account information including timezone, scheduling page URL, and plan details.

Response:

{
  "id": 12345,
  "email": "user@example.com",
  "timezone": "America/Los_Angeles",
  "name": "My Business",
  "schedulingPage": "https://app.acuityscheduling.com/schedule.php?owner=12345",
  "plan": "Professional",
  "currency": "USD"
}

List Appointments

GET /acuity-scheduling/api/v1/appointments

Query Parameters:

ParameterTypeDescription
maxintegerMaximum results (default: 100)
minDatedateAppointments on or after this date
maxDatedateAppointments on or before this date
calendarIDintegerFilter by calendar
appointmentTypeIDintegerFilter by appointment type
canceledbooleanInclude canceled appointments (default: false)
firstNamestringFilter by client first name
lastNamestringFilter by client last name
emailstringFilter by client email
excludeFormsbooleanOmit intake forms for faster response
directionstringSort order: ASC or DESC (default: DESC)

Example:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/acuity-scheduling/api/v1/appointments?max=10&minDate=2026-02-01')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

[
  {
    "id": 1630290133,
    "firstName": "Jane",
    "lastName": "McTest",
    "phone": "1235550101",
    "email": "jane.mctest@example.com",
    "date": "February 4, 2026",
    "time": "9:30am",
    "endTime": "10:20am",
    "datetime": "2026-02-04T09:30:00-0800",
    "type": "Consultation",
    "appointmentTypeID": 88791369,
    "duration": "50",
    "calendar": "Chris",
    "calendarID": 13499175,
    "canceled": false,
    "confirmationPage": "https://app.acuityscheduling.com/schedule.php?..."
  }
]

Get Appointment

GET /acuity-scheduling/api/v1/appointments/{id}

Create Appointment

POST /acuity-scheduling/api/v1/appointments
Content-Type: application/json

{
  "datetime": "2026-02-15T09:00",
  "appointmentTypeID": 123,
  "firstName": "John",
  "lastName": "Doe",
  "email": "john.doe@example.com",
  "phone": "555-123-4567",
  "timezone": "America/New_York"
}

Required Fields:

  • datetime - Date and time (parseable by PHP's strtotime)
  • appointmentTypeID - Appointment type ID
  • firstName - Client's first name
  • lastName - Client's last name
  • email - Client's email

Optional Fields:

  • phone - Client phone number
  • calendarID - Specific calendar (auto-selected if omitted)
  • timezone - Client's timezone
  • certificate - Package or coupon code
  • notes - Admin notes
  • addonIDs - Array of addon IDs
  • fields - Array of form field values

Example:

python <<'EOF'
import urllib.request, os, json
data = json.dumps({
    'datetime': '2026-02-15T09:00',
    'appointmentTypeID': 123,
    'firstName': 'John',
    'lastName': 'Doe',
    'email': 'john.doe@example.com'
}).encode()
req = urllib.request.Request('https://api.maton.ai/acuity-scheduling/api/v1/appointments', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Update Appointment

PUT /acuity-scheduling/api/v1/appointments/{id}
Content-Type: application/json

{
  "firstName": "Jane",
  "lastName": "Smith",
  "email": "jane.smith@example.com"
}

Cancel Appointment

PUT /acuity-scheduling/api/v1/appointments/{id}/cancel

Returns the canceled appointment with canceled: true.

Reschedule Appointment

PUT /acuity-scheduling/api/v1/appointments/{id}/reschedule
Content-Type: application/json

{
  "datetime": "2026-02-20T10:00"
}

Note: The new datetime must be an available time slot.

List Calendars

GET /acuity-scheduling/api/v1/calendars

Response:

[
  {
    "id": 13499175,
    "name": "Chris",
    "email": "",
    "replyTo": "chris@example.com",
    "description": "",
    "location": "",
    "timezone": "America/Los_Angeles"
  }
]

List Appointment Types

GET /acuity-scheduling/api/v1/appointment-types

Query Parameters:

  • includeDeleted (boolean) - Include deleted types

Response:

[
  {
    "id": 88791369,
    "name": "Consultation",
    "active": true,
    "description": "",
    "duration": 50,
    "price": "45.00",
    "category": "",
    "color": "#ED7087",
    "private": false,
    "type": "service",
    "calendarIDs": [13499175],
    "schedulingUrl": "https://app.acuityscheduling.com/schedule.php?..."
  }
]

Get Available Dates

GET /acuity-scheduling/api/v1/availability/dates?month=2026-02&appointmentTypeID=123

Required Parameters:

  • month - Month to check (e.g., "2026-02")
  • appointmentTypeID - Appointment type ID

Optional Parameters:

  • calendarID - Specific calendar
  • timezone - Timezone for results (e.g., "America/New_York")

Response:

[
  {"date": "2026-02-09"},
  {"date": "2026-02-10"},
  {"date": "2026-02-11"}
]

Get Available Times

GET /acuity-scheduling/api/v1/availability/times?date=2026-02-10&appointmentTypeID=123

Required Parameters:

  • date - Date to check
  • appointmentTypeID - Appointment type ID

Optional Parameters:

  • calendarID - Specific calendar
  • timezone - Timezone for results

Response:

[
  {"time": "2026-02-10T09:00:00-0800", "slotsAvailable": 1},
  {"time": "2026-02-10T09:50:00-0800", "slotsAvailable": 1},
  {"time": "2026-02-10T10:40:00-0800", "slotsAvailable": 1}
]

List Clients

GET /acuity-scheduling/api/v1/clients

Query Parameters:

  • search - Filter by first name, last name, or phone

Example:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/acuity-scheduling/api/v1/clients?search=John')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

[
  {
    "firstName": "Jane",
    "lastName": "McTest",
    "email": "jane.mctest@example.com",
    "phone": "(123) 555-0101",
    "notes": ""
  }
]

Create Client

POST /acuity-scheduling/api/v1/clients
Content-Type: application/json

{
  "firstName": "John",
  "lastName": "Doe",
  "email": "john@example.com",
  "phone": "555-123-4567"
}

Update Client

PUT /acuity-scheduling/api/v1/clients
Content-Type: application/json

{
  "firstName": "John",
  "lastName": "Doe",
  "email": "john.updated@example.com"
}

Note: Client update/delete only works for clients with existing appointments.

Delete Client

DELETE /acuity-scheduling/api/v1/clients
Content-Type: application/json

{
  "firstName": "John",
  "lastName": "Doe"
}

List Blocks

GET /acuity-scheduling/api/v1/blocks

Query Parameters:

  • max - Maximum results (default: 100)
  • minDate - Blocks on or after this date
  • maxDate - Blocks on or before this date
  • calendarID - Filter by calendar

Get Block

GET /acuity-scheduling/api/v1/blocks/{id}

Create Block

POST /acuity-scheduling/api/v1/blocks
Content-Type: application/json

{
  "start": "2026-02-15T12:00",
  "end": "2026-02-15T13:00",
  "calendarID": 1234,
  "notes": "Lunch break"
}

Response:

{
  "id": 9589304654,
  "calendarID": 13499175,
  "start": "2026-02-15T12:00:00-0800",
  "end": "2026-02-15T13:00:00-0800",
  "notes": "Lunch break",
  "description": "Sunday, February 15, 2026 12:00pm - 1:00pm"
}

Delete Block

DELETE /acuity-scheduling/api/v1/blocks/{id}

Returns 204 No Content on success.

List Forms

GET /acuity-scheduling/api/v1/forms

Response:

[
  {
    "id": 123,
    "name": "Client Intake Form",
    "appointmentTypeIDs": [456, 789],
    "fields": [
      {
        "id": 1,
        "name": "How did you hear about us?",
        "type": "dropdown",
        "options": ["Google", "Friend", "Social Media"],
        "required": true
      }
    ]
  }
]

List Labels

GET /acuity-scheduling/api/v1/labels

Response:

[
  {"id": 23116714, "name": "Checked In", "color": "green"},
  {"id": 23116715, "name": "Completed", "color": "pink"},
  {"id": 23116713, "name": "Confirmed", "color": "yellow"}
]

Resources

On this page