openapi: 3.0.3
info:
title: Mindbody Public API v6 Appointment Payroll 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: Payroll
description: Payroll operations.
paths:
/public/v6/payroll/commissions:
get:
tags:
- Payroll
summary: Mindbody A Staff Authorization Token is Not Required for This Endpoint, but if
description: A staff authorization token is not required for this endpoint, but if one is passed, its permissions are honored. Depending on the access permissions configured for the staff member whose token is passed, the endpoint returns either only the payroll information for that staff member or it returns the payroll information for all staff members.
operationId: getCommissions
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.endDateTime
in: query
required: false
description: 'The end of the date range for the payroll information to be returned. The maximum allowed date range is 14 days.<br /> Default: **Today’s date** * If you do not supply an `EndDateTime`, the data returns for the period from the `StartDateTime` that you supply to today’s date. * If you do not supply an `EndDateTime` or a `StartDateTime`, data returns for the seven days prior to today’s date.'
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.locationId
in: query
required: false
description: A LocationId that you want to retrieve payroll information for. If you do not supply a `LocationId`, data from all locations is returned.
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.staffId
in: query
required: false
description: A list of staff IDs that you want to retrieve payroll information for. If you do not supply a `StaffId`, all active staff members return, ordered by staff ID.
schema:
type: integer
format: int32
example: 123456
- name: request.startDateTime
in: query
required: false
description: The beginning of the date range for the payroll information to be returned. The maximum allowed date range is 14 days. * If you do not supply a `StartDateTime`, data returns for the seven days prior to the `EndDateTime` that you supply. * If you do not supply either a `StartDateTime` or an `EndDateTime`, the data returns for seven days prior to 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/GetCommissionsResponse'
examples:
Getcommissions200Example:
summary: Default getCommissions 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Commissions:
- {}
'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/payroll/scheduledserviceearnings:
get:
tags:
- Payroll
summary: Mindbody A Staff Authorization Token is Not Required for This Endpoint, but if
description: A staff authorization token is not required for this endpoint, but if one is passed, its permissions are honored. Depending on the access permissions configured for the staff member whose token is passed, the endpoint returns either only the payroll information for that staff member or it returns the payroll information for all staff members. Note that if a staff member is not paid for a class, earnings of zero are returned by this endpoint. Note that this endpoint calculates both bonus and no-reg rates for assistants.These rates are not supported by the Payroll report in the web interface. Note that this endpoint returns both the teacher’s adjusted rate and the assistant’s pay rate when the assistant is paid by the teacher.The Payroll report in the web interface only returns the teacher’s adjusted rate.
operationId: getScheduledServiceEarnings
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.endDateTime
in: query
required: false
description: 'The end of the date range for the payroll information to be returned. The maximum allowed date range is 14 days.<br /> Default: **Today’s date** * If you do not supply an `EndDateTime`, the data returns for the period from the `StartDateTime` that you supply to today’s date. * If you do not supply an `EndDateTime` or a `StartDateTime`, data returns for the seven days prior to today’s date.'
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.locationId
in: query
required: false
description: A LocationId that you want to retrieve payroll information for. If you do not supply a `LocationId`, data from all locations is returned.
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.scheduledServiceId
in: query
required: false
description: Filters the results to a single scheduled service. This parameter must be used with a single ScheduledServiceType.
schema:
type: integer
format: int32
example: 123456
- name: request.scheduledServiceType
in: query
required: false
description: 'Filters the results to schedule service earnings for specific types of services. Possible values: * Class * Appointment'
schema:
type: string
example: example-value
- name: request.staffId
in: query
required: false
description: A list of staff IDs that you want to retrieve payroll information for. If you do not supply a `StaffId`, all active staff members return, ordered by staff ID.
schema:
type: integer
format: int32
example: 123456
- name: request.startDateTime
in: query
required: false
description: The beginning of the date range for the payroll information to be returned. The maximum allowed date range is 14 days. * If you do not supply a `StartDateTime`, data returns for the seven days prior to the `EndDateTime` that you supply. * If you do not supply either a `StartDateTime` or an `EndDateTime`, the data returns for seven days prior to 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/GetScheduledServiceEarningsResponse'
examples:
Getscheduledserviceearnings200Example:
summary: Default getScheduledServiceEarnings 200 example
x-microcks-default: true
value:
PaginationResponse: {}
ScheduledServiceEarnings:
- {}
'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/payroll/timecards:
get:
tags:
- Payroll
summary: Mindbody This Endpoint Returns Information for All Locations. the **View
description: This endpoint returns information for all locations. The **View reports for all locations permission **is not supported for staff auth tokens.
operationId: getTimeCards
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.endDateTime
in: query
required: false
description: 'The end of the date range for the payroll information to be returned. The maximum allowed date range is 14 days.<br /> Default: **Today’s date** * If you do not supply an `EndDateTime`, the data returns for the period from the `StartDateTime` that you supply to today’s date. * If you do not supply an `EndDateTime` or a `StartDateTime`, data returns for the seven days prior to today’s date.'
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.locationId
in: query
required: false
description: A LocationId that you want to retrieve payroll information for. If you do not supply a `LocationId`, data from all locations is returned.
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.staffId
in: query
required: false
description: A list of staff IDs that you want to retrieve payroll information for. If you do not supply a `StaffId`, all active staff members return, ordered by staff ID.
schema:
type: integer
format: int32
example: 123456
- name: request.startDateTime
in: query
required: false
description: The beginning of the date range for the payroll information to be returned. The maximum allowed date range is 14 days. * If you do not supply a `StartDateTime`, data returns for the seven days prior to the `EndDateTime` that you supply. * If you do not supply either a `StartDateTime` or an `EndDateTime`, the data returns for seven days prior to 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/GetTimeCardsResponse'
examples:
Gettimecards200Example:
summary: Default getTimeCards 200 example
x-microcks-default: true
value:
PaginationResponse: {}
TimeCards:
- {}
'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/payroll/tips:
get:
tags:
- Payroll
summary: Mindbody A Staff Authorization Token is Not Required for This Endpoint, but if
description: A staff authorization token is not required for this endpoint, but if one is passed, its permissions are honored. Depending on the access permissions configured for the staff member whose token is passed, the endpoint returns either only the payroll information for that staff member or it returns the payroll information for all staff members. This endpoint returns information for all locations.The** View reports for all locations **permission is not supported for staff auth tokens.
operationId: getTips
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.endDateTime
in: query
required: false
description: 'The end of the date range for the payroll information to be returned. The maximum allowed date range is 14 days.<br /> Default: **Today’s date** * If you do not supply an `EndDateTime`, the data returns for the period from the `StartDateTime` that you supply to today’s date. * If you do not supply an `EndDateTime` or a `StartDateTime`, data returns for the seven days prior to today’s date.'
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.locationId
in: query
required: false
description: A LocationId that you want to retrieve payroll information for. If you do not supply a `LocationId`, data from all locations is returned.
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.staffId
in: query
required: false
description: A list of staff IDs that you want to retrieve payroll information for. If you do not supply a `StaffId`, all active staff members return, ordered by staff ID.
schema:
type: integer
format: int32
example: 123456
- name: request.startDateTime
in: query
required: false
description: The beginning of the date range for the payroll information to be returned. The maximum allowed date range is 14 days. * If you do not supply a `StartDateTime`, data returns for the seven days prior to the `EndDateTime` that you supply. * If you do not supply either a `StartDateTime` or an `EndDateTime`, the data returns for seven days prior to 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/GetTipsResponse'
examples:
Gettips200Example:
summary: Default getTips 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Tips:
- {}
'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: []
components:
schemas:
ScheduledServiceEarningsEvent:
type: object
description: Implementation of the 'ScheduledServiceEarningsEvent' model.
properties:
StaffId:
type: integer
format: int32
description: The ID of the staff member who taught the class.
example: 123456
ScheduledServiceId:
type: integer
format: int32
description: The class' ID.
example: 123456
ScheduledServiceType:
$ref: '#/components/schemas/ScheduledServiceTypeEnum'
description: The type of the scheduled service; i.e, a class, appointment, or enrollment.
Earnings:
type: number
format: double
description: The total monetary amount the staff is to be paid for this class.
example: 1.0
DateTime:
type: string
format: date-time
description: The model property of type datetime.
example: '2026-05-28T14:30:00Z'
TimeCardEvent:
type: object
description: Implementation of the 'TimeCardEvent' model.
properties:
StaffId:
type: integer
format: int32
description: The ID of the requested staff member.
example: 123456
Task:
type: string
description: The staff member’s job title.
example: example-value
TimeIn:
type: string
format: date-time
description: The time that the staff member started the job task.
example: '2026-05-28T14:30:00Z'
TimeOut:
type: string
format: date-time
description: The time that the staff member stopped doing the job task.
example: '2026-05-28T14:30:00Z'
Hours:
type: number
format: double
description: The number of hours on this time card, rounded to the nearest fourth decimal place.
example: 1.0
HourlyRate:
type: number
format: double
description: The hourly rate the business pays this staff for this `Task`.
example: 1.0
Earnings:
type: number
format: double
description: The total amount earned by the staff member for this time card entry.
example: 1.0
Tip:
type: object
description: Implementation of the 'Tip' model.
properties:
StaffId:
type: integer
format: int32
description: The ID of the staff member the tip is for.
example: 123456
SaleId:
type: integer
format: int32
description: The sale’s ID associated with the tip.
example: 123456
SaleDateTime:
type: string
format: date-time
description: The date and time when the tip was given.
example: '2026-05-28T14:30:00Z'
Earnings:
type: number
format: double
description: The amount tipped to the staff member.
example: 1.0
GetScheduledServiceEarningsResponse:
type: object
description: Implementation of the 'GetScheduledServiceEarningsResponse' model.
properties:
PaginationResponse:
$ref: '#/components/schemas/PaginationResponse'
description: Contains information about the pagination used.
ScheduledServiceEarnings:
type: array
items:
$ref: '#/components/schemas/ScheduledServiceEarningsEvent'
description: Contains the class payroll events.
example:
- {}
GetTipsResponse:
type: object
description: Implementation of the 'GetTipsResponse' model.
properties:
PaginationResponse:
$ref: '#/components/schemas/PaginationResponse'
description: Contains information about the pagination used. See Pagination for a description of the Pagination information.
Tips:
type: array
items:
$ref: '#/components/schemas/Tip'
description: Contains information about tips given to staff members within the given date range. Results are ordered by StaffId.
example:
- {}
PaginationResponse:
type: object
description: Implementation of the 'PaginationResponse' model. Contains information about the pagination to use.
properties:
RequestedLimit:
type: integer
format: int32
description: Limit from pagination request
example: 10
RequestedOffset:
type: integer
format: int32
description: Offset from pagination request
example: 10
PageSize:
type: integer
format: int32
description: Number of results returned in this response
example: 1
TotalResults:
type: integer
format: int32
description: Total number of results in dataset
example: 1
ScheduledServiceTypeEnum:
type: string
description: ScheduledServiceTypeEnum enumeration.
enum:
- Class
- Appointment
- Enrollment
- All
CommissionPayrollPurchaseEvent:
type: object
description: Implementation of the 'CommissionPayrollPurchaseEvent' model.
properties:
StaffId:
type: integer
format: int32
description: The ID of the staff member who earned commissions.
example: 123456
SaleDateTime:
type: string
format: date-time
description: The date and time when the sale occurred.
example: '2026-05-28T14:30:00Z'
SaleId:
type: integer
format: int32
description: The sale’s ID.
example: 123456
SaleType:
type: string
description: The Sales type. When this is "Purchase" indicates that this sale paid commission to a staff. When this is "Return"
example: example-value
ProductId:
type: integer
format: int32
description: The product ID of the item for which the staff earned commissions.
example: 123456
EarningsDetails:
type: array
items:
$ref: '#/components/schemas/CommissionDetail'
description: Contains information about which commissions the staff earned for this item.
example:
- {}
Earnings:
type: number
format: double
description: The total commissions earned by the staff for this item.
example: 1.0
GetTimeCardsResponse:
type: object
description: Implementation of the 'GetTimeCardsResponse' model.
properties:
PaginationResponse:
$ref: '#/components/schemas/PaginationResponse'
description: Contains information about the pagination used.
TimeCards:
type: array
items:
$ref: '#/components/schemas/TimeCardEvent'
description: Information about time card entries, ordered by staff ID.
example:
- {}
GetCommissionsResponse:
type: object
description: Implementation of the 'GetCommissionsResponse' model.
properties:
PaginationResponse:
$ref: '#/components/schemas/PaginationResponse'
description: Contains information about the pagination used.
Commissions:
type: array
items:
$ref: '#/components/schemas/CommissionPayrollPurchaseEvent'
description: Contains information about commissions earned by staff for sales within the given date range. Results are ordered by `SaleId`, then by `StaffId`.
example:
- {}
CommissionDetail:
type: object
description: Implementation of the 'CommissionDetail' model.
properties:
CommissionType:
type: string
description: 'The type of commission earned. Possible values are: * ItemStandardPercentageCommission * ItemStandardFlatCommission * ItemPromotionalPercentageCommission * ItemPromotionalFlatCommission * StaffStandardPercentageCommission * StaffStandardFlatCommission * StaffPromotionalPercentageCommission * StaffPromotionalFlatCommission'
example: example-value
CommissionEarnings:
type: number
format: double
description: The portion of `Earnings` earned by this `CommissionType`.
example: 1.0
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: API-Key
description: Mindbody-issued API key (server-to-server). Required on every request.
OAuth2:
type: oauth2
description: OpenID Connect bearer token issued by Mindbody Identity Service (signin.mindbodyonline.com). Required for endpoints that act on behalf of a staff or client user.
flows:
authorizationCode:
authorizationUrl: https://signin.mindbodyonline.com/connect/authorize
tokenUrl: https://signin.mindbodyonline.com/connect/token
scopes:
openid: OpenID Connect base scope.
profile: User profile claims.
email: User email claim.
offline_access: Issue a refresh token.
Mindbody.Api.Public.v6: Access the Mindbody Public API v6 on behalf of the user.