Skip to content

Data model and terminology (V1)

V1 retires on January 15, 2027

Use Data model and terminology with V2 for new work. See the migration guide when you move an integration.

This page explains the names V1 uses for resources, fields and IDs, and how they relate to the names in the Back Office. It is complete for V1: you do not need the V2 pages to read it. It also applies to webhook registrations created before the V2 release, which keep V1 payloads. MCP tools use V2 names.

What V1 exposes

All V1 resources are under /api/v1/management/. Read the table by resource.

Resource Endpoint What you can do
Class /classes/ List and retrieve
Appointment /appointments/ List and retrieve
Booking /bookings/ List, retrieve, create, cancel and set attendance
Client /clients/ List, retrieve, create, archive, tag and untag
Client note /client-notes/ List, retrieve and create
Tag and tag group /tags/, /tag-groups/ List, retrieve and create
Pass /passes/ List and retrieve
Client pass /client-passes/ List, retrieve, enable and disable
Subscription /subscriptions/ List and retrieve
Client subscription /client-subscriptions/ List and retrieve
Teacher /teachers/ List and retrieve
Venue /venues/ List, retrieve and create
Webhook registration /webhook-registrations/ List, retrieve, create and update

V1 has no endpoints for services, appointment services, appointment slots, levels, discount codes, gift cards, products, invoices, teacher pay rates or communications.

Company and venue

A company is the business whose data you access through the Public API or MCP. A venue is a physical place belonging to a company. Use the company identifier for company scope and the venue identifier when selecting a physical place.

venue is the resource name in /venues/ and the Back Office. Older surfaces call the same place an establishment. Do not confuse it with a Back Office location, which is a group of venues billed as one entity.

On bookings, V1 names the venue field location_id. On classes and appointments it is venue_id. Both hold a venue ID.

Client

client is the V1 resource name (/clients/). In the Back Office, "client" is the umbrella term for leads, customers and members.

  • The member-create and member-update webhook events keep the historical name, but their data object is a client and data.id is the client ID.
  • A client's registration data, such as the reference number, is in the membership object.
  • consumer, customer and user describe the platform-wide account in older surfaces. They are not client IDs and must not be used to call /clients/{id}/.

Class, appointment and session

Read the table by term. It shows what each term is and where it appears in V1.

Term What it is Where it appears
class A group fitness session with a fixed schedule and capacity. /classes/ endpoint
appointment A private 1-on-1 session booked by one client with one teacher. /appointments/ endpoint
offer The historical event name for a class. Webhook events offer-create and offer-update, whose data is a class
session A deprecated name for a class ID. Booking input session_id and session_ids, and output session_id and session_start_at

V1 has no separate session resource. A booking's class_id and its deprecated session_id alias hold the same ID. Use either with GET /api/v1/management/classes/{class_id}/. Prefer class_id and class_start_at, because the session aliases are deprecated.

Services

On a class or an appointment, service_id is the ID of the offering the session is based on. V1 has no /services/ or /appointment-services/ endpoint, so you cannot look a service up from the ID.

  • On classes, service_id is an internal scheduling record ID. Legacy classes without a linked service return null. The service_id filter on /classes/ uses the same ID.
  • On appointments, service_id identifies the private service and slot_id identifies its duration and credit option. The service_id filter on /appointments/ uses the same ID.
  • On bookings, the meta_activity_ids filter selects by service and the activity_ids filter by activity. Only meta_activity_ids has a V2 equivalent, service_ids.

Never reuse these IDs in V2: a V1 service_id on a class selects an unrelated service there.

Teacher

V1 exposes the company-scoped instructor record at /teachers/ under the term teacher.

Term What it is Where it appears
teacher An instructor associated with a specific studio. /teachers/ endpoint, and teacher_id on classes
associated_coach The same record, using the historical event name. Webhook events associated_coach-create, -update and -delete
coach The platform-level instructor account shared across studios. Legacy Back Office surfaces, and teacher_id on appointments and bookings

The meaning of teacher_id depends on the resource. Read the table by field.

Field What the ID identifies How to resolve it
Class teacher_id and filter The effective teacher: the substitute when one is assigned, otherwise the main teacher. is_teacher_substitute tells you which. A teacher ID from /teachers/
Appointment teacher_id and filter A platform-wide coach, or null when none is assigned Not a /teachers/ ID. Do not look it up there
Booking teacher_id, substitute_teacher_id and the teacher_ids filter Platform-wide coaches. Both can be null on legacy bookings Not a /teachers/ ID. Do not look it up there

Teacher IDs from /teachers/ are company-specific: the same person has a different ID in each company.

For associated_coach-create and associated_coach-update, data is a teacher and data.id is the company-specific teacher ID.

Passes and subscriptions

V1 names a pass without saying which kind of session it grants. Read the table by product.

Product Product owned by a client
pass client_pass
subscription client_subscription
  • A pass is a pass product that grants credits. A client_pass is a pass owned by a client: it holds the remaining credits, and pass_id points to its pass.
  • A subscription is a subscription product. A client_subscription is a subscription owned by a client, and subscription_id points to its subscription. The Back Office calls a subscription a membership.
  • A subscription's benefit_type is pass, appointment_pass or pack, and benefit_id identifies the benefit. V1 has no endpoint to read an appointment pass or a pack.

V2 splits pass and client_pass into class pass and appointment pass resources. Do not use the V1 names for V2 resources.

Legacy route names

These names belong to the V1 routes outside /api/v1/management/, removed on November 30, 2026. They appear in old integrations and in the legacy Back Office webhooks, and they are not event families in the current webhook catalogue. Read the table by legacy route to find its replacement in each version.

Legacy route Replacement in V1 Replacement in V2
/api/v1/bookings/ /api/v1/management/bookings/ /api/v2/management/bookings/
/api/v1/members/ /api/v1/management/clients/ /api/v2/management/clients/
/api/v1/contracts/ /api/v1/management/subscriptions/ /api/v2/management/subscriptions/
/api/v1/billing_plans/ /api/v1/management/client-subscriptions/ /api/v2/management/client-subscriptions/
/api/v1/payment_packs/ /api/v1/management/client-passes/ /api/v2/management/client-class-passes/
/api/v1/consumer_payment_packs/ /api/v1/management/client-passes/ /api/v2/management/client-class-passes/

Find the ID you need

Use IDs returned by the V1 resource you are referencing. Do not substitute platform account IDs.

Required value Where to obtain it
class_id, class_ids (or deprecated session_id, session_ids) /api/v1/management/classes/
client_id /api/v1/management/clients/
client_pass_id /api/v1/management/client-passes/?client_ids=123
pass_id /api/v1/management/passes/
Class teacher_id /api/v1/management/teachers/
Appointment or booking teacher_id Not available. V1 has no coach endpoint
venue_id /api/v1/management/venues/
service_id, appointment slot_id Not available. V1 has no endpoint for them
tag_id /api/v1/management/tags/