Mindbody Sale API

Sale operations.

Documentation

Specifications

Code Examples

Other Resources

OpenAPI Specification

mindbody-sale-api-openapi.yml Raw ↑
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