openapi: 3.0.3
info:
title: Mindbody Public API v6 Appointment Sale 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: Sale
description: Sale operations.
paths:
/public/v6/sale/acceptedcardtypes:
get:
tags:
- Sale
summary: Mindbody Gets a List of Card Types That the Site Accepts. You Can Also Use `GET
description: 'Gets a list of card types that the site accepts. You can also use `GET Sites` to return the Site object, which contains individual accepted card types for requested sites. This endpoint has no query parameters.The response returns a list of strings. Possible values are: * Visa * MasterCard * Discover * AMEX'
operationId: getAcceptedCardTypes
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
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/sale/alternativepaymentmethods:
get:
tags:
- Sale
summary: Mindbody Get Alternative and Local Payment Methods That Are Allowed for a Site
description: 'Get alternative and local payment methods that are allowed for a site. These payment methods can later be used in `Initiate Checkout Shopping Cart Using Alternative Payments` and `Initiate Purchase Contract Using Alternative Payments` to make the payment. The currently supported alternative payments are: - iDEAL - Apple Pay **Notes:** - This endpoint is only available for Studios on MBPS (Mindbody Payments) with Stripe payment processor. - This endpoint only supports the online store location (LocationId = 98). If LocationId is not provided, it will default to 98.'
operationId: getAlternativePaymentMethods
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.clientId
in: query
required: false
description: The client ID
schema:
type: string
example: example-value
- name: request.locationId
in: query
required: false
description: 'The location ID Default: **null** (Online store location)'
schema:
type: integer
format: int32
example: 123456
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetAlternativePaymentMethodsResponse'
examples:
Getalternativepaymentmethods200Example:
summary: Default getAlternativePaymentMethods 200 example
x-microcks-default: true
value:
PaymentMethods:
- {}
'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/sale/contracts:
get:
tags:
- Sale
summary: Mindbody Returns the Contracts and Autopay Options That Are Available on a
description: Returns the contracts and autopay options that are available on a location-by-location basis. Depending on the configurations established by the site, this endpoint returns options that can be used to sign up clients for recurring payments for services offered by the business.
operationId: getContracts
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: request.locationId
in: query
required: true
description: The ID of the location that has the requested contracts and AutoPay options.
schema:
type: integer
format: int32
example: 123456
- 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.contractIds
in: query
required: false
description: When included, the response only contains details about the specified contract IDs.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- 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.promoCode
in: query
required: false
description: PromoCode to apply
schema:
type: string
example: example-value
- name: request.soldOnline
in: query
required: false
description: 'When `true`, the response only contains details about contracts and AutoPay options that can be sold online. When `false`, all contracts are returned. Default: **false**'
schema:
type: boolean
example: true
- name: request.uniqueClientId
in: query
required: false
description: The ID of the client.
schema:
type: integer
format: int32
example: 123456
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetContractsResponse'
examples:
Getcontracts200Example:
summary: Default getContracts 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/sale/custompaymentmethods:
get:
tags:
- Sale
summary: Mindbody Get Payment Methods That Can Be Used to Pay for Sales at a Site
description: Get payment methods that can be used to pay for sales at a site.
operationId: getCustomPaymentMethods
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.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/GetCustomPaymentMethodsResponse'
examples:
Getcustompaymentmethods200Example:
summary: Default getCustomPaymentMethods 200 example
x-microcks-default: true
value:
PaginationResponse: {}
PaymentMethods:
- {}
'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/sale/giftcardbalance:
get:
tags:
- Sale
summary: Mindbody Returns a Gift Card’s Remaining Balance
description: Returns a gift card’s remaining balance.
operationId: getGiftCardBalance
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: barcodeId
in: query
required: false
description: The barcode ID of the gift card for which you want the balance.
schema:
type: string
example: example-value
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetGiftCardBalanceResponse'
examples:
Getgiftcardbalance200Example:
summary: Default getGiftCardBalance 200 example
x-microcks-default: true
value:
BarcodeId: example-value
RemainingBalance: 49.99
'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/sale/giftcards:
get:
tags:
- Sale
summary: Mindbody Returns Information About Gift Cards That Can Be Purchased
description: Returns information about gift cards that can be purchased.
operationId: getGiftCards
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.ids
in: query
required: false
description: 'Filters the results to the requested gift card IDs.<br /> Default: **all** gift cards.'
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.includeCustomLayouts
in: query
required: false
description: 'When `true`, includes custom gift card layouts.<br /> When `false`, includes only system layouts. 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.locationId
in: query
required: false
description: When included, returns gift cards that are sold at the provided location ID.
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.soldOnline
in: query
required: false
description: 'When `true`, only returns gift cards that are sold online.<br /> Default: **false**'
schema:
type: boolean
example: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetGiftCardResponse'
examples:
Getgiftcards200Example:
summary: Default getGiftCards 200 example
x-microcks-default: true
value:
PaginationResponse: {}
GiftCards:
- {}
'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/sale/packages:
get:
tags:
- Sale
summary: Mindbody A Package is Typically Used to Combine Multiple Services And/or
description: A package is typically used to combine multiple services and/or products into a single offering. Staff members can check out multiple appointments while selling the package, and can discount the items included. For example, a spa might bundle a massage, a pedicure, a manicure, a facial, and a few selected beauty products into a package.
operationId: getPackages
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.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: 'The location ID to use to determine the tax for the products that this request returns.<br /> Default: **online store**'
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.packageIds
in: query
required: false
description: A list of the packages IDs to filter by.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.sellOnline
in: query
required: false
description: 'When `true`, only returns products that can be sold online.<br /> When `false`, all products are returned.<br /> Default: **false**'
schema:
type: boolean
example: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetPackagesResponse'
examples:
Getpackages200Example:
summary: Default getPackages 200 example
x-microcks-default: true
value:
Packages:
- {}
PaginationResponse: {}
'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/sale/products:
get:
tags:
- Sale
summary: Mindbody Get Retail Products Available for Purchase at a Site
description: Get retail products available for purchase at a site.
operationId: getProducts
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.categoryIds
in: query
required: false
description: A list of revenue category IDs to filter by. Use this ID when calling the GET Categories endpoint.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- 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: 'The location ID to use to determine the tax for the products that this request returns.<br /> Default: **online store**'
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.productIds
in: query
required: false
description: The barcode number of the product to be filter by.
schema:
type: array
items:
type: string
example:
- example-value
- name: request.searchText
in: query
required: false
description: A search filter, used for searching by term.
schema:
type: string
example: example-value
- name: request.secondaryCategoryIds
in: query
required: false
description: A list of secondary categories to filter by. Use this ID when calling the GET Categories endpoint.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
- name: request.sellOnline
in: query
required: false
description: 'When `true`, only products that can be sold online are returned.<br /> When `false`, all products are returned.<br /> Default: **false**'
schema:
type: boolean
example: true
- name: request.subCategoryIds
in: query
required: false
description: A list of subcategory IDs to filter by. Use this ID when calling the GET Categories endpoint.
schema:
type: array
items:
type: integer
format: int32
example:
- 1
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetProductsResponse'
examples:
Getproducts200Example:
summary: Default getProducts 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Products:
- {}
'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: []
put:
tags:
- Sale
summary: Mindbody Update Retail Products Available for Purchase at a Site
description: Update retail products available for purchase at a site.
operationId: updateProducts
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:
type: array
items:
$ref: '#/components/schemas/UpdateProductRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetProductsResponse'
examples:
Updateproducts200Example:
summary: Default updateProducts 200 example
x-microcks-default: true
value:
PaginationResponse: {}
Products:
- {}
'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/sale/productsinventory:
get:
tags:
- Sale
summary: Mindbody Get Retail Products Inventory Data Available at a Site
description: Get retail products inventory data available at a site.
operationId: getProductsInventory
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.barcodeIds
in: query
required: false
description: When included, the response only contains details about the specified Barcode Ids.
schema:
type: array
items:
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.locationIds
in: query
required: false
description: When included, the response only contains details about the specified location Ids.
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.productIds
in: query
required: false
description: When included, the response only contains details about the specified product Ids.
schema:
type: array
items:
type: string
example:
- example-value
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/GetProductsInventoryResponse'
examples:
Getproductsinventory200Example:
summary: Default getProductsInventory 200 example
x-microcks-default: true
value:
PaginationResponse: {}
ProductsInventory:
- {}
'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/sale/purchasecontractstatus:
get:
tags:
- Sale
summary: Mindbody Fetches the Status of an Initiate Purchase Contract Given AccessToken
description: 'Fetches the status of an initiate purchase contract given accessToken. This endpoint complements the `Initiate Purchase Contract Using Alternative Payments` endpoint. `Initiate Purchase Contract Using Alternative Payments` endpoint will capture the intent to purchase a contract, and return a redirect URL for the end user to make the payment. Once the payment concludes, the end user will be redirected back to the PaymentAuthenticationCallbackUrl, which was provided while invoking the `Initiate Purchase Contract Using Alternative Payments` endpoint. You can then invoke this endpoint to obtain the `PurchaseContractResponse`. **For a comprehensive guide, follow this tutorial:** [Purchase a Contract](https://developers.mindbodyonline.com/ui/documentation/public -api#/http/tutorials/purchase-a-contract) The currently supported alternative payments are: - iDEAL - Apple Pay'
operationId: getPurchaseContractStatus
parameters:
- name: version
in: path
required: true
description: version of the api.
schema:
type: string
example: example-value
- name: accessToken
in: query
required: true
description: The request query parameter.
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
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseContractResponse'
examples:
Getpurchasecontractstatus200Example:
summary: Default getPurchaseContractStatus 200 example
x-microcks-default: true
value:
ClientId: example-value
UniqueClientId: 123456
LocationId: 123456
ContractId: 123456
ClientContractId: 123456
Totals: {}
PaymentProcessingFailures:
- {}
'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/sale/sales:
get:
tags:
- Sale
summary: Mindbody Get Sales Completed at a Site
description: Get sales completed at a site.
operationId: getSales
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.endSaleDateTime
in: query
required: false
description: Filters results to sales that happened before this date and time.
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
# --- truncated at 32 KB (242 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mindbody/refs/heads/main/openapi/mindbody-sale-api-openapi.yml