Check classes, attendance, customers, memberships and invoices in TeamUp and register customers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Confirm that a customer attended an event (check them in). Returns the updated attendance. TeamUp: POST /events/{id}/confirm_attendance.
The customer's numeric id.
The event's numeric id.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Confirm that a customer attended an event (check them in). Returns the updated attendance. TeamUp: POST /events/{id}/confirm_attendance.
| Argument | Type | Description |
|---|---|---|
| customer* | integer | The customer's numeric id. |
| event_id* | integer | The event's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_id",
"customer"
],
"properties": {
"customer": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer's numeric id.",
"exclusiveMinimum": 0
},
"event_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The event's numeric id.",
"exclusiveMinimum": 0
}
}
}Add a new customer to the business as staff. By default TeamUp emails them an invitation to claim the profile; set send_invitation_email=false to add them silently. TeamUp: POST /customers.
| Argument | Type | Description |
|---|---|---|
| string | Email address (used for the invitation). | |
| last_name* | string | Last name. |
| first_name* | string | First name. |
| invitation_note | string | A personal note included in the invitation email. |
| send_invitation_email | boolean | Send the invitation email (TeamUp default: true). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"first_name",
"last_name"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Email address (used for the invitation)."
},
"last_name": {
"type": "string",
"minLength": 1,
"description": "Last name."
},
"first_name": {
"type": "string",
"minLength": 1,
"description": "First name."
},
"invitation_note": {
"type": "string",
"minLength": 1,
"description": "A personal note included in the invitation email."
},
"send_invitation_email": {
"type": "boolean",
"description": "Send the invitation email (TeamUp default: true)."
}
}
}Show the API application this token belongs to and the businesses (providers) it can reach, with their numeric ids — a cheap way to confirm the token works and to find the value for GOTEAMUP_PROVIDER_ID. TeamUp: GET /auth/application.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch one customer by id: name, email, family role, lead flag, CRM status, created date. Use expand for deferred fields, e.g. field_values,credit_balance,staff_assignments. TeamUp: GET /customers/{id}.
| Argument | Type | Description |
|---|---|---|
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| customer_id* | integer | The customer's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"customer_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch one customer membership by id. Use expand=usage_summary,next_billing_date,shared_with for usage, next bill and sharing. TeamUp: GET /customer_memberships/{id}.
| Argument | Type | Description |
|---|---|---|
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| customer_membership_id* | integer | The customer membership's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_membership_id"
],
"properties": {
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"customer_membership_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer membership's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch one class or appointment by id, including capacity, attending/waiting counts, registration open/close and late-cancel deadlines. TeamUp: GET /events/{id}.
| Argument | Type | Description |
|---|---|---|
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| event_id* | integer | The event's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_id"
],
"properties": {
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"event_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The event's numeric id.",
"exclusiveMinimum": 0
}
}
}Fetch one invoice by id. Use expand=line_items,charges,discounts,taxes,applied_credits for the breakdown. TeamUp: GET /invoices/{id}.
| Argument | Type | Description |
|---|---|---|
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| invoice_id* | integer | The invoice's numeric id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoice_id"
],
"properties": {
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"invoice_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The invoice's numeric id.",
"exclusiveMinimum": 0
}
}
}List bookings: who is registered for, attended, no-showed or late-cancelled which event, and with which customer membership. Filter by customer, event, venue, offering type, status or event start window. Use expand=customer,event for names. TeamUp: GET /attendances.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort | string | Ordering; '-' for descending. |
| event | array | Only these event ids. |
| venue | array | Only these venue ids. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| status | array | Attendance status; plans_to_attend = registered or waitlisted. |
| customer | array | Only these customer ids. |
| page_size |
List logged CRM interactions (calls, emails, meetings, contacted) with notes and who logged them, optionally for one customer. Requires a super_admin-level token. TeamUp: GET /crm/interactions.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| customer | integer | Only interactions for this customer id. |
| page_size | integer | Results per page, 1-100 (default 100). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"customer": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only interactions for this customer id.",
"exclusiveMinimum": 0
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
}
}
}List memberships held by customers — status (active, hold, complete, cancelled), start/expiration/renewal dates, billed price, active hold. Filter by customer, membership plan, type, status, dates or holds. TeamUp: GET /customer_memberships.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these customer membership ids. |
| page | integer | Page number, starting at 1. |
| sort | string | Ordering; '-' for descending. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| status | array | Customer membership status. |
| customer | array | Only these customer ids. |
| page_size | integer | Results per page, 1-100 (default 100). |
| membership |
Search and list the business's customers (members and leads). Filter by free text (email and name), CRM status, active memberships, age or family. Deferred fields such as field_values, credit_balance or sms_account can be added with expand. TeamUp: GET /customers.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these customer ids. |
| page | integer | Page number, starting at 1. |
| query | string | Free-text match against email and name. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| family | integer | Only customers in this family id. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| status | array | CRM status slugs, as shown in a customer's `status` field; pass 'null' for customers without a status. |
| age_gte | number | Minimum age in years. |
List scheduled sessions — classes and appointments — with start/end time, status, capacity, attending and waitlist counts, instructors, venue and offering type. Filter by time window, instructor, venue, offering type, status or occupancy. TeamUp: GET /events.
| Argument | Type | Description |
|---|---|---|
| ids | array | Only these event ids. |
| page | integer | Page number, starting at 1. |
| sort | string | Ordering; '-' for descending. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| status | array | Event status. |
| venues | array | Only events at these venue ids. |
| page_size | integer | Results per page, 1-100 (default 100). |
| ends_at_gte | string |
List the business's instructors (coaches, trainers) with name, bio and linked staff id. TeamUp: GET /instructors.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| query | string | Free-text match on the instructor. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| page_size | integer | Results per page, 1-100 (default 100). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"query": {
"type": "string",
"description": "Free-text match on the instructor."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
}
}
}List invoices with status (open, paid, failed, voided, upcoming, …), due date, amount due, payer and receipt URL. Filter by status or a customer membership. TeamUp: GET /invoices.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort | string | Ordering; '-' for descending. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| status | array | Invoice status. |
| page_size | integer | Results per page, 1-100 (default 100). |
| customer_membership | integer | Only invoices for this customer membership id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"due_date",
"-due_date"
],
"type": "string",
"description": "Ordering; '-' for descending."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"status": {
"type": "array",
"items": {
"enum": [
"open",
"paid",
"pending_offline",
"pending",
"failed",
"voided",
"retrying",
"retry_failed",
"upcoming",
"draft",
"skipped"
],
"type": "string"
},
"description": "Invoice status."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
},
"customer_membership": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only invoices for this customer membership id.",
"exclusiveMinimum": 0
}
}
}List the membership products the business sells — packs, recurring and prepaid plans — with price, duration, allotment, active member count and visibility. TeamUp: GET /memberships.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| for_sale | boolean | Only memberships currently for sale (true) or not (false). |
| is_dropin | boolean | Filter drop-in memberships. |
| page_size | integer | Results per page, 1-100 (default 100). |
| name_contains | string | Only memberships whose name contains this text. |
| visible_to_customers | boolean | Filter by customer visibility. |
List offering types — the kinds of classes, appointments and courses the business runs — with schedule type, drop-in price, age limits, visibility and status. TeamUp: GET /offering_types.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort | string | Ordering; '-' for descending. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| status | string | Offering type status. |
| page_size | integer | Results per page, 1-100 (default 100). |
| name_contains | string | Only offering types whose name contains this text. |
| has_active_sessions | boolean | Only offering types with upcoming active sessions. |
List the business's venues (physical locations and online venues) with address, timezone and rooms. TeamUp: GET /venues.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| expand | string | Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors. |
| fields | string | Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at. |
| status | string | Venue status. |
| page_size | integer | Results per page, 1-100 (default 100). |
| has_active_sessions | boolean | Only venues with non-cancelled sessions. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"status": {
"enum": [
"active",
"archived"
],
"type": "string",
"description": "Venue status."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
},
"has_active_sessions": {
"type": "boolean",
"description": "Only venues with non-cancelled sessions."
}
}
}Record a call, email, meeting or contact with a customer or lead, with an optional note and call outcome. Requires a super_admin-level token. TeamUp: POST /crm/interactions.
| Argument | Type | Description |
|---|---|---|
| note | string | Free-text notes about the interaction. |
| customer* | integer | The customer's numeric id. |
| call_outcome | string | Outcome — only for interaction_type=Call. |
| interaction_type* | string | Kind of interaction. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer",
"interaction_type"
],
"properties": {
"note": {
"type": "string",
"description": "Free-text notes about the interaction."
},
"customer": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer's numeric id.",
"exclusiveMinimum": 0
},
"call_outcome": {
"enum": [
"Connected",
"No Answer",
"Voicemail"
],
"type": "string",
"description": "Outcome — only for interaction_type=Call."
},
"interaction_type": {
"enum": [
"Call",
"Contacted",
"Email",
"Meeting"
],
"type": "string",
"description": "Kind of interaction."
}
}
}Register a customer for a class or appointment, optionally using a specific customer membership, or comped (free). Returns the attendance id. Undo with goteamup_unregister_customer_from_event. TeamUp: POST /events/{id}/register.
| Argument | Type | Description |
|---|---|---|
| comped | boolean | Book as comped (no membership use / charge). Default false. |
| customer* | integer | The customer's numeric id. |
| event_id* | integer | The event's numeric id. |
| customer_membership | integer | The customer membership id to book with (omit to let TeamUp choose). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_id",
"customer"
],
"properties": {
"comped": {
"type": "boolean",
"description": "Book as comped (no membership use / charge). Default false."
},
"customer": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer's numeric id.",
"exclusiveMinimum": 0
},
"event_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The event's numeric id.",
"exclusiveMinimum": 0
},
"customer_membership": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer membership id to book with (omit to let TeamUp choose).",
"exclusiveMinimum": 0
}
}
}Cancel a customer's booking for a class or appointment. is_late_cancel=true records it as a LATE cancel, which can trigger the business's penalty rules — leave it unset unless asked. The response says whether it counted as late. TeamUp: POST /events/{id}/unregister.
| Argument | Type | Description |
|---|---|---|
| customer* | integer | The customer's numeric id. |
| event_id* | integer | The event's numeric id. |
| is_late_cancel | boolean | Record as a late cancellation (may incur penalties). Omit unless explicitly requested. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event_id",
"customer"
],
"properties": {
"customer": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer's numeric id.",
"exclusiveMinimum": 0
},
"event_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The event's numeric id.",
"exclusiveMinimum": 0
},
"is_late_cancel": {
"type": "boolean",
"description": "Record as a late cancellation (may incur penalties). Omit unless explicitly requested."
}
}
}| integer |
| Results per page, 1-100 (default 100). |
| offering_types | array | Only these offering type ids. |
| event_starts_at_gte | string | Only attendances for events starting at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). |
| event_starts_at_lte | string | Only attendances for events starting at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"event_starts_at",
"-event_starts_at",
"customer.created_at",
"-customer.created_at"
],
"type": "string",
"description": "Ordering; '-' for descending."
},
"event": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these event ids."
},
"venue": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these venue ids."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"status": {
"type": "array",
"items": {
"enum": [
"not_registered",
"registered",
"attended",
"no_show",
"late_cancelled",
"plans_to_attend"
],
"type": "string"
},
"description": "Attendance status; plans_to_attend = registered or waitlisted."
},
"customer": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these customer ids."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
},
"offering_types": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these offering type ids."
},
"event_starts_at_gte": {
"type": "string",
"description": "Only attendances for events starting at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z)."
},
"event_starts_at_lte": {
"type": "string",
"description": "Only attendances for events starting at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z)."
}
}
}| array |
| Only these membership (plan) ids. |
| start_date_gte | string | Start date on or after (date, YYYY-MM-DD). |
| start_date_lte | string | Start date on or before (date, YYYY-MM-DD). |
| has_active_hold | boolean | Only memberships with (true) or without (false) a current or upcoming hold. |
| membership_type | array | Membership type. |
| expiration_date_gte | string | Expiration date on or after (date, YYYY-MM-DD). |
| expiration_date_lte | string | Expiration date on or before (date, YYYY-MM-DD). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these customer membership ids."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"start_date",
"-start_date",
"expiration_date",
"-expiration_date",
"status",
"-status",
"membership.name",
"-membership.name",
"membership.type",
"-membership.type"
],
"type": "string",
"description": "Ordering; '-' for descending."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"status": {
"type": "array",
"items": {
"enum": [
"active",
"hold",
"complete",
"cancelled"
],
"type": "string"
},
"description": "Customer membership status."
},
"customer": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these customer ids."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
},
"membership": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these membership (plan) ids."
},
"start_date_gte": {
"type": "string",
"description": "Start date on or after (date, YYYY-MM-DD)."
},
"start_date_lte": {
"type": "string",
"description": "Start date on or before (date, YYYY-MM-DD)."
},
"has_active_hold": {
"type": "boolean",
"description": "Only memberships with (true) or without (false) a current or upcoming hold."
},
"membership_type": {
"type": "array",
"items": {
"enum": [
"pack",
"recurring",
"prepaid"
],
"type": "string"
},
"description": "Membership type."
},
"expiration_date_gte": {
"type": "string",
"description": "Expiration date on or after (date, YYYY-MM-DD)."
},
"expiration_date_lte": {
"type": "string",
"description": "Expiration date on or before (date, YYYY-MM-DD)."
}
}
}| age_lte |
| number |
| Maximum age in years. |
| deleted | boolean | Filter by deleted (true) or not deleted (false). |
| page_size | integer | Results per page, 1-100 (default 100). |
| autocomplete | string | Prefix match from the start of email and name fields. |
| active_memberships | array | Only customers holding one of these membership (plan) ids. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these customer ids."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"query": {
"type": "string",
"description": "Free-text match against email and name."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"family": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only customers in this family id.",
"exclusiveMinimum": 0
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"status": {
"type": "array",
"items": {
"type": "string"
},
"description": "CRM status slugs, as shown in a customer's `status` field; pass 'null' for customers without a status."
},
"age_gte": {
"type": "number",
"description": "Minimum age in years."
},
"age_lte": {
"type": "number",
"description": "Maximum age in years."
},
"deleted": {
"type": "boolean",
"description": "Filter by deleted (true) or not deleted (false)."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
},
"autocomplete": {
"type": "string",
"description": "Prefix match from the start of email and name fields."
},
"active_memberships": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only customers holding one of these membership (plan) ids."
}
}
}| Only events ending at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). |
| ends_at_lte | string | Only events ending at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). |
| instructors | array | Only events taught by these instructor ids ('me' for your own). |
| starts_at_gte | string | Only events starting at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). |
| starts_at_lte | string | Only events starting at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z). |
| offering_types | array | Only events of these offering type (class type) ids. |
| occupancy_status | array | Only events matching at least one of these occupancy states. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only these event ids."
},
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"start",
"-start",
"end",
"-end"
],
"type": "string",
"description": "Ordering; '-' for descending."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"status": {
"type": "array",
"items": {
"enum": [
"active",
"cancelled"
],
"type": "string"
},
"description": "Event status."
},
"venues": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only events at these venue ids."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
},
"ends_at_gte": {
"type": "string",
"description": "Only events ending at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z)."
},
"ends_at_lte": {
"type": "string",
"description": "Only events ending at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z)."
},
"instructors": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "string",
"const": "me"
}
]
},
"description": "Only events taught by these instructor ids ('me' for your own)."
},
"starts_at_gte": {
"type": "string",
"description": "Only events starting at or after (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z)."
},
"starts_at_lte": {
"type": "string",
"description": "Only events starting at or before (ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z)."
},
"offering_types": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Only events of these offering type (class type) ids."
},
"occupancy_status": {
"type": "array",
"items": {
"enum": [
"full",
"has_registrations",
"has_waitlist",
"empty",
"not_full"
],
"type": "string"
},
"description": "Only events matching at least one of these occupancy states."
}
}
}| permits_registration_for_event |
| integer |
| Only memberships that can be used to book this event id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"for_sale": {
"type": "boolean",
"description": "Only memberships currently for sale (true) or not (false)."
},
"is_dropin": {
"type": "boolean",
"description": "Filter drop-in memberships."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
},
"name_contains": {
"type": "string",
"description": "Only memberships whose name contains this text."
},
"visible_to_customers": {
"type": "boolean",
"description": "Filter by customer visibility."
},
"permits_registration_for_event": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Only memberships that can be used to book this event id.",
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"name",
"-name",
"order",
"-order"
],
"type": "string",
"description": "Ordering; '-' for descending."
},
"expand": {
"type": "string",
"description": "Comma-separated related fields to expand into full objects (dot-nested, max depth 4), e.g. customer,event.instructors."
},
"fields": {
"type": "string",
"description": "Comma-separated fields to return (dot notation for nested), e.g. id,name,starts_at."
},
"status": {
"enum": [
"active",
"archived"
],
"type": "string",
"description": "Offering type status."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page, 1-100 (default 100)."
},
"name_contains": {
"type": "string",
"description": "Only offering types whose name contains this text."
},
"has_active_sessions": {
"type": "boolean",
"description": "Only offering types with upcoming active sessions."
}
}
}