CONNECT APP
Build with Mindbody
Business Management
- OAuth
MCP
Give your agent Mindbody tools
Every Mindbody action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's Mindbody account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
"x-pd-app-slug": "mindbody",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Book Appointment:
const result = await mcp.callTool({
name: "mindbody-book-appointment",
arguments: {
clientId: "Client ID",
locationId: 10,
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{project_id}",
"x-pd-environment": "production",
"x-pd-external-user-id": "{external_user_id}", # any stable ID for this user in your system
"x-pd-app-slug": "mindbody",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Book Appointment:
result = await session.call_tool("mindbody-book-appointment", {
"clientId": "Client ID",
"locationId": 10,
})API PROXY
Call the Mindbody API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the Mindbody API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.mindbodyonline.com/public/v6/class/classes",
})
// Any allowed Mindbody endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.mindbodyonline.com/public/v6/class/classes
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkubWluZGJvZHlvbmxpbmUuY29tL3B1YmxpYy92Ni9jbGFzcy9jbGFzc2Vz?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run Mindbody actions from your backend
Connect a user's Mindbody account once, then run Book Appointment on their behalf from your own code — TypeScript, Python, or plain HTTP.
import { PipedreamClient } from "@pipedream/sdk"
const pd = new PipedreamClient({
projectId: process.env.PIPEDREAM_PROJECT_ID!,
clientId: process.env.PIPEDREAM_CLIENT_ID!,
clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
projectEnvironment: "production",
})
const result = await pd.actions.run({
id: "mindbody-book-appointment",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
mindbody: { authProvisionId: "apn_xxxxxxx" },
clientId: "Client ID",
locationId: 10,
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="mindbody-book-appointment",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"mindbody": {"authProvisionId": "apn_xxxxxxx"},
"clientId": "Client ID",
"locationId": 10,
},
)curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
-H "Content-Type: application/json" \
-H "X-PD-Environment: production" \
-H "Authorization: Bearer {access_token}" \
-d '{
"external_user_id": "{external_user_id}",
"id": "mindbody-book-appointment",
"configured_props": {
"mindbody": { "authProvisionId": "apn_xxxxxxx" },
"clientId": "Client ID",
"locationId": 10
}
}'TOOLS
Mindbody actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Book Appointment
actionBooks a client into a one-on-one service appointment (personal training, massage, etc.). All five core parameters are required:clientId,locationId,sessionTypeId,startDateTime, andstaffId. Use Search Clients to find the client ID, List Session Types to findsessionTypeId, and List Staff to findstaffId.startDateTimeformat: ISO 8601YYYY-MM-DDTHH:MM:SS(e.g.,2026-07-15T10:00:00). Location IDs are returned by Get Site Info. See the documentationWritev0.0.3 -
Cancel Appointment
actionCancels an existing appointment by setting its status to Cancelled. Requires the appointment ID — use Get Appointments to find the ID by client, date, or staff. See the documentationWritev0.0.3 -
Get Appointments
actionReturns staff appointments, optionally filtered by date range, client, or staff member. UseclientIdto show all appointments for a specific client — first use Search Clients to find their ID. UsestaffIdto filter by instructor. Date formats:YYYY-MM-DD(e.g.,2026-07-01). Without date filters, returns appointments from the current date forward (up tolimit). See the documentationRead-onlyv0.0.3 -
Get Classes
actionReturns upcoming group class sessions at the studio, including class name, start/end time, instructor, location, and remaining capacity. UsestartDateTimeandendDateTimeto filter by date range (ISO 8601 format, e.g.,2026-07-01T00:00:00). UsestaffIdto find classes taught by a specific instructor — see List Staff for IDs. UselocationIdto filter by studio location — see Get Site Info for location IDs. See the documentationRead-onlyv0.0.3 -
Get Client Details
actionReturns the complete profile for a client (member), including contact info, active memberships, purchased services, account balance, and visit history. Requires the client's numeric ID — use Search Clients first to look up the ID by name or email. See the documentationRead-onlyv0.0.3 -
Get Client Purchases
actionReturns the paginated list of purchases made by a specific Mindbody client, including amount/price fields. Sum the amounts across all pages to compute the client's lifetime spend. Requires the client's numeric ID - use Search Clients first to look up the ID by name or email. IMPORTANT: the API defaultsstartDateto today andendDateto end of today, so for true lifetime spend you MUST setstartDateto an early date (e.g.2000-01-01) and page through all results viaoffset. See the documentationRead-onlyv0.0.2 -
Get Client Visits
actionReturns the paginated list of visit records for a specific Mindbody client (member), each including its date/datetime (e.g.StartDateTime). Use this to derive retention metrics: visit count is the total record count across all pages and last visit date is the latestStartDateTime. Requires the client's numeric ID - use Search Clients first to look up the ID by name or email. Note: Get Client Details may already surface scalar visit-summary fields; use this action when you need the full per-visit history for precise date math or milestone detection. Iterateoffsetto page through the full history. IMPORTANT: the API defaultsstartDateto today andendDateto end of today, so for true lifetime spend you MUST setstartDateto an early date (e.g.2000-01-01) and page through all results viaoffset. See the documentationRead-onlyv0.0.2 -
Get Site Info
actionReturns identity and configuration details for the connected Mindbody site, including name, site ID, timezone, phone, and address. Use this as the identity anchor — call it first to discover the site name, ID, and timezone before querying other resources. Also provides location IDs needed by List Staff, Get Classes, and Book Appointment. See the documentationRead-onlyv0.0.3 -
List Session Types
actionReturns all bookable session types (services) available at the studio, including their IDs, names, and program associations. Use this to discover thesessionTypeIdvalues needed by Book Appointment. Optionally filter byprogramIdsto narrow results to a specific program category. See the documentationRead-onlyv0.0.3 -
List Staff
actionReturns staff members at the studio, including their IDs, names, bio, and role assignments (e.g., ClassTeacher, AppointmentInstructor). Use this to discoverstaffIdvalues needed by Book Appointment and Get Classes. Filter byfiltersto find staff with a specific role (e.g.,AppointmentInstructor). See the documentationRead-onlyv0.0.3 -
Search Clients
actionSearches for client (member) records by name, email address, or phone number. Returns client IDs, contact details, and membership status. Use this to find a client's ID before calling Get Client Details, Get Appointments, or Book Appointment. ThesearchTextmatches against first name, last name, email, and phone — partial matches are supported. See the documentationRead-onlyv0.0.3 -
Upsert Client
actionCreates a new client or updates an existing client record. To create: omitclientId.firstName,lastName, andbirthDateare required for new clients. To update: provideclientId— only the fields you specify will be updated. BirthDate format: ISO datetime stringYYYY-MM-DDTHH:MM:SS(e.g.,1990-05-15T00:00:00). Use Search Clients to find an existing client's ID before updating. See the documentationWritev0.0.3
EVENTS
Mindbody triggers
Event sources your backend can deploy for users and receive through a webhook.
No Mindbody triggers are available yet.
MULTI-APP
Use Mindbody with other popular apps
Most products don't stop at one integration. Pair Mindbody with the other apps your users rely on, and ship use cases that span both.
- App slug
- mindbody
- Authentication
- OAuth
- Categories
- Business Management
- Actions
- 12
- Triggers
- 0
- API proxy
- Available