openapi: 3.0.3
info:
title: Mindbody Public API v6 Appointment Class API
version: '6.0'
description: REST API for Mindbody business management data including appointments, classes, clients, enrollments, sales, sites, staff, payroll, and cross-site operations. Authentication combines a Mindbody-issued API-Key header with a SiteId header and optional staff/user OAuth bearer tokens for write operations. Generated from the official Mindbody Public API Python SDK (apimatic v3).
contact:
name: Mindbody API Support
url: https://support.mindbodyonline.com/s/contactapisupport
license:
name: Proprietary
x-generated-from: Mindbody-API-SDKs python SDK
x-last-validated: '2026-05-28'
servers:
- url: https://api.mindbodyonline.com
description: Production
security:
- ApiKeyAuth: []
tags:
- name: Class
description: Class operations.
paths:
/public/v6/class/classdescriptions:
get:
tags:
- Class
summary: Mindbody To Find Class Descriptions Associated with **scheduled Classes**, Pass
description: To find class descriptions associated with **scheduled classes**, pass `StaffId`, `StartClassDateTime`, `EndClassDateTime`, or `LocationId` in the request.
operationId: getClassDescriptions
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: siteId
in: header
required: true
description: ID of the site from which to pull data.
schema:
type: string
example: example-value
- name: authorization
in: header
required: false
description: A staff user authorization token.
schema:
type: string
example: example-value
- name: request.classDescriptionId
in: query
required: false
description: The ID of the requested client.
schema:
type: integer
format: int32
example: 123456
- name: request.endClassDateTime
in: query
required: false
description: Filters the results to class descriptions for scheduled classes that happen before the given date and time.
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.includeInactive
in: query
required: false
description: Includes inactive class descriptions, defaulting to true. When set to false, it filters out inactive class descriptions.
schema:
type: boolean
example: true
- name: request.limit
in: query
required: false
description: Number of results to include, defaults to 100
schema:
type: integer
format: int32
example: 1
- name: request.locationId
in: query
required: false
description: Filters results to classes descriptions for schedule classes as the given location.
schema:
type: integer
format: int32
example: 123456
- name: request.offset
in: query
required: false
description: Page offset, defaults to 0.
schema:
type: integer
format: int32
example: 1
- name: request.programIds
in: query
required: false
description: A list of requested program IDs.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.staffId
in: query
required: false
description: Filters results to class descriptions for scheduled classes taught by the given staff member.
schema:
type: integer
format: int32
example: 123456
- name: request.startClassDateTime
in: query
required: false
description: Filters the results to class descriptions for scheduled classes that happen on or after the given date and time.
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClassDescriptionsResponse'
examples:
Getclassdescriptions200Example:
summary: Default getClassDescriptions 200 example
x-microcks-default: true
value:
PaginationResponse: {}
ClassDescriptions:
- {}
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'500':
description: Internal Server Error
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- ApiKeyAuth: []
/public/v6/class/classes:
get:
tags:
- Class
summary: Mindbody Get Scheduled Classes
description: Get scheduled classes.
operationId: getClasses
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: siteId
in: header
required: true
description: ID of the site from which to pull data.
schema:
type: string
example: example-value
- name: authorization
in: header
required: false
description: A staff user authorization token.
schema:
type: string
example: example-value
- name: request.classDescriptionIds
in: query
required: false
description: The requested class description IDs.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.classIds
in: query
required: false
description: The requested class IDs.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.classScheduleIds
in: query
required: false
description: The requested classSchedule Ids.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.clientId
in: query
required: false
description: The client ID of the client who is viewing this class list. Based on identity, the client may be able to see additional information, such as membership specials.
schema:
type: string
example: example-value
- name: request.endDateTime
in: query
required: false
description: 'The requested end date for filtering. NOTE: ClassDate does not take Class Time into consideration. <br />Default: **today’s date**'
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.hideCanceledClasses
in: query
required: false
description: 'When `true`, canceled classes are removed from the response.<br /> When `false`, canceled classes are included in the response.<br /> Default: **false**'
schema:
type: boolean
example: true
- name: request.lastModifiedDate
in: query
required: false
description: When included in the request, only records modified on or after the `LastModifiedDate` specified are included in the response.
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.limit
in: query
required: false
description: Number of results to include, defaults to 100
schema:
type: integer
format: int32
example: 1
- name: request.locationIds
in: query
required: false
description: A list of location IDs on which to base the search.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.offset
in: query
required: false
description: Page offset, defaults to 0.
schema:
type: integer
format: int32
example: 1
- name: request.programIds
in: query
required: false
description: A list of program IDs on which to base the search.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.schedulingWindow
in: query
required: false
description: 'When `true`, classes outside scheduling window are removed from the response.<br /> When `false`, classes are included in the response, regardless of the scheduling window.<br /> Default: **false**'
schema:
type: boolean
example: true
- name: request.semesterIds
in: query
required: false
description: A list of semester IDs on which to base the search.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.sessionTypeIds
in: query
required: false
description: A list of session type IDs on which to base the search.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.staffIds
in: query
required: false
description: The requested IDs of the teaching staff members.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.startDateTime
in: query
required: false
description: 'The requested start date for filtering. This also determines what you will see for the ‘BookingWindow’ StartDateTime in the response. For example, if you pass a StartDateTime that is on OR before the BookingWindow ‘Open’ days of the class, you will retrieve the actual ‘StartDateTime’ for the Booking Window. If you pass a StartDateTime that is after the BookingWindow ‘date’, then you will receive results based on that start date. NOTE: ClassDate does not take Class Time into consideration.'
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.uniqueClientId
in: query
required: false
description: 'The unique ID of the client who is viewing this class list. Based on identity, the client may be able to see additional information, such as membership specials. Note: you need to provide the ''UniqueClientId'' OR the ''ClientId''. If both are provided, the ''UniqueClientId'' takes precedence.'
schema:
type: integer
format: int32
example: 123456
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClassesResponse'
examples:
Getclasses200Example:
summary: Default getClasses 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Classes:
- {}
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'500':
description: Internal Server Error
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- ApiKeyAuth: []
/public/v6/class/classschedules:
get:
tags:
- Class
summary: Mindbody Get Class Schedules
description: Get class schedules.
operationId: getClassSchedules
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: siteId
in: header
required: true
description: ID of the site from which to pull data.
schema:
type: string
example: example-value
- name: authorization
in: header
required: false
description: A staff user authorization token.
schema:
type: string
example: example-value
- name: request.classScheduleIds
in: query
required: false
description: 'The class schedule IDs. <br />Default: **all**'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.endDate
in: query
required: false
description: 'The end date of the range. Return any active enrollments that occur on or before this day. <br />Default: **StartDate**'
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.limit
in: query
required: false
description: Number of results to include, defaults to 100
schema:
type: integer
format: int32
example: 1
- name: request.locationIds
in: query
required: false
description: 'The location IDs. <br />Default: **all**'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.offset
in: query
required: false
description: Page offset, defaults to 0.
schema:
type: integer
format: int32
example: 1
- name: request.programIds
in: query
required: false
description: 'The program IDs. <br />Default: **all**'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.sessionTypeIds
in: query
required: false
description: 'The session type IDs. <br />Default: **all**'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.staffIds
in: query
required: false
description: 'The staff IDs. <br />Default: **all**'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.startDate
in: query
required: false
description: 'The start date of the range. Return any active enrollments that occur on or after this day. <br />Default: **today’s date**'
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClassSchedulesResponse'
examples:
Getclassschedules200Example:
summary: Default getClassSchedules 200 example
x-microcks-default: true
value:
PaginationResponse: {}
ClassSchedules:
- {}
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'500':
description: Internal Server Error
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- ApiKeyAuth: []
/public/v6/class/classvisits:
get:
tags:
- Class
summary: Mindbody Returns a List of Visits That Contain Information for a Specified
description: Returns a list of visits that contain information for a specified class. On success, this request returns the class object in the response with a list of visits.
operationId: getClassVisits
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: request.classID
in: query
required: true
description: The class ID.
schema:
type: integer
format: int32
example: 1
- name: siteId
in: header
required: true
description: ID of the site from which to pull data.
schema:
type: string
example: example-value
- name: authorization
in: header
required: false
description: A staff user authorization token.
schema:
type: string
example: example-value
- name: request.lastModifiedDate
in: query
required: false
description: When included in the request, only records modified on or after the `LastModifiedDate` specified are included in the response.
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.useSiteSettingsStaffName
in: query
required: false
description: When `true`, the staff DisplayName will be populated based on site-level settings. When `false` or omitted, the staff DisplayName will contain only the FirstName.
schema:
type: boolean
example: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClassVisitsResponse'
examples:
Getclassvisits200Example:
summary: Default getClassVisits 200 example
x-microcks-default: true
value:
Class: {}
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'500':
description: Internal Server Error
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- ApiKeyAuth: []
/public/v6/class/courses:
get:
tags:
- Class
summary: Mindbody This Endpoint Will Provide All the Data Related to Courses Depending
description: 'This endpoint will provide all the data related to courses depending on the access level.<br /> Note: The Authorization is an optional header.If Authorization header is not passed, the response will be masked else full response will be provided.'
operationId: getCourses
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: siteId
in: header
required: true
description: ID of the site from which to pull data.
schema:
type: string
example: example-value
- name: authorization
in: header
required: false
description: A staff user authorization token.
schema:
type: string
example: example-value
- name: getCoursesRequest.courseIDs
in: query
required: false
description: Return only courses that are available for the specified CourseIds.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: getCoursesRequest.endDate
in: query
required: false
description: The end date range. Any active courses that are on or before this day. <br />(optional) Defaults to StartDate.
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: getCoursesRequest.limit
in: query
required: false
description: Number of results to include, defaults to 100
schema:
type: integer
format: int32
example: 1
- name: getCoursesRequest.locationIDs
in: query
required: false
description: Return only courses that are available for the specified LocationIds.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: getCoursesRequest.offset
in: query
required: false
description: Page offset, defaults to 0.
schema:
type: integer
format: int32
example: 1
- name: getCoursesRequest.programIDs
in: query
required: false
description: Return only courses that are available for the specified ProgramIds.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: getCoursesRequest.semesterIDs
in: query
required: false
description: Return only courses that are available for the specified SemesterIds.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: getCoursesRequest.staffIDs
in: query
required: false
description: Return only courses that are available for the specified StaffIds.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: getCoursesRequest.startDate
in: query
required: false
description: The start date range. Any active courses that are on or after this day. <br />(optional) Defaults to today.
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetCoursesReponse'
examples:
Getcourses200Example:
summary: Default getCourses 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Courses:
- {}
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'500':
description: Internal Server Error
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- ApiKeyAuth: []
/public/v6/class/semesters:
get:
tags:
- Class
summary: Mindbody This Endpoint Retrieves the Business Class Semesters
description: This endpoint retrieves the business class semesters.
operationId: getSemesters
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: siteId
in: header
required: true
description: ID of the site from which to pull data.
schema:
type: string
example: example-value
- name: authorization
in: header
required: false
description: A staff user authorization token.
schema:
type: string
example: example-value
- name: request.active
in: query
required: false
description: 'When true, the response only contains semesters which are activated. When false, only deactivated semesters are returned. Default: **All semesters**'
schema:
type: boolean
example: true
- name: request.endDate
in: query
required: false
description: 'The end date for the range. All semesters that are on or before this day. Default: **StartDate**'
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.limit
in: query
required: false
description: Number of results to include, defaults to 100
schema:
type: integer
format: int32
example: 1
- name: request.offset
in: query
required: false
description: Page offset, defaults to 0.
schema:
type: integer
format: int32
example: 1
- name: request.semesterIDs
in: query
required: false
description: The requested semester IDs.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.startDate
in: query
required: false
description: 'The start date for the range. All semesters that are on or after this day. Default: **today’s date**'
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetSemestersResponse'
examples:
Getsemesters200Example:
summary: Default getSemesters 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Semesters:
- {}
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'500':
description: Internal Server Error
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- ApiKeyAuth: []
/public/v6/class/waitlistentries:
get:
tags:
- Class
summary: Mindbody Returns a List of Waiting List Entries for a Specified Class Schedule
description: Returns a list of waiting list entries for a specified class schedule or class. The request requires staff credentials and either a class schedule ID or class ID.
operationId: getWaitlistEntries
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: siteId
in: header
required: true
description: ID of the site from which to pull data.
schema:
type: string
example: example-value
- name: authorization
in: header
required: false
description: A staff user authorization token.
schema:
type: string
example: example-value
- name: request.classIds
in: query
required: false
description: 'The requested class IDs. If a class ID is present, the request automatically disregards any class schedule IDs in the request. <br /> Either `ClassScheduleIds`, `ClientIds`, `WaitlistEntryIds`, or `ClassIds` is required; the others become optional.<br /> Default: **all ClassIds**'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.classScheduleIds
in: query
required: false
description: 'The requested class schedule IDs. If a class ID is present, the request automatically disregards any class schedule IDs in the request.<br /> Either `ClassScheduleIds`, `ClientIds`, `WaitlistEntryIds`, or `ClassIds` is required; the others become optional.<br /> Default: **all ClassScheduleIds**'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.clientIds
in: query
required: false
description: 'The requested client IDs.<br /> Either `ClassScheduleIds`, `ClientIds`, `WaitlistEntryIds`, or `ClassIds` is required; the others become optional.<br /> Default: **all ClientIds**'
schema:
type: array
items:
type: string
example:
- example-value
- name: request.hidePastEntries
in: query
required: false
description: 'When `true`, indicates that past waiting list entries are hidden from clients.<br /> When `false`, indicates that past entries are not hidden from clients.<br /> Default: **false**'
schema:
type: boolean
example: true
- name: request.limit
in: query
required: false
description: Number of results to include, defaults to 100
schema:
type: integer
format: int32
example: 1
- name: request.offset
in: query
required: false
description: Page offset, defaults to 0.
schema:
type: integer
format: int32
example: 1
- name: request.waitlistEntryIds
in: query
required: false
description: 'The requested waiting list entry IDs.<br /> Either `ClassScheduleIds`, `ClientIds`, `WaitlistEntryIds`, or `ClassIds` is required; the others become optional.<br /> Default: **all WaitlistEntryIds**'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetWaitlistEntriesResponse'
examples:
Getwaitlistentries200Example:
summary: Default getWaitlistEntries 200 example
x-microcks-default: true
value:
PaginationResponse: {}
WaitlistEntries:
- {}
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'500':
description: Internal Server Error
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
security:
- ApiKeyAuth: []
/public/v6/class/addclassschedule:
post:
tags:
- Class
summary: Mindbody This Endpoint Adds a Class Schedule. for a Single Day Schedule, the
description: This endpoint adds a class schedule. For a single day schedule, the EndDate parameter can be omitted.
operationId: addClassSchedule
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: siteId
in: header
required: true
description: ID of the site from which to pull data.
schema:
type: string
example: example-value
- name: authorization
in: header
required: false
description: A staff user authorization token.
schema:
type: string
example: example-value
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddClassEnrollmentScheduleRequest'
examples:
AddclassscheduleRequestExample:
summary: Default addClassSchedule request example
x-microcks-default: true
value:
ClassDescriptionId: 123456
LocationId: 123456
StartDate: '2026-05-28T14:30:00Z'
EndDate: '2026-05-28T14:30:00Z'
StartTime: '202
# --- truncated at 32 KB (164 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mindbody/refs/heads/main/openapi/mindbody-class-api-openapi.yml