Skip to main content

Overview

Zenoti is a unified CRM and operations platform for salons, spas, medspas, and fitness studios. The zenoti automation type fans out to ~160 actions across reference data, centers, services, employees, guests, memberships, bookings, appointments, invoices, payments, gift cards, opportunities, reports, inventory, classes, blockouts, organizations, and a generic raw-request escape hatch. Every action is invoked the same way — automationType: "zenoti", an action name, and a params object whose shape depends on the action. Most actions follow a consistent pattern:
  • apiKey — always at the top level of params.
  • Path IDs (centerId, guestId, appointmentId, invoiceId, roomId, employeeId, membershipId, …) — top level.
  • query — nested object with query-string filters (pagination, dates, etc.).
  • body — nested object with the POST/PUT request body.

Authentication

  • Zenoti API key — generate it in Admin → Configuration → Apps. The integration sends it as Authorization: apikey <key>.

Common parameters

  • apiKey (required for every action).
  • centerId (required for center-scoped actions; the Zenoti location UUID).
  • Pagination: most list endpoints accept query.page (1-based) and query.size (default 10, max 100).
  • Dates: ISO-8601 (YYYY-MM-DD or full timestamp depending on the endpoint).

Available Actions

Reference Centers Services Employees Guests Guest Memberships Bookings Appointments Invoices Gift Cards Opportunities Reports Inventory Classes Blockouts Organizations Miscellaneous

Examples

Example 1: List Countries


Example 2: List States

States within a country.

Example 3: List Reasons

Standard reasons (cancellation, freeze, etc.).

Example 4: List Gift Card Occasions


Example 5: List Vendors


Example 6: List Centers

All centers in the org.

Example 7: Get Center


Example 8: List Center Rooms


Example 9: List Center Categories


Example 10: List Center Therapists


Example 11: List Center Products


Example 12: List Center Packages


Example 13: Get Center Attendance

Daily attendance roster for a center.

Example 14: Get Center Category


Example 15: Get Center Room


Example 16: List Center Blockouts


Example 17: List Center Memberships


Example 18: Get Center Members

Active membership holders at a center.

Example 19: List Services


Example 20: Get Service


Example 21: Get Service Pricing


Example 22: List Employees


Example 23: Get Employee


Example 24: Create Employee


Example 25: Update Employee


Example 26: Employee Check-in


Example 27: Employee Check-out


Example 28: Get Employee Attendance


Example 29: Search Guests

Search by any combination of email, phone, name, code. center_id is required.

Example 30: List Guests

Bulk list guests at a center.

Example 31: Get Guest


Example 32: Create Guest


Example 33: Update Guest

Full replace — pass any subset of the create body that you want to overwrite.

Example 34: List Guest Appointments


Example 35: List Guest Products


Example 36: List Guest Saved Cards

⚠️ Tenant-config dependent. Only available on tenants with a PCI-compliant payment processor wired up. Note the capital I in center_Id.

Example 37: Add Guest Card

Returns a hosted-payment-page redirect URL for the guest to enter card details (PCI compliant).

Example 38: Delete Guest Saved Card


Example 39: Create Guest Note


Example 40: List Guest Notes


Example 41: Update Guest Note


Example 42: Delete Guest Note


Example 43: List Guest Gift Cards


Example 44: List Guest Packages


Example 45: List Guest Loyalty Points


Example 46: Get Guest Loyalty Points History


Example 47: Add / Remove Loyalty Points

Points is positive to add, negative to remove. Note PascalCase fields.

Example 48: List Guest Relationships


Example 49: Guest Reset Password

Triggers a password reset email/SMS for the guest.

Example 50: Update Guest Password


Example 51: Update Billing Address


Example 52: Create Guest Form


Example 53: Get Guest Form


Example 54: Update Guest Form


Example 55: List Guest Memberships


Example 56: Get Guest Pending Collection

Outstanding balance owed on a membership.

Example 57: Cancel Membership


Example 58: Freeze Membership


Example 59: Unfreeze Membership


Example 60: Change Membership Renewal

Toggle auto-renewal on/off.

Example 61: Create Booking

A “booking” is a holding container for one or more service slots before they are confirmed as appointments.

Example 62: Get Booking Slots

Available time slots for a booking.

Example 63: Reserve Slot


Example 64: Confirm Slot

Converts the reserved slot into a confirmed appointment.

Example 65: List Appointments


Example 66: Get Appointment


Example 67: Mark Appointment No-Show


Example 68: Appointment Check-in


Example 69: Undo Appointment Check-in


Example 70: List Appointment Forms

Forms attached to an appointment (intake, consent, etc.).

Example 71: Get Appointment Form


Example 72: Create Invoice

Creates an open product invoice.

Example 73: Get Invoice


Example 74: Close Invoice


Example 75: Cancel Invoice


