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.
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.
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.
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.
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.