Knowledge baseDevelopers & API

Endpoints reference

Every path is namespaced by platform — mindbody, booker, or ghl. Below is the shape of each group; the interactive docs have the full request/response schemas and a try-it-out panel.

Discovery services.read

Read-only catalogs, backed by a 6-hour cache. Use these to find the IDs you'll pass to availability and bookings.

MethodPathReturns
GET/api/v1/{platform}/servicesBookable services (MB SessionTypes, Booker treatments, GHL calendars).
GET/api/v1/{platform}/classesClass descriptions. Mindbody only — Booker returns 501.
GET/api/v1/{platform}/staffStaff / instructors / providers.
GET/api/v1/{platform}/resourcesRooms / equipment.

Pass ?activeOnly=false to include archived entries (default is active only).

Availability availability.read

GET /api/v1/{platform}/availability returns live free slots — never cached. Give it a window (from/to, ISO 8601 UTC, ≤ 31 days) plus exactly one of serviceId, classDescriptionId (Mindbody), or ghlCalendarId (when platform=ghl). Optional staffId, resourceId, and durationMin narrow the results.

curl -G https://autosync.io/api/v1/mindbody/availability \
  -H "Authorization: Bearer asyk_live_…" \
  --data-urlencode "serviceId=12345" \
  --data-urlencode "from=2026-05-15T00:00:00Z" \
  --data-urlencode "to=2026-05-16T00:00:00Z"

Bookings

MethodPathScopeDoes
POST/api/v1/{platform}/bookingsbookings.writeCreate a booking; resolves or creates the contact; dual-writes to HighLevel.
GET/api/v1/{platform}/bookings/{id}bookings.readFetch a normalized booking by platform ID.
PATCH/api/v1/{platform}/bookings/{id}bookings.writeReschedule / update (only the fields you send).
DELETE/api/v1/{platform}/bookings/{id}bookings.writeCancel; mirrors the cancel to the linked HighLevel event.

Creating a booking needs a contact (with at least one of email, phone, ghlContactId, or platformContactId) and a startDateTime. Set autoCreateContact: true to create the contact when no match is found — otherwise an unknown contact returns 404 contact.not_found. Send an Idempotency-Key so retries can't double-book.

curl -X POST https://autosync.io/api/v1/mindbody/bookings \
  -H "Authorization: Bearer asyk_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 5f9c2b7e-3a1d-4e88-9c0a-1b2c3d4e5f60" \
  -d '{
    "serviceId": "12345",
    "contact": { "email": "[email protected]", "firstName": "Jane" },
    "startDateTime": "2026-05-15T14:00:00Z",
    "staffId": "67890",
    "autoCreateContact": true
  }'

The response includes the normalized booking, how the contact was resolved (matched_by_email / matched_by_phone / matched_by_id / created), the ghlEventId from the dual-write, and a partialSuccess flag if the platform booking succeeded but a follow-up step didn't.

Meta no auth

  • GET /api/v1/ — endpoint catalog + supported platforms.
  • GET /api/v1/openapi.json — the OpenAPI 3.1 spec.
  • GET /api/v1/ping — auth smoke test (needs a key; echoes your resolved context).
i

Rather build with an AI agent than raw HTTP? The same operations are exposed as MCP tools — see Connect an AI agent.

Last updated July 2026

Which platform do you use?

Pick where your bookings live — we'll start your 30-day free trial there.

Mindbody Fitness studios, gyms & boutiques Booker Salons, spas & med-spas