Example 76: Email Invoice


Example 77: Add Invoice Membership


Example 78: Add Invoice Product


Example 79: Remove Invoice Product


Example 80: Remove Invoice Membership


Example 81: Pay Invoice — Saved Card


Example 82: Pay Invoice — Gift Card


Example 83: Pay Invoice — Custom


Example 84: Pay Invoice — Tip


Example 85: Pay Invoice — New Card

⚠️ PCI-gated. Only enabled on tenants whose payment processor supports server-side card capture.

Example 86: Email Invoice Gift Card

Send an e-gift-card email to the recipient associated with an invoice.

Example 87: Apply Campaign Offer


Example 88: Redeem Loyalty Points (Invoice)


Example 89: Sell Package

Creates a package-sale invoice for a guest.

Example 90: Redeem Package


Example 91: Create Product Invoice

Same shape as create_invoice — explicit alias.

Example 92: Create Group Invoice

Roll up multiple individual invoices under a single group billing.

Example 93: Get Group Invoice


Example 94: Email Group Invoice


Example 95: Create Gift Card Invoice


Example 96: Get Gift Card Balance


Example 97: Create Custom Amount GC Template


Example 98: Create Service GC Template


Example 99: List Gift Card Templates


Example 100: List Center Gift Card Templates


Example 101: Create Opportunity

CRM lead/opportunity — Zenoti’s sales pipeline.

Example 102: List Opportunities


Example 103: Get Opportunity


Example 104: Update Opportunity

Body shape mirrors create_opportunity.

Example 105: Get Opportunity Metadata

Returns priority types, statuses, dispositions, custom fields, etc.

Example 106: Create Opportunity Note


Example 107: List Opportunity Notes


Example 108: Get Center Collections Report


Example 109: Get Center Sales Report


Example 110: Get Inventory Stock


Example 111: Get Inventory Consumption


Example 112: List Purchase Orders


Example 113: Get Purchase Order


Example 114: List Transfer Orders


Example 115: Get Transfer Order


Example 116: List Class Registrations


Example 117: Register Guest to Class


Example 118: Register via Gympass


Example 119: Cancel Class Registration


Example 120: Cancel Workshop Registration


Example 121: Admin Enroll Class

Admin-only enrollment that bypasses the standard guest-side flow.

Example 122: List Guest Class Sessions


Example 123: Cancel Class Session Registrations

Cancels every registration on a session.

Example 124: Create Class Membership Invoice


Example 125: Create Series Package Invoice

Note the mixed PascalCase / camelCase Zenoti uses here.

Example 126: Book Class Session


Example 127: Close Series Invoice


Example 128: Close Membership Invoice


Example 129: Pay Class Booking — Saved Card


Example 130: List Class Booking Payment Methods


Example 131: List Class Memberships


Example 132: List Class Packages


Example 133: List Class Sessions


Example 134: Create Room Blockout


Example 135: Create Recurring Room Blockout


Example 136: List Room Blockouts


Example 137: Get Room Blockout


Example 138: Update Room Blockout


Example 139: Delete Room Blockout


Example 140: Create Employee Blockout


Example 141: Create Recurring Employee Blockout


Example 142: List Employee Blockouts


Example 143: Get Employee Blockout


Example 144: Update Employee Blockout


Example 145: Delete Employee Blockout


Example 146: List Blockout Time Types

Blockout categories (vacation, training, maintenance, etc.) at the center level.

Example 147: Get Security Profiles

Org-level security profiles.

Example 148: List Org Blockout Time Types

Blockout categories at the org level (vs. per-center).

Example 149: Get Security Roles


Example 150: Generate Shopify Multipass URL

Single-sign-on URL into a linked Shopify storefront.

Example 151: Raw Request

Escape hatch for any Zenoti endpoint not yet first-classed in the integration. The path is appended to the Zenoti regional base URL; the apiKey header is added automatically.

Notes & Caveats

  • PCI-gated endpoints. list_guest_saved_cards, delete_guest_saved_card, add_guest_card, and pay_invoice_new_card only work on Zenoti tenants whose payment processor supports the corresponding flow. Sandboxes (including iFlex) typically return a regional 404 HTML page rather than the API response — ask Zenoti support to enable the payment-processor integration if you see that.
  • Mixed casing. Zenoti’s API is inconsistent about field casing — some endpoints use snake_case, some camelCase, some PascalCase, and a few mix all three within one body (center_Id vs center_id, SessionId + userId + packageIds). Examples above mirror what Zenoti accepts.
  • Center scoping. Most operational endpoints (services, employees, appointments, invoices, memberships, classes, …) require a centerId (or center_id inside query/body). Reference and org-level endpoints don’t.
  • Pagination. query.page is 1-based; query.size defaults to 10 with a server cap of 100.

Third-Party Documentation