Links and hand-off

The API is read-only. Enrolling, buying, booking and registering all happen on the studio's hosted HotGlue pages. So every record carries a links object with the complete URL for the action it supports. Use those URLs as they are; never assemble a HotGlue URL yourself, because the paths are ours to change.

ResourceLinkWhere it goes
Classlinks.checkoutSession-based: checkout for the whole run. Drop-in: the date picker. Null when not sold directly
Classlinks.browseThe studio's public class browser
Class, trial, membershiplinks.storeThe studio's store home
Session (instance)links.checkoutCheckout for that one date. Set only for drop-in classes sold directly
Triallinks.enrollThe trial's own sign-up flow: the "Book a free trial" button
Triallinks.bookThe studio's general booking page
Registration seasonlinks.registerThe season's sign-up wizard
Membership pricelinks.checkoutCheckout for that price (monthly, annual…)
Membership typelinks.checkoutThe first active price's checkout, for a single "Join" button
Membership typelinks.detailThe membership's page in the store
Appointment servicelinks.bookThe hosted booking page; null when customers can't self-book

Which button to put on a class

Two fields decide it. enrollment_type says whether and how a family can get in; enrollment_model says whether they buy the run or a session.

enrollment_typeWhat it meansButton
open or drop_inSold directlySee enrollment_model below
seasonalSold through a registration seasonFind the season in /registrations and link its links.register. The class's links.checkout is null
closedInvitation from the studio onlyNo button. links.checkout is null

For classes sold directly, enrollment_model:

  • session_based: the family enrolls once for the whole run. Send them to the class links.checkout.
  • per_instance: drop-in. Either send them to the class links.checkout (the date picker, where they choose a session) or list the sessions yourself from /classes/{id}/instances and send them to a session's links.checkout, which pre-selects that date. A drop-in class with no upcoming sessions has nothing to sell; say so rather than linking.

One-time classes (schedule_type: "one-time") carry their date and time on their single session, not on the class, so fetch /classes/{id}/instances to show when they happen.

capacity.spots_remaining of 0 means full. You can still link checkout: it will not sell a seat that isn't there, and the family sees the waitlist or a full message.

What the family sees

The hosted pages handle accounts, waivers, payment methods, discounts, tax and confirmation emails. You hand off at the link; HotGlue takes it from there. If the studio runs a workflow on sign-up (a welcome email, a webhook to your system), it fires from those pages too. See Webhooks.