openapi: 3.0.3
info:
title: Mindbody Public API v6 Appointment Client 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: Client
description: Client operations.
paths:
/public/v6/client/activeclientmemberships:
get:
tags:
- Client
summary: Mindbody Please Note That Client Memberships with Location Restrictions Can
description: Please note that client memberships with location restrictions can only be used to pay for scheduled services at the site to which they belong. Memberships with location restrictions can not be used to pay for scheduled services at other sites within an organization.
operationId: getActiveClientMemberships
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: request.clientId
in: query
required: true
description: The ID of the client for whom memberships are returned.
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.clientAssociatedSitesOffset
in: query
required: false
description: Used to retrieve a client’s memberships from multiple sites within an organization when the client is associated with more than ten sites. To change which ten sites are searched, change this offset value. A value of 0 means that no sites are skipped and the first ten sites are returned. You can use the `CrossRegionalClientAssociations` value from `GET CrossRegionalClientAssociations` to determine how many sites the client is associated with. Note that you must always have `CrossRegionalLookup` s
schema:
type: integer
format: int32
example: 10
- name: request.crossRegionalLookup
in: query
required: false
description: Used to retrieve a client’s memberships from multiple sites within an organization. When included and set to `true`, it searches a maximum of ten sites with which this client is associated. When a client is associated with more than ten sites, use `ClientAssociatedSitesOffset` as many times as needed to search the additional sites with which the client is associated. You can use the `CrossRegionalClientAssociations` value from `GET CrossRegionalClientAssociations` to determine how many sites the
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 memberships that can be used to pay for scheduled services at that location. This parameter can not be passed when `CrossRegionalLookup` is `true`.
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.uniqueClientId
in: query
required: false
description: The Unique ID of the client for whom memberships are returned. Note that UniqueClientId takes precedence over ClientId if both are provided.
schema:
type: integer
format: int32
example: 123456
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetActiveClientMembershipsResponse'
examples:
Getactiveclientmemberships200Example:
summary: Default getActiveClientMemberships 200 example
x-microcks-default: true
value:
PaginationResponse: {}
ClientMemberships:
- {}
'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/client/activeclientsmemberships:
get:
tags:
- Client
summary: Mindbody The Endpoint Returns a List of Memberships for Multiple Clients We
description: The endpoint returns a list of memberships for multiple clients we pass in query parameter. Please note that clients memberships with location restrictions can only be used to pay for scheduled services at the site to which they belong. Memberships with location restrictions can not be used to pay for scheduled services at other sites within an organization.
operationId: getActiveClientsMemberships
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: request.clientIds
in: query
required: true
description: 'The ID of the client for whom memberships are returned. Maximum allowed : 200.'
schema:
type: array
items:
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.clientAssociatedSitesOffset
in: query
required: false
description: Used to retrieve a client’s memberships from multiple sites within an organization when the client is associated with more than ten sites. To change which ten sites are searched, change this offset value. A value of 0 means that no sites are skipped and the first ten sites are returned. You can use the `CrossRegionalClientAssociations` value from `GET CrossRegionalClientAssociations` to determine how many sites the client is associated with. Note that you must always have `CrossRegionalLookup` s
schema:
type: integer
format: int32
example: 10
- name: request.crossRegionalLookup
in: query
required: false
description: Used to retrieve a client’s memberships from multiple sites within an organization. When included and set to `true`, it searches a maximum of ten sites with which this client is associated. When a client is associated with more than ten sites, use `ClientAssociatedSitesOffset` as many times as needed to search the additional sites with which the client is associated. You can use the `CrossRegionalClientAssociations` value from `GET CrossRegionalClientAssociations` to determine how many sites the
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 memberships that can be used to pay for scheduled services at that location. This parameter can not be passed when `CrossRegionalLookup` is `true`.
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
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetActiveClientsMembershipsResponse'
examples:
Getactiveclientsmemberships200Example:
summary: Default getActiveClientsMemberships 200 example
x-microcks-default: true
value:
PaginationResponse: {}
ClientMemberships:
- {}
'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/client/clientaccountbalances:
get:
tags:
- Client
summary: Mindbody Get Account Balance Information for One or More Client(s)
description: Get account balance information for one or more client(s).
operationId: getClientAccountBalances
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: request.clientIds
in: query
required: true
description: The list of clients IDs for which you want account balances.
schema:
type: array
items:
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.balanceDate
in: query
required: false
description: 'The date you want a balance relative to. Default: **the current date**'
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.classId
in: query
required: false
description: The class ID of the event for which you want a balance.
schema:
type: integer
format: int32
example: 123456
- 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
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClientAccountBalancesResponse'
examples:
Getclientaccountbalances200Example:
summary: Default getClientAccountBalances 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Clients:
- {}
'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/client/clientcompleteinfo:
get:
tags:
- Client
summary: Mindbody This Endpoint Returns Complete Client Information Along with List of
description: This endpoint returns complete client information along with list of purchased services, contract details, membership details and arrival programs for a specific client.
operationId: getClientCompleteInfo
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: request.clientId
in: query
required: true
description: Filters results to client with these ID.
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: consumer-identity-token
in: header
required: false
description: A consumers authorization token to replace the need of clientId in the request.
schema:
type: string
example: example-value
- name: request.clientAssociatedSitesOffset
in: query
required: false
description: Used to retrieve a client’s pricing options from multiple sites within an organization when the client is associated with more than ten sites. To change which ten sites are searched, change this offset value. A value of 0 means that no sites are skipped and the first ten sites are returned. You can use the `CrossRegionalClientAssociations` value from `GET CrossRegionalClientAssociations` to determine how many sites the client is associated with. Note that you must always have `CrossRegionalLooku
schema:
type: integer
format: int32
example: 10
- name: request.crossRegionalLookup
in: query
required: false
description: Used to retrieve a clients pricing options from multiple sites within an organization.When included and set to `true`, it searches a maximum of ten sites with which this client is associated.When a client is associated with more than ten sites, use `ClientAssociatedSitesOffset` as many times as needed to search the additional sites with which the client is associated. You can use the `CrossRegionalClientAssociations` value from `GET CrossRegionalClientAssociations` to determine how many sites th
schema:
type: boolean
example: true
- name: request.endDate
in: query
required: false
description: 'Filters results to pricing options that are purchased on or before this date. Default: **today’s date**.'
schema:
type: string
format: date-time
example: '2026-05-28T14:30:00Z'
- name: request.excludeInactiveSites
in: query
required: false
description: 'When this flag is set to `true`, will exclude inactive sites from the response Default: **false**'
schema:
type: boolean
example: true
- name: request.requiredClientData
in: query
required: false
description: Used to retrieve list of purchased services, contract details, membership details and arrival programs for a specific client. Default `ClientServices`, `ClientContracts`, `ClientMemberships` and `ClientArrivals` will be returned when `RequiredClientDatais` not set. When `RequiredClientData` is set to `Contracts` then only `ClientContracts` will be returned in the response. When `RequiredClientData` is set to Services then only `ClientServices` will be returned in the response. When `RequiredClie
schema:
type: array
items:
type: string
example:
- example-value
- name: request.showActiveOnly
in: query
required: false
description: 'When `true`, includes active services only. Set this field to `true` when trying to determine if a client has a service that can pay for a class or appointment. Default: **false**'
schema:
type: boolean
example: true
- name: request.startDate
in: query
required: false
description: 'Filters results to pricing options that are purchased on or after this date. Default: **today’s date**.'
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.
schema:
type: integer
format: int32
example: 123456
- name: request.useActivateDate
in: query
required: false
description: 'When this flag is set to `true`, the date filtering will use activate date to filter the pricing options. When this flag is set to `false`, the date filtering will use purchase date to filter the pricing options. Default: **false**'
schema:
type: boolean
example: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClientCompleteInfoResponse'
examples:
Getclientcompleteinfo200Example:
summary: Default getClientCompleteInfo 200 example
x-microcks-default: true
value:
Client: {}
ClientServices:
- {}
ClientContracts:
- {}
ClientMemberships:
- {}
ClientArrivals:
- {}
'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/client/clientcontracts:
get:
tags:
- Client
summary: Mindbody Get Contracts That a Client Has Purchased
description: Get contracts that a client has purchased.
operationId: getClientContracts
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: request.clientId
in: query
required: true
description: The ID of the client (RssId).
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.clientAssociatedSitesOffset
in: query
required: false
description: 'Determines how many sites are skipped over when retrieving a client’s cross regional contracts. Used when a client ID is linked to more than ten sites in an organization. Only a maximum of ten site databases are queried when this call is made and `CrossRegionalLookup` is set to `true`. To change which sites are queried, change this offset value. Default: **0**'
schema:
type: integer
format: int32
example: 10
- name: request.crossRegionalLookup
in: query
required: false
description: When `true`, indicates that the requesting client’s cross regional contracts are returned, if any.<br /> When `false`, indicates that cross regional contracts are not returned.
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.uniqueClientId
in: query
required: false
description: The unique ID of the requested client.
schema:
type: integer
format: int32
example: 123456
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClientContractsResponse'
examples:
Getclientcontracts200Example:
summary: Default getClientContracts 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Contracts:
- {}
'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/client/clientdirectdebitinfo:
get:
tags:
- Client
summary: Mindbody This Endpoint Returns Direct Debit Info Stored on a Client's Account
description: This endpoint returns direct debit info stored on a client's account. This endpoint requires staff user credentials. A null response from this endpoint indicates that the client has no usable direct debit information on their account.Use the POST AddClientDirectDebitInfo endpoint to add direct debit information to a client’s account.
operationId: getDirectDebitInfo
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: clientId
in: query
required: false
description: The ID of the client.
schema:
type: string
example: example-value
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DirectDebitInfo'
examples:
Getdirectdebitinfo200Example:
summary: Default getDirectDebitInfo 200 example
x-microcks-default: true
value:
NameOnAccount: example-value
RoutingNumber: example-value
AccountNumber: example-value
AccountType: example-value
'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: []
delete:
tags:
- Client
summary: Mindbody This Endpoint Deletes Direct Debit Info from a Client’s Account. This
description: This endpoint deletes direct debit info from a client’s account. This endpoint requires staff user credentials.
operationId: deleteDirectDebitInfo
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: clientId
in: query
required: false
description: The ID of the client.
schema:
type: string
example: example-value
responses:
'200':
description: OK
'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/client/clientduplicates:
get:
tags:
- Client
summary: Mindbody This Endpoint Gets Client Records That Would Be Considered Duplicates
description: This endpoint gets client records that would be considered duplicates based on case-insensitive matching of the client's first name, last name, and email. For there to be results, all three parameters must match a client record. This endpoint requires staff user credentials. An empty `ClientDuplicates` object in the response from this endpoint indicates that there were no client records found that match the first name, last name, and email fields passed in. If one client record is returned, it is not a duplicate itself, but no other client record can be created or updated that would match this client's first name, last name, and email combination. If more than one client record is returned, these clients are duplicates of each other.We recommend discussing with the business how they would like to resolve duplicate records in the event the response contains more than one client record.Businesses can use the Merge Duplicate Clients tool in the Core Business Mode software to resolve the duplicate client records.
operationId: getClientDuplicates
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.email
in: query
required: false
description: The client email to match on when searching for duplicates.
schema:
type: string
example: kinlane@example.com
- name: request.firstName
in: query
required: false
description: The client first name to match on when searching for duplicates.
schema:
type: string
example: example-value
- name: request.lastName
in: query
required: false
description: The client last name to match on when searching for duplicates.
schema:
type: string
example: example-value
- 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
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClientDuplicatesResponse'
examples:
Getclientduplicates200Example:
summary: Default getClientDuplicates 200 example
x-microcks-default: true
value:
PaginationResponse: {}
ClientDuplicates:
- {}
'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/client/clientformulanotes:
get:
tags:
- Client
summary: 'Mindbody ***QueryParams***: Enables to Retrieve Cross Regional Formula Notes'
description: '***QueryParams***: Enables to retrieve cross regional formula notes for a client, or for a specific appointment. The two parameters are optional, however at least one must be provided. This endpoint supports pagination.'
operationId: getClientFormulaNotes
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.appointmentId
in: query
required: false
description: The appointment ID of an appointment in the studio specified in the header of the request.
schema:
type: integer
format: int32
example: 123456
- name: request.clientId
in: query
required: false
description: The client ID of the client whose formula notes are being requested.
schema:
type: string
example: example-value
- 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
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetClientFormulaNotesResponse'
examples:
# --- truncated at 32 KB (310 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mindbody/refs/heads/main/openapi/mindbody-client-api-openapi.yml