Glofox API Reference (2.3.0)

Download OpenAPI specification:

Introduction

The Glofox API is a REST API that lets integrations manage members, memberships, credits, classes, bookings, and payments. Responses use JSON.

Authentication

Include these headers in every API call:

Header Description
x-glofox-branch-id Branch ID for the current request.
x-api-key API key for the integration.
x-glofox-api-token API token for the integration.

Always proxy API key and token requests through a secure backend. Never expose credentials in client-side applications.

Error handling

Following REST standards, the API may return different HTTP error codes depending on the endpoint and the server’s logic.

Status Code Description
400 Bad Request Indicates an issue with the request data, typically caused by invalid input.
401 Unauthorized The request is not authenticated.
403 Forbidden The client does not have permission to access the requested resource.
404 Not Found The requested resource does not exist.
429 Too Many Requests The API blocks the request when you exceed the rate limit.
500 Internal Server Error A generic error indicating a problem on the server side.

Older endpoints: sometimes return a 200 status code with a success field set to false. That indicates a bad request. Add middleware to map those responses to 400.

Error structure

Error responses use this JSON shape:

{
  "message": "Invalid email format",
  "message_code": "INVALID_EMAIL"
}
  • message — human-readable explanation of the error
  • message_code — key you can use on the client side

Branches

A branch (a.k.a. studio or location) is a physical location. They will have their own set of members and staff (even roaming ones can be shared). The ID it's the same that is send as a header in x-glofox-api-token

Retrieve locations (branches) for allowed namespaces

Retrieves locations (branches) associated with an integrator's allowed namespaces. Acts as a proxy to the core Glofox API, filtering access based on the integrator's configured permissions. If no namespaces are provided in the request body, all locations from the integrator's assigned namespaces are returned.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
Request Body schema: application/json
optional

Optional filters for pagination and namespaces. If omitted or empty, all locations from the integrator's assigned namespaces are returned.

page
integer >= 1

Page number for pagination. If omitted, the core API default is used.

limit
integer >= 1

Number of results per page. If omitted, the core API default is used.

namespaces
Array of strings

Filter to specific namespaces. If omitted, all namespaces assigned to the integrator are used.

Responses

Request samples

Content type
application/json
{
  • "page": 1,
  • "limit": 50,
  • "namespaces": [
    ]
}

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 4,
  • "data": {
    },
  • "model": "location"
}

Get a Branch

This call is used to get a single branch by it's id

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
id
required
string^[a-f\d]{24}$

The branch unique identifier

Responses

Response samples

Content type
application/json
{
  • "_id": "string",
  • "name": "string",
  • "namespace": "string",
  • "address": {
    },
  • "phone": "string",
  • "email": "string",
  • "facebook": "string",
  • "instagram": "string",
  • "website": "string",
  • "about": "string",
  • "corporate_id": "string"
}

Users

A user is the entity representing one person. These endpoints allow to get the Users data and user lists. Specially focused on the ones of type Member.

Search members by email or phone within a namespace

Searches for users (members) across an entire namespace by email address, phone number, or both. The namespace is determined by the branch in the x-glofox-branch-id header. Send at least one of email or phone. If you send both, results must match both filters. More than one user may be returned when the same email or phone exists at multiple locations in the namespace. Phone matching is an exact match against the member's normalized E.164 phone; members without a normalized phone are not returned. Phone searches return users of type MEMBER only (including leads and cancelled members). Staff are excluded from phone searches. Pagination defaults to page 1 and limit 20 when omitted.

Authorizations:
(GlofoxBranchIdGlofoxApiKeyGlofoxApiToken)
Request Body schema: application/json
required
Any of
email
required
string <email>

Filter members by email address. Required when phone is omitted.

phone
string^\+[1-9]\d{1,14}$

Filter members by phone number in E.164 format (leading plus and country code). Required when email is omitted. Matching is exact.

page
integer >= 1
Default: 1

The page number to retrieve.

limit
integer [ 1 .. 100 ]
Default: 20

The number of items to return per page.

Responses

Request samples

Content type
application/json
Example
{}

Response samples

Content type
application/json
{
  • "page": 1,
  • "limit": 20,
  • "has_more": false,
  • "total_count": 2,
  • "data": [
    ]
}

Update a user's access barcode

Assigns, updates, or clears the access barcode for a user. The user can be a member or staff member. The location (Branch ID) in the x-glofox-branch-id header determines the namespace, and the user must belong to that namespace. The target user must be active; a deactivated user is reported as not found. An assigned barcode must be 5 to 20 alphanumeric characters (^[a-zA-Z0-9]{5,20}$), matching the dashboard assign-barcode rule so staff can still edit it. Send null or an empty string to clear the barcode; clear is not format-validated.

Authorizations:
(GlofoxBranchIdGlofoxApiKeyGlofoxApiToken)
path Parameters
user_id
required
string^[a-f\d]{24}$
Example: 507f1f77bcf86cd799439011

The unique identifier of the user.

Request Body schema: application/json
required
access_barcode
required
string or null^$|^[a-zA-Z0-9]{5,20}$

A non-empty value assigns the barcode and must be 5 to 20 alphanumeric characters. Send null or an empty string to clear the barcode; clear is not format-validated.

Responses

Request samples

Content type
application/json
Example
{
  • "access_barcode": "ABC123456"
}

Response samples

Content type
application/json
Example
{
  • "access_barcode": "ABC123456"
}

Create a user (Lead or Client) Deprecated

This call is used to create a lead in a studio. Creating a lead will often put the new user into a sales funnel. If the user you are creating should not go through this flow set the lead status to member (more details below).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
Request Body schema: application/json
required
first_name
required
string

The users first name.

last_name
required
string

The users last name or surname.

phone
string

The users phone number.

password
string

Required only for type MEMBER

email
required
string

The users email address.

emergency_contact
string

The users emergency contact information. This shows in the Details section of the Member profile. Staff can view this field.

lead_status
required
string

The status must be LEAD, MEMBER or COLD. Cold is used for leads with a low conversion prospect so in the majority of cases LEAD is the correct status. Using MEMBER will skip the sales funnel for the user. You can find more info on the status here

type
required
string

Set as "MEMBER"

access_barcode
string

If the studio uses access control this field can be used to store an identifier for the access software.

birth
string

Send as "YYYY-MM-DD"

image_url
string

The URL of the user's profile picture. This field is always populated with an auto-generated URL, even if no image has been uploaded. If the image exists, it will be accessible through the URL. Otherwise, attempting to access it may result in a 403 (Forbidden) response, which is the existing behavior for missing files in S3. 403 responses should be treated as an indication that the user has not uploaded a profile picture.

object (UserConsent)

User communication consent preferences. Each key is a communication channel.

Set active on each channel to opt the user in or out. Channels are optional and depend on regional availability.

object (UserMembership)

A membership is the main service a user has.

The membership lifecycle has 3 main stages: future, current, and ended. The membership status within those are: • Future: FUTURE status, a membership that has not started yet • Current: ACTIVE, LOCKED, PAUSED: transition between these states is unrestricted • Ended: EXPIRED, CANCELLED

object (Leads)
joined_at
string <date-time>

Represents the date when the user joined the location. Used primarily for imports, integrations, and member transfers to distinguish joining date (which can be set in the past) from created_at (date in which a document was created in Mongo set as today's date)

Responses

Request samples

Content type
application/json
{
  • "first_name": "string",
  • "last_name": "string",
  • "phone": "string",
  • "password": "string",
  • "email": "string",
  • "emergency_contact": "string",
  • "lead_status": "string",
  • "type": "string",
  • "access_barcode": "string",
  • "birth": "string",
  • "image_url": "string",
  • "consent": {
    },
  • "membership": {
    },
  • "leads": {
    },
  • "joined_at": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "_id": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "phone": "string",
  • "email": "string",
  • "type": "string",
  • "parent_id": "string",
  • "emergency_contact": "string",
  • "lead_status": null,
  • "access_barcode": "string",
  • "image_url": "string",
  • "account_email": "string",
  • "contact_email": "string",
  • "consent": {
    },
  • "membership": {
    },
  • "leads": {
    },
  • "joined_at": "2019-08-24T14:15:22Z",
  • "birth": "string"
}

Add a new interaction

This endpoint allows adding a new interaction for a lead in a specific branch

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string^[a-f\d]{24}$

The ID of the branch

userId
required
string^[a-f\d]{24}$

The ID of the lead

Request Body schema: application/json
required
user_id
required
string^[a-f\d]{24}$
type
required
string
Enum: "NOTE" "MANUAL_EMAIL"
description
string <= 500 characters

Responses

Request samples

Content type
application/json
{
  • "user_id": "string",
  • "type": "NOTE",
  • "description": "string"
}

Gets user interactions

This endpoint allows retrieving the interaction/notes list for a user in a specific branch

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string^[a-f\d]{24}$

The branch unique identifier

userId
required
string^[a-f\d]{24}$

The user unique identifier

query Parameters
page
required
integer >= 1

Page number.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "meta": {
    }
}

Update a user (Lead or Client)

This call is used to update a lead in a studio. You can change personal details about a user using this call. You cannot change membership or payment details using this call, for information reference the memberships and payments sections.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
userId
required
string
Request Body schema: application/json
required

Only send the fields you want to change.

Consent: Set each channel as { active: boolean }. Available channels depend on regional availability. See the UserConsent schema for the full list.

first_name
required
string

The users first name.

last_name
required
string

The users last name or surname.

phone
string

The users phone number.

password
string

Required only for type MEMBER

email
required
string

The users email address.

emergency_contact
string

The users emergency contact information. This shows in the Details section of the Member profile. Staff can view this field.

lead_status
required
string

The status must be LEAD, MEMBER or COLD. Cold is used for leads with a low conversion prospect so in the majority of cases LEAD is the correct status. Using MEMBER will skip the sales funnel for the user. You can find more info on the status here

type
required
string

Set as "MEMBER"

access_barcode
string

If the studio uses access control this field can be used to store an identifier for the access software.

birth
string

Send as "YYYY-MM-DD"

image_url
string

The URL of the user's profile picture. This field is always populated with an auto-generated URL, even if no image has been uploaded. If the image exists, it will be accessible through the URL. Otherwise, attempting to access it may result in a 403 (Forbidden) response, which is the existing behavior for missing files in S3. 403 responses should be treated as an indication that the user has not uploaded a profile picture.

object

User communication consent preferences. Each key is a communication channel.

Set active on each channel to opt the user in or out. Channels are optional and depend on regional availability.

object (UserMembership)

A membership is the main service a user has.

The membership lifecycle has 3 main stages: future, current, and ended. The membership status within those are: • Future: FUTURE status, a membership that has not started yet • Current: ACTIVE, LOCKED, PAUSED: transition between these states is unrestricted • Ended: EXPIRED, CANCELLED

object (Leads)
joined_at
string <date-time>

Represents the date when the user joined the location. Used primarily for imports, integrations, and member transfers to distinguish joining date (which can be set in the past) from created_at (date in which a document was created in Mongo set as today's date)

object (UserAddress)

User address. All fields are required when an address object is sent.

Responses

Request samples

Content type
application/json
{
  • "first_name": "Jane",
  • "last_name": "Doe",
  • "phone": "+353871234567",
  • "email": "[email protected]",
  • "consent": {
    }
}

Response samples

Content type
application/json
{
  • "_id": "5b1e86b68b78a5012f5ccf94",
  • "first_name": "Jane",
  • "last_name": "Doe",
  • "phone": "+353871234567",
  • "email": "[email protected]",
  • "type": "member",
  • "consent": {
    }
}

Get a user (Lead or Client)

This call is used to get one user.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
userId
required
string

Responses

Response samples

Content type
application/json
{
  • "_id": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "phone": "string",
  • "email": "string",
  • "type": "string",
  • "parent_id": "string",
  • "emergency_contact": "string",
  • "lead_status": null,
  • "access_barcode": "string",
  • "image_url": "string",
  • "account_email": "string",
  • "contact_email": "string",
  • "consent": {
    },
  • "membership": {
    },
  • "leads": {
    },
  • "joined_at": "2019-08-24T14:15:22Z",
  • "birth": "string"
}

Get all leads

This call is used to get leads in a studio. It is a POST call as you can send filters in the body. These query parameters are optional, if you send no json body all leads in a studio are returned. The results are returned sorted by created date in descending mode.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
Request Body schema: application/json
required
object (UserFilters)

Filters to filter users.

object

Responses

Request samples

Content type
application/json
No sample

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true
}

Get all clients

This call is used to get clients in a studio

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
query Parameters
page
integer

The page which should be returned

limit
integer

The limit of the data within the page

active
string
Enum: true false "any"

Filters members based on their active status:

  • true: Returns only active members (default behavior if not set).
  • false: Returns only non-active members.
  • any: Returns both active and non-active members.
utc_modified_start_date
integer

Filters members using a UTC timestamp based on their modified field. Includes users where modified >= {value}.

utc_modified_end_date
integer

Filters members using a UTC timestamp based on their modified field. Includes users where modified <= {value}.

home_only
string
Enum: true false

When true, members are scoped by origin_branch_id (home branch) matching the authenticated user's branch instead of branch_id. Useful for listing members whose home branch is the studio even if they currently belong to another branch (for example, roaming members).

Responses

Response samples

Content type
{
  • "object": "list",
  • "page": 1,
  • "limit": 2,
  • "has_more": true,
  • "total_count": 137,
  • "data": [
    ]
}

Search Members by Email

Emails in Glofox are unique for each studio so you might need to see if an email exists in a studio. This search checks if a full email address exists. It can not be used for searching for part of an email.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
query Parameters
filters[email]
required
string
page
integer
Default: 1

The page number to retrieve.

limit
integer
Default: 50

The number of results per page.

Responses

Response samples

Content type
application/json
{
  • "_id": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "phone": "string",
  • "email": "string",
  • "type": "string",
  • "parent_id": "string",
  • "emergency_contact": "string",
  • "lead_status": null,
  • "access_barcode": "string",
  • "image_url": "string",
  • "account_email": "string",
  • "contact_email": "string",
  • "consent": {
    },
  • "membership": {
    },
  • "leads": {
    },
  • "joined_at": "2019-08-24T14:15:22Z",
  • "birth": "string"
}

Request reset password link

This will send a link to the user from no-reply@glofox.com. This link contains a unique code they need to reset their email.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
Request Body schema: application/json
required
branch_id
string

The branch_id of the studio.

email
string

The users email address.

Responses

Request samples

Content type
application/json
{
  • "branch_id": "string",
  • "email": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string"
}

Get staff members

This call is used to get all staff members.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
query Parameters
type
string
Enum: "ADMIN" "MEMBER" "RECEPTION" "TRAINER"
Example: type=TRAINER

Type of staff members.

active
string
Enum: true false "any"
Example: active=false

Filters staff users based on their active status:

  • true: Returns only active staff users (default behavior if not set).
  • false: Returns only non-active staff users.
  • any: Returns both active and non-active staff users.

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0,
  • "data": [
    ]
}

Get a staff member

This call is used to get one staff member.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
staffId
required
string^[a-f\d]{24}$

Unique identifier for the staff member.

Responses

Response samples

Content type
application/json
{
  • "_id": "string",
  • "branch_id": "string",
  • "namespace": "string",
  • "active": true,
  • "bookable": true,
  • "modified": 0,
  • "type": "admin",
  • "first_name": "string",
  • "last_name": "string",
  • "description": "string",
  • "name": "string",
  • "image_url": "string",
  • "access_barcode": "string"
}

Register a User

This endpoint is used to register a user account.

Consent: Set each channel as { active: boolean }. Available channels depend on regional availability. See the UserConsent schema for the full list.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
Request Body schema: application/json
required
first_name
required
string

The first name of the user.

last_name
required
string

The last name of the user.

gender
string
Enum: "M" "F" "O" "P"

The gender of the user.

use_parent_phone
boolean

Boolean flag to indicate whether to use the parent's phone number for the child account. If it's present and false then the property phone is required.Mandatory when registering a child.

phone
string

The phone number of the user.

email
string

The email address of the the user.

use_parent_email
boolean

Boolean Flag whether to use the parent's email for the user account. If use_parent_email is true then skip the property email on the payload. If use_parent_email exists and is false then the property email is required. Mandatory when registering a child.

birth
required
string

The user's birth date as a string (YYYY-MM-DD)

emergency_contact
string

The emergency contact for the user.

parent_id
string

Mandatory when registering child's account.Unique identifier for the parent's account.

no_password
integer

When set to 1, the account is created without a password.

avatar
string

Base64-encoded representation of the image

avatarImg
string

Data URL containing a base64-encoded WebP format image.

object (UserConsent)

User communication consent preferences. Each key is a communication channel.

Set active on each channel to opt the user in or out. Channels are optional and depend on regional availability.

object (Leads)
joined_at
string <date-time>

Represents the date when the user joined the location. Used primarily for imports, integrations, and member transfers to distinguish joining date (which can be set in the past) from created_at (date in which a document was created in Mongo set as today's date)

Responses

Request samples

Content type
application/json
{
  • "first_name": "Jane",
  • "last_name": "Doe",
  • "email": "[email protected]",
  • "phone": "+353871234567",
  • "birth": "1990-01-15",
  • "consent": {
    }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "user": {
    }
}

Get child accounts of a given user.

This call returns all linked accounts (child accounts) of a given user (parent account).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
parentId
required
string^[a-f\d]{24}$

The parent account id

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "success": true,
  • "meta": {
    }
}

Upload profile image of a user.

This call uploads a profile image for a given user.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
userId
required
string^[a-f\d]{24}$

The user id

Request Body schema: multipart/form-data
required
Image
required
string <binary>

Responses

Response samples

Content type
application/json
{}

Leads

Lead sourcing is a key pillar of CRM, providing precise data to optimize marketing spend and target communications more effectively. These endpoints allow access to detailed information about lead sources, including their creation, retrieval, and management.

Get list of contact sources.

This call returns list of available contact sources for a location.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string^[a-f\d]{24}$

The location id

Responses

Response samples

Content type
application/json
[
  • "string"
]

Get list of marketing sources.

This call returns the unpaginated list of available marketing sources for a location.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string^[a-f\d]{24}$

The location id

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Memberships

The /memberships endpoint are the plans groups, what the user can purchase. The private ones can't be purchased by the member itself (usually used for staff memberships, special promotions, or similar).

A membership is the main service that a user can have. A user can have only one current membership at a given single time. It can be for a single period (1 month) or in a subscription way (1 month for 12 months, or 1 month renewed till manually finished). The membership usually means they have unrestricted access to the location. The membership can be unlimited (type: time), so it allows any number of bookings, or restricted (time: time_classes) meaning it has door access for 1 month, but can book up to 10 times in that period. A membership can be a roaming membership, meaning it grants access to more than 1 location. They can as well: • Purchase particular bookings • Purchase an add-on. An add-on is similar to a membership, but it's over an existing membership. It has to have the same billing frequency. For details on membership lifecycle check the

Get all memberships

This call is used to get the memberships in a studio.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
query Parameters
private
string
Enum: "true" "false" "any"

Filters memberships based on their privacy status:

  • true: only private memberships
  • false: only non-private memberships
  • any: returns both private and non-private memberships

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0,
  • "data": [
    ]
}

Get a single membership

This call is used to get the memberships in a studio.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
membershipId
required
string^[a-f\d]{24}$

Responses

Response samples

Content type
application/json
{
  • "_id": "string",
  • "branch_id": "string",
  • "namespace": "string",
  • "active": true,
  • "name": "string",
  • "description": "string",
  • "buy_just_once": true,
  • "plans": [
    ]
}

Purchase Membership

This call is used to purchase a membership for a user. If the user has an active membership the new members will be set to start the date after the active membership expires.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
userId
required
string
membershipId
required
string
planCode
required
string
Request Body schema: application/json
start_date
required
number

The date the membership starts in the location's local time in epoch format.

promo_code
string

The public facing promo code.

payment_method
string

Specifies the payment method to be used. Must be one of the accepted payment methods defined by the membership configuration. If not provided, the member's default payment method will be used. The value must be provided in lowercase.

is_renewal_terms_and_conditions_accepted
boolean

Indicates whether the user has opted in to be charged in the future per the terms of the membership they are purchasing.

Responses

Request samples

Content type
application/json
{
  • "start_date": 1725519600,
  • "promo_code": "PROMO-123",
  • "payment_method": "card",
  • "is_renewal_terms_and_conditions_accepted": true
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "message_code": "string",
  • "status": "PENDING-INTENT",
  • "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32"
}

Purchase Membership with Flexible payment

This call is used to forward to payments service the payment method we will use for a flexible payment membership

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
chargeId
required
string
Request Body schema: application/json
required
payment_method_type
string

The payment method type we want to use to create a charge

Responses

Request samples

Content type
application/json
{
  • "payment_method_type": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "message_code": "string",
  • "status": "PENDING-INTENT",
  • "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32"
}

Cancel a user membership

This method allows you to cancel an open-ended recurring membership on a specific date.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
userMembershipId
required
string

The user membership ID we want to cancel

header Parameters
x-glofox-impersonated-member-id
required
string

The ID of the member whose membership is being cancelled.

Request Body schema: application/json
required
when
required
string
Enum: "ON_DATE" "NOW" "END_OF_CYCLE"

A string indicating when the membership cancellation should take effect. Possible values:

  • ON_DATE: cancellation to happen on a specific date
  • NOW: immediate cancellation (not supported yet)
  • END_OF_CYCLE: cancellation at the end of the current payment cycle (not supported yet)
local_date
string

When ON_DATE cancellation type is selected. Local date in YYYY-MM-DD format to indicate the date for the cancellation

reason
required
string
Enum: "MEMBERSHIP_CANCELLATION_PRICE" "MEMBERSHIP_CANCELLATION_MOVED" "MEMBERSHIP_CANCELLATION_MOVED" "MEMBERSHIP_CANCELLATION_NO_USAGE" "MEMBERSHIP_CANCELLATION_CUSTOMER_SERVICE" "MEMBERSHIP_CANCELLATION_EVENT_SCHEDULE" "MEMBERSHIP_CANCELLATION_CHANGE_MEMBERSHIP"

Cancellation reason, can be an empty string or any of the valid values.

Responses

Request samples

Content type
application/json
{
  • "when": "ON_DATE",
  • "local_date": "2026-05-25",
  • "reason": "MEMBERSHIP_CANCELLATION_PRICE"
}

Response samples

Content type
application/json
{
  • "local_planned_end_date": "2026-05-25"
}

Credits

A credit pack allows to book for different events. These can be purchased independently or coming from a restricted membership.

Get a Users Credit Packs

Retrieves all credit packs for a user. Results are returned in a paginated list. When has_more is true, request the next page with the page and limit query parameters.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
query Parameters
user_id
required
string

The id of the user whose credit packs should be returned.

page
integer
Default: 1

The page number to retrieve.

limit
integer [ 0 .. 100 ]
Default: 50

The number of credit packs per page.

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 1,
  • "data": [
    ],
  • "total_value": 5
}

Access

This allows management of access to the location, the access can be seen on locations and users, and there are several reports over them. From Glofox perspective, there are 2 things that grants access: an active membership, or a booking within the next hour If an access is created and there is a booking within the hour, attendance to the booking will be marked as well.

Door access is something that's usually implemented on the partner side so it can be implemented with stricter rules if needed

To get the members with door access, use the endpoints in the Users section.

Create Access

This endpoint is used to store accesses.

It can also be used to check if a user has a valid membership. The response includes a boolean field called valid_on_entry. If this is false access should be denied.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
Request Body schema: application/json
required
user_id
required
string^[a-f\d]{24}$

Unique identifier for the user.

namespace
string

The studio's namespace. By default it is taken from the current user token.

branch_id
string^[a-f\d]{24}$

The branch_id of the studio. By default it is taken from the current user token.

entry_at
integer

UTC Timestamp when the user entered the studio. The default value is the current time.

status
string
Enum: "GRANTED" "FAILED"

The status of the access. By default is evaluated based on the user's membership. If the user has valid active membership or upcoming bookings within the nearest hour, then the access is granted.

door
string

The name of the door that was accessed

door_type
string
Enum: "external" "internal"

The type of door that was accessed (if absent defaults to external)

Responses

Request samples

Content type
application/json
{
  • "user_id": "string",
  • "namespace": "string",
  • "branch_id": "string",
  • "entry_at": 0,
  • "status": "GRANTED",
  • "door": "string",
  • "door_type": "external"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "access": {
    }
}

Classes

A program has a set of schedules, those schedules are then instantiated as events for particular dates. In general, any partner works only with events as the relevant data from programs is replicated in that entity. Eventually, using the program_id can be useful to link events that are different instances of the same program.

Get event by ID Deprecated

Deprecated. Use GET /2.0/branches/{branchId}/events/{eventId} instead. This path remains supported; requests may be handled via the branch-scoped implementation.

Returns Event object (Class|Appointment|Facility) by its unique identifier.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
id
required
string^[a-f\d]{24}$

The event's unique identifier.

Responses

Response samples

Content type
application/json
Example
{
  • "_id": "string",
  • "namespace": "string",
  • "branch_id": "string",
  • "type": "Class",
  • "active": true,
  • "name": "string",
  • "description": "string",
  • "time_start": 0,
  • "duration": 0,
  • "is_online": true,
  • "image_url": "string",
  • "size": 0,
  • "private": true,
  • "booked": 0,
  • "waiting": 0,
  • "modified": 0,
  • "program_id": "string",
  • "level": "string",
  • "facility": "string",
  • "trainers": [
    ],
  • "status": "string",
  • "open_booking_time": 0,
  • "close_booking_time": 0
}

Classes - Events & Programs Deprecated

Deprecated. Use GET /2.0/branches/{branchId}/events with the same query parameters. This path remains supported; requests may be handled via the branch-scoped implementation.

This call is used to retrieve classes in a timeframe. See the Bookings section below for information on booking a user into the classes

If the response contains model_id as null, event._id field as value for model_id in subsequent calls and the model should be events If the response contains a model_id not null, it should be used in subsequent calls.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
query Parameters
start
required
string

Classes with a start time after this time will be retrieved. Send as UTC Timestamp in seconds. Default value is specified as current Timestamp.

end
required
string

Classes with a start time before this time will be retrieved. Send as UTC Timestamp in seconds. Default value is specified as +1 day to the start value.

sort_by
string
Default: "-created"
Enum: "created" "-created" "time_start" "-time_start" "time_finish" "-time_finish"

Sorting order of the returned data. When a "-" is prefixed to a parameter, it will be sorted in descending mode by that field. Note for courses, sorting by time_start and time_finish is not available, as courses have a lengthy duration.

limit
integer [ 0 .. 100 ]
Default: 50

Count of the limited data returned within 1 page.

page
integer
Default: 1

Page number. In case of the large amount of data exceeding the default limit, the data have to be requested by pages.

active
boolean
Default: true

Whether active (non deleted) events have to be returned. If active=any is sent, then both active and non active events are returned.

private
boolean
Default: false

Whether private or public events have to be returned. Private events are not available for member side bookings, they could be booked by a Staff only on behalf of a Member. Public events are returned by default. If private=any is sent, then both public and private events are returned.

filter
string
Default: "event"
Enum: "event" "timeslot" "course"

The filter by type of the event. To retrieve classes filter=event has to be passed. To retrieve courses filter=course has to be passed. To retrieve appointments and facilities filter=timeslot has to be passed. To retrieve all types filter=event,timeslot,course has to be passed. We recommend to fetch each type of the event in a separate request to narrow the amount of loaded events.

programs
string

Filer events by the list of program_ids divided by comma. For example you would like to fetch events associated with the concrete program/programs. In that case you have to pass programs=,.

facilities
string

Filer events by the list of facility_ids divided by comma. For example you would like to fetch events associated with the concrete facility/facilities. In that case you have to pass facilities=,.

trainers
string

Filer events by the list of trainer_ids divided by comma. For example you would like to fetch events associated with the concrete trainer/trainers. In that case you have to pass trainers=,.

model
string
Enum: "appointments" "facilities"

The model to specify the timeslot subtype To retrieve appointments only parameters filter=timeslot&model=appointments have to be passed. To retrieve facilities only parameters filter=timeslot&model=facilities have to be passed.

model_id
string

Specifies concrete model_id that need to be fetched. For example you would like to fetch only appointments slots for the concrete appointment. In that case you have to pass model_id=.

utc_modified_start_date
integer

Filters events using a UTC timestamp based on their modified time. Where modified >= {value}

utc_modified_end_date
integer

Filters events using a UTC timestamp based on their modified time. Where modified <= {value}

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0,
  • "data": [
    ]
}

Classes - Events & Programs by branch

Retrieves classes, courses, and time slots for a branch within a timeframe. This is the supported replacement for deprecated GET /2.0/events.

This call is used to retrieve classes in a timeframe. See the Bookings section below for information on booking a user into the classes

If the response contains model_id as null, event._id field as value for model_id in subsequent calls and the model should be events If the response contains a model_id not null, it should be used in subsequent calls.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string

The branch identifier.

query Parameters
start
required
string

Classes with a start time after this time will be retrieved. Send as UTC Timestamp in seconds. Default value is specified as current Timestamp.

end
required
string

Classes with a start time before this time will be retrieved. Send as UTC Timestamp in seconds. Default value is specified as +1 day to the start value.

sort_by
string
Default: "-created"
Enum: "created" "-created" "time_start" "-time_start" "time_finish" "-time_finish"

Sorting order of the returned data. When a "-" is prefixed to a parameter, it will be sorted in descending mode by that field. Note for courses, sorting by time_start and time_finish is not available, as courses have a lengthy duration.

limit
integer [ 0 .. 100 ]
Default: 50

Count of the limited data returned within 1 page.

page
integer
Default: 1

Page number. In case of the large amount of data exceeding the default limit, the data have to be requested by pages.

active
boolean
Default: true

Whether active (non deleted) events have to be returned. If active=any is sent, then both active and non active events are returned.

private
boolean
Default: false

Whether private or public events have to be returned. Private events are not available for member side bookings, they could be booked by a Staff only on behalf of a Member. Public events are returned by default. If private=any is sent, then both public and private events are returned.

filter
string
Default: "event"
Enum: "event" "timeslot" "course"

The filter by type of the event. To retrieve classes filter=event has to be passed. To retrieve courses filter=course has to be passed. To retrieve appointments and facilities filter=timeslot has to be passed. To retrieve all types filter=event,timeslot,course has to be passed. We recommend to fetch each type of the event in a separate request to narrow the amount of loaded events.

programs
string

Filer events by the list of program_ids divided by comma. For example you would like to fetch events associated with the concrete program/programs. In that case you have to pass programs=,.

facilities
string

Filer events by the list of facility_ids divided by comma. For example you would like to fetch events associated with the concrete facility/facilities. In that case you have to pass facilities=,.

trainers
string

Filer events by the list of trainer_ids divided by comma. For example you would like to fetch events associated with the concrete trainer/trainers. In that case you have to pass trainers=,.

model
string
Enum: "appointments" "facilities"

The model to specify the timeslot subtype To retrieve appointments only parameters filter=timeslot&model=appointments have to be passed. To retrieve facilities only parameters filter=timeslot&model=facilities have to be passed.

model_id
string

Specifies concrete model_id that need to be fetched. For example you would like to fetch only appointments slots for the concrete appointment. In that case you have to pass model_id=.

utc_modified_start_date
integer

Filters events using a UTC timestamp based on their modified time. Where modified >= {value}

utc_modified_end_date
integer

Filters events using a UTC timestamp based on their modified time. Where modified <= {value}

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0,
  • "data": [
    ]
}

Get event by branch and ID

Returns an event (class, course, appointment, or facility time slot) for the given branch and event identifier. Prefer this endpoint over deprecated GET /2.0/events/{id}.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string

The branch identifier.

eventId
required
string^[a-f\d]{24}$

The event's unique identifier.

Responses

Response samples

Content type
application/json
Example
{
  • "_id": "string",
  • "namespace": "string",
  • "branch_id": "string",
  • "type": "Class",
  • "active": true,
  • "name": "string",
  • "description": "string",
  • "time_start": 0,
  • "duration": 0,
  • "is_online": true,
  • "image_url": "string",
  • "size": 0,
  • "private": true,
  • "booked": 0,
  • "waiting": 0,
  • "modified": 0,
  • "program_id": "string",
  • "level": "string",
  • "facility": "string",
  • "trainers": [
    ],
  • "status": "string",
  • "open_booking_time": 0,
  • "close_booking_time": 0
}

Bookings

A Booking is the result of a particular member booking in an event. After the booking has passed it will have the attendance for it inside.

Create a booking

Use this call to book a user into a class. If a class is full the user will be added to a wait-list if there are spaces remaining on the waitlist. If the booking fails it returns and an error code and reason for failure. You can check a list of possible errors in 'Responses' (use the 'Examples' drop-down list).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
Request Body schema: application/json
required
branch_id
string

The ID of the branch the booking ID made for. Required only for Admin side booking.

staff_id
string

In case of booking an appointment, this field should be passed.

user_id
required
string

The ID of the user the booking is being made for.

model
required
string
Enum: "event" "timeslot" "course"

Model specifies the type of the booking. For classes model=event, for courses model=course, for appointments and facilities model=timeslot.

model_id
required
string

The ID of the event the booking is being made for.

create_slot
string

This parameter has to be set as appointment when attempt to book an available appointment.

payment_method
string
Enum: "cash" "credit_card" "bank_transfer" "wallet" "pay_gym"

The payment method used to pay booking. Required only for Admin side booking. pay_gym payment method is used for the late payments. The payment will be charged later by the Studio's staff. Integrators should use credit_card as the only valid payment method.

price
number <float>

When the request is done by a staff, the price to be charged could be passed. If price is not provided, the credits and membership will be considered

schedule_id
integer

The ID of the session (schedule) for course booking. Required only for Admin side course booking. This could be found in GET /2.0/branches/{branchId}/events (or deprecated GET /2.0/events) as session_id when a course is returned.

charge
boolean
Default: true

This parameter is specifically for integrators. When it is set to true, the system will first try to charge the user using their available credits. If the user does not have enough credits, then the system will attempt to charge with the provided payment method. Only credit card is accepted, other payment methods will be rejected. If the payment method is not set in the payload, the system will default to credit card. If the user credits and the credit card attempts both fail, the booking will not be processed and an error will be returned. When set to false, the system will not attempt to charge the user thus making the booking free of charge. Charge will default to true if it is not included in the payload.

Responses

Request samples

Content type
application/json
{
  • "branch_id": "string",
  • "staff_id": "string",
  • "user_id": "string",
  • "model": "event",
  • "model_id": "string",
  • "create_slot": "string",
  • "payment_method": "cash",
  • "price": 0.1,
  • "schedule_id": 0,
  • "charge": true
}

Response samples

Content type
application/json
Example
{
  • "success": true,
  • "Booking": {
    }
}

Returns user's bookings

This call returns the bookings for one user. The results are paginated with the limit set to 50 bookings.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
query Parameters
branchId
required
string

Unique branch ID the user belongs to.

user_id
required
string

Unique user ID.

sort_by
string
Default: "-created"
Enum: "created" "-created" "time_start" "-time_start" "time_finish" "-time_finish"

Sorting order of the returned data. If put "-" before parameter it will be sorted in descending mode.

limit
integer [ 0 .. 100 ]
Default: 50

Count of the limited data returned within 1 page.

page
integer
Default: 1

Page number. In case of the large amount of data exceeding the default limit, the data have to be requested by pages.

time_start
integer

Start time of bookings in UTC Timestamp in seconds format. Default value is specified as current Timestamp.

time_end
string

End time of bookings in UTC Timestamp in seconds format. Default value is specified as +1 day to the start value.

exclude_cancelled
boolean
Default: false

Should cancelled bookings be excluded from the result.

event_id
string

The id of the event you would like to get bookings for. event_id specifies a concrete class slot on the calendar.

program_id
string

The id of the program you would like to get bookings for. The program_id is the id of the class definition. If you provide it, you will get all bookings for the concrete program.

model
string
Enum: "appointments" "facilities" "courses"

The type of the model you need to get bookings for. For instance, you need to fetch all bookings for the appointments only, then pass model=appointments.

model_id
string

The id of the booking model. If you need to fetch bookings fof the appointment, you have have to provide it's id. The same is for the facility and course.

time_slot_id
string

The id of the time slot you need to get booking for. time_slot_id works only for appointments and facilities bookings. Let's say, you need to get the booking for the appointment slot, then you have to send parameters in the request: model=appointments&time_slot_id=. If you need to get facility booking for the concrete time slot, you have to pass: model=facilities&time_slot_id=

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0,
  • "data": [
    ]
}

Cancel a Booking

This call cancels a booking. In some cases, a booking cannot be cancelled due to the rules set up in the studio. If this happens you will receive a message in the response detailing why.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
bookingId
required
string
userId
required
string

Responses

Response samples

Content type
application/json
{
  • "data": "string"
}

Get all Bookings in a studio

This call returns a list of bookings in a studio.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
query Parameters
limit
integer [ 0 .. 100 ]
Default: 50

Count of the limited data returned within 1 page.

page
integer
Default: 1

Page number. In case of the large amount of data exceeding the default limit, the data have to be requested by pages.

start_date
integer

Filters bookings using a UTC timestamp based on their created time. Where created >= {value}.

end_date
integer

Filters bookings using a UTC timestamp based on their created time. Where created <= {value}

modified_start_date
integer

Filters bookings using a UTC timestamp based on their modified time. Where modified >= {value}

modified_end_date
integer

Filters bookings using a UTC timestamp based on their modified time. Where modified <= {value}

time_start_start_date
integer

Filters bookings using a local timestamp based on their time_start. Where time_start >= {value}

time_start_end_date
integer

Filters bookings using a local timestamp based on their time_start. Where time_start <= {value}

time_finish_start_date
integer

Filters bookings using a local timestamp based on their time_finish. Where time_finish >= {value}

time_finish_end_date
integer

Filters bookings using a local timestamp based on their time_finish. Where time_finish <= {value}

status
string
Enum: "BOOKED" "WAITING" "CANCELED" "RESERVED" "FAILED"

Filters bookings based on their status

event_type
string
Enum: "events" "courses" "facilities" "users" "appointments"

Filters bookings based on their underline event type

event_id
string

Filters bookings based on their event id

course_id
string

Filters bookings based on their course id

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "meta": {
    },
  • "data": [
    ]
}

Create a booking.

Use this call to book a user into a class, appointment, course or facility. In case of booking a full class, and the join_waiting_list parameter is passed as true, the user will be added to the waiting list. If the booking fails it returns a 400 status code with details of the failure.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
header Parameters
x-glofox-impersonated-member-id
string

The ID of a member who is being impersonated. Impersonated requests are allowed for integrators only and are valuable when an integrator needs to make a booking on behalf of a member. In such cases, the system abides by all booking settings and rejects requests if a member has exceeded set booking limitations.

Request Body schema: application/json
required
One of
model
required
string
Value: "event"

The type of the booked event.

model_id
required
string

The ID of the class.

guest_bookings
integer
Default: 0

The number of guests the user is booking for.

join_waiting_list
boolean
Default: false

Whether the user should be added to the waiting list. Send this parameter to true only when the class is full. Send false or not send it when the class still has available spots.

charge
boolean
Default: true

Whether the booking payment should be delayed.

Responses

Request samples

Content type
application/json
Example
{
  • "model": "event",
  • "model_id": "string",
  • "guest_bookings": 0,
  • "join_waiting_list": false,
  • "charge": true
}

Response samples

Content type
application/json
{
  • "OK - Successful booking": {
    }
}

Cancel a booking.

This call cancels a booking.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
bookingId
required
string
header Parameters
x-glofox-impersonated-member-id
string

The ID of a member who is being impersonated. Impersonated requests are allowed for integrators only and are valuable when an integrator needs to make a booking on behalf of a member. In such cases, the system abides by all booking settings and rejects requests if a member has exceeded set booking limitations.

Responses

Response samples

Content type
application/json
{
  • "success": false,
  • "message": "string",
  • "message_code": "string",
  • "message_data": [
    ],
  • "errors": [
    ]
}

Mark a booking as attended

This call marks a booking (or bookings) as attended.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
Request Body schema: application/json
required
model
string
Value: "bookings"

The model specifies the type of the attendance need to be saved. You have to send model=bookings to save bookings attendance.

model_ids
Array of strings

Responses

Request samples

Content type
application/json
{
  • "model": "bookings",
  • "model_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "success": true,
  • "model_ids": [
    ]
}

Get class availability booking price

Use this call to find out if a class is available for a user and the price they will pay. Classes can be restricted to certain memberships and different memberships have different prices to pay for a booking.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
eventId
required
string
query Parameters
for
required
string

The user id who is intending to book the class

guestBookings
required
integer

A user can book more than once space. This is used if they want to bring a friend to the class. Each extra booking multiplies the cost.

Responses

Response samples

Content type
application/json
{
  • "_id": "string",
  • "branch_id": "string",
  • "namespace": "string",
  • "user_id": "string",
  • "user_name": "string",
  • "status": "BOOKED",
  • "attended": true,
  • "time_start": 0,
  • "duration": 0,
  • "paid": true,
  • "guest_bookings": 0,
  • "description": "string",
  • "image_url": "string",
  • "model": "events",
  • "model_id": "string",
  • "model_name": "string",
  • "event_name": "string",
  • "created": 0,
  • "modified": 0
}

Payments

A branch can have several payment methods, like CARD, DIRECT_DEBIT (ACH), CASH, etc. When doing a purchase, the payment method can be specified as well. Member-facing payment collection includes listing overdue subscription invoices and retrieving a payment link for a retriable invoice.

Get Payment Methods Available for a Branch

This call returns a list of all available payment methods for this branch.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
query Parameters
includes
required
string

Set to 'includes=provider,iframe'

Responses

Response samples

Content type
application/json
{
  • "_id": "string",
  • "branch_id": "string",
  • "active": true,
  • "staff_only": true,
  • "type_id": {
    },
  • "iframe": {
    }
}

Get Payment Link for Invoice (Member)

Retrieves the payment link details for a given invoice. Validates that the invoice exists, is currently retriable, and returns the payment link details if applicable.

Requires a valid JWT with member role (Authorization header).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
invoiceID
required
string

Invoice ID

header Parameters
Authorization
required
string

Bearer JWT with member role.

Responses

Response samples

Content type
application/json
{
  • "invoice_id": "string",
  • "is_retriable": true,
  • "invoice_payment_link": "http://example.com",
  • "invoice_summary": "string",
  • "invoice_amount": 5000,
  • "invoice_currency": "EUR",
  • "utc_invoice_timestamp": "string"
}

Retrieve overdue subscription Invoices by user ID.

Retrieve overdue subscription Invoices by user ID.

Requires a valid JWT with member role (Authorization header). Results are sorted by due date descending (newest first) and silently truncated to a maximum of 20 invoices.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
userID
required
string

The user id

header Parameters
Authorization
required
string

Bearer JWT with member role.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Reports

Several operations to grab aggregated data are listed in this section.

Get all Payments for a studio

Returns all transactions in a time frame for a studio. Set the start and end fields in the filter to set the timeframe.

  • Supports filtering by date ranges and comparing to a secondary date range.
  • If filter.CompareToRanges is set to true, the secondStart and secondEnd fields must be provided to define the secondary date range.
  • The start and end fields define the primary date range.
Authorizations:
(GlofoxApiKeyGlofoxApiToken)
Request Body schema: application/json
required
branch_id
string

The branch_id of the studio.

namespace
string

The namespace of the studio.

start
string

UNIX timestamp (string) for the start of the primary date range.

end
string

UNIX timestamp (string) for the end of the primary date range.

secondStart
integer <int64>

UNIX timestamp (string) for the secondary date range. Required if filter.CompareToRanges is true.

secondEnd
integer <int64>

UNIX timestamp (string) for the secondary date range. Required if filter.CompareToRanges is true.

model
string

Set to "TransactionsList" for the transactions list report.

object

Responses

Request samples

Content type
application/json
{
  • "model": "TransactionsList",
  • "branch_id": "Branch ID",
  • "namespace": "Customer's namespace",
  • "start": "1773187200",
  • "end": "1773791999",
  • "secondStart": "1773187200",
  • "secondEnd": "1773791999",
  • "filter": {
    }
}

Response samples

Content type
application/json
{
  • "TransactionsList": {
    }
}

Trainers performance report

This returns all trainers in a studio and the number of events they were assigned to in a time period.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
query Parameters
start
required
string

Events after this time will be reported on

end
required
string

Events before this time will be reported on

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "report": {
    }
}

Electronic Agreements

A user can have the need to sign different electronic contracts. Operations to get those and force the send email for those are exposed here.

Get the waivers (also called documents) for a studio

This call returns the waivers for a studio. If you are integrating electronic agreements the first waiver to use is 'type = member.authenticated'

Authorizations:
(GlofoxApiKeyGlofoxApiToken)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Send a document to a user for signature

This call emails a document to a user to sign.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string^[a-f\d]{24}$
userId
required
string^[a-f\d]{24}$
Request Body schema: application/json
required
trigger
required
string
Enum: "member.authenticated" "membership.purchased"

The type of document. If integrating electronic agreements the first waiver to use is 'trigger = member.authenticated'. For membership terms and conditions the waiver to use is 'trigger = membership.purchased'

Responses

Request samples

Content type
application/json
{
  • "trigger": "member.authenticated"
}

Retrieve user agreements

Fetches a list of agreements for a specific user within a branch.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string^[a-f\d]{24}$
userId
required
string^[a-f\d]{24}$

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "agreements": [
    ]
}

Retrieve the latest agreement template based on trigger for a specific branch

Fetch the latest agreement template for a given branch based on the specified trigger. Member-authenticated refers to Waivers, while membership-purchased refers to Terms and Conditions.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string^[a-zA-Z0-9]+$
trigger
required
string
Enum: "member-authenticated" "membership-purchased"

The trigger event (member-authenticated or membership-purchased)

query Parameters
userId
required
string^[a-zA-Z0-9]+$

The user ID related to the request

membershipId
required
string^[a-zA-Z0-9]+$

The membership ID related to the request (must be empty for member-authenticated)

planCode
required
string^[0-9]+$

The plan code related to the request (must be empty for member-authenticated)

Responses

Response samples

Content type
application/json
{
  • "version": 1,
  • "created_at": "2025-04-03T16:53:04.253Z",
  • "updated_at": "2025-04-03T16:53:04.253Z",
  • "template": "string"
}

Send agreement by ID Deprecated

This endpoint sends an agreement to a user by the agreement's ID. Use this to resend agreements that need to be signed again.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string^[a-f\d]{24}$
userId
required
string^[a-f\d]{24}$
agreementId
required
string
Request Body schema: application/json
required
agreementMetaData
string

For memberships agreements it's the user membership ID

Responses

Request samples

Content type
application/json
{
  • "agreementMetaData": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string"
}

Price Calculator

Operations from the purchase flow to know how much a user will be charged for a particular purchase.

Get price breakdown for a given resource.

Calls price calculator service to determine the breakdown for a product(s) including discounts and taxes.

The example response is for a branch with exclusive tax set. If the branch is using inclusive tax you will note a few differences:

  • taxes.products[n].net_price This would be the discounted price minus the total tax (taxes are included in the product price).
  • taxes.products[n].total_price This would be the same as discounted price (again because taxes are included the price would remain the same).

Price calculator does not determine prorated amounts, or the validity of whether a discount/promo code can be used for a particular item. It is up to client to determine this.

Discounts

  • discount_ids: This parameter can only be used by staff/integrators.
  • promo_code: This parameter can be used by any user.

The discount_ids and promo_code parameters should only ever be used mutually exclusively.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
Request Body schema: application/json
required
Array of objects (PriceBreakdownRequestProduct)

Responses

Request samples

Content type
application/json
{
  • "products": [
    ]
}

Response samples

Content type
application/json
{
  • "discounts": {
    },
  • "taxes": {
    }
}

Calculates appointment price

This endpoint calculates the price of an appointment for a specific member.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
appointmentId
required
string
Request Body schema: application/json
required
member_id
required
string
time_start
required
integer

Responses

Request samples

Content type
application/json
{
  • "member_id": "string",
  • "time_start": 0
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Calculates facility price

This endpoint calculates the price of a facility for a specific member.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
facilityId
required
string
Request Body schema: application/json
required
member_id
required
string
time_start
required
integer

Responses

Request samples

Content type
application/json
{
  • "member_id": "string",
  • "time_start": 0
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Calculates course price

This endpoint calculates the price of a course for a specific member.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
courseId
required
string
Request Body schema: application/json
required
member_id
required
string
number_of_bookings
required
integer

Responses

Request samples

Content type
application/json
{
  • "member_id": "string",
  • "number_of_bookings": 0
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Calculates event price

This endpoint calculates the price of an event for a specific member.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string
eventId
required
string
Request Body schema: application/json
required
member_id
required
string
number_of_bookings
required
integer

Responses

Request samples

Content type
application/json
{
  • "member_id": "string",
  • "number_of_bookings": 0
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": [
    ]
}

Appointments Availability

Operations to get the virtual version of the appointments' availability.

Retrieve all the available appointments of the given branch.

This endpoint is to virtually generate appointment slots based on the trainers availabilities.
Please note that filtering by start-time and finish-time may result in different values than if you do not filter by any time range, since this endpoint only returns availabilities that start and end in the requested range.
Time parameter validation rules - Both start-time and finish-time must be provided together when filtering by time. You can provide both parameters together, or omit both parameters (system defaults to today's availability window). Providing only one parameter will result in a validation error. When both are provided, finish-time must be after start-time.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
branchId
required
string

The id of the branch.

query Parameters
trainer-id
string
Example: trainer-id=6744468fafce2a52b5d50aea

The id of the trainer to filter availability.

start-time
string <datetime>
Example: start-time=2024-09-01T12:00:00Z

This parameter sets the initial point to generate the slots.
When neither start-time nor finish-time are provided, the system will default to today's availability window.
Required when finish-time is provided. Both parameters must be used together.

finish-time
string <datetime>
Example: finish-time=2024-09-01T20:00:00Z

This parameter sets the final point to generate the slots.
When neither start-time nor finish-time are provided, the system will default to today's availability window.
Required when start-time is provided. Both parameters must be used together and this value must be after start-time.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Cart

Operations to manage a cart, a cart is a temporary storage of the items that a member wants to purchase.

Pre-checkout

Validates the member can purchase the line items supplied and returns a detailed price breakdown, including both the immediate charge and any future recurring charges.

The response is split into two items: due_today and future_charges:

  • due_today represents what the member will be charged today for the line_items supplied. For a membership line item it takes into account configurations like proration, upfront fees etc.
  • future_charges represents what they will be charged in the future as a result of purchasing these line items and groups them by their billing frequency. For example, if the request contains a line item which is a recurring membership, there will be an item with the future_charges array to represent the renewals for that membership. If there is a maintenance fee associated with that plan there will be a second item which represents that. For what is due_today and for all items in the future_charges array there will be a detailed price breakdown including any taxes or discounts aggregated across the items.

The response includes:

  • The tax calculation mode (inclusive/exclusive)
  • Available payment methods for both immediate and recurring charges
  • Relevant metadata for items like memberships (duration, auto-renewal settings, etc.)

Notes:

  • All monetary values are returned in the currency specified in the response.
  • This endpoint requires a valid JWT token for a user with MEMBER role. This will be who the purchase is for.
Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
x-glofox-impersonated-member-id
required
string

The ID of a member who's pre-checkout cart values are being calculated.

Request Body schema: application/json
required
Array of objects (LineItems) non-empty

The items to be purchased

Responses

Request samples

Content type
application/json
{
  • "line_items": [
    ]
}

Response samples

Content type
application/json
{
  • "currency": "string",
  • "due_today": {
    },
  • "future_charges": [
    ],
  • "location_id": "string",
  • "member_id": "string",
  • "tax_mode": "exclusive"
}

Checks out a cart

Validates the cart and initiates the checkout process. Returns the updated cart status and payment details.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
cartID
required
string

Unique identifier of the cart to be checked out.

header Parameters
x-glofox-impersonated-member-id
required
string

The ID of a member who's pre-checkout cart values are being calculated.

Responses

Response samples

Content type
application/json
{
  • "cart_status": "CHECKED_OUT",
  • "invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32",
  • "invoice_status": "PAID",
  • "payment_method": "CARD",
  • "payment_status": "SUCCESS"
}

Creates a new cart

Initializes a new cart with the provided line items and returns the cart details along with a detailed price breakdown. Validates that the authenticated user is allowed to purchase the specified line items and it returns a full cart object. The price_breakdown section includes:

  • due_today: The total amount the user is expected to pay immediately, including:
    • net price
    • taxes
    • accepted_payment_methods: The list of payment methods available at the user's location.
Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
x-glofox-impersonated-member-id
required
string

The ID of a member who's cart is being created.

Request Body schema: application/json
required
required
Array of objects (CartRequestLineItem) non-empty

The items to be purchased.

payment_method
string

The payment method to be used for the cart.

Responses

Request samples

Content type
application/json
{
  • "line_items": [
    ],
  • "payment_method": "CARD"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "location_id": "string",
  • "member_id": "string",
  • "payment_method": "CARD",
  • "utc_created_at": "2023-05-25T12:00:00Z",
  • "line_items": [
    ],
  • "price_breakdown": {
    }
}

Updates an existing cart.

Updates an existing cart. Only the payment method can be updated.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
cartID
required
string

Unique identifier of the cart to be updated.

header Parameters
x-glofox-impersonated-member-id
required
string

The ID of a member who's cart is being updated.

Request Body schema: application/json
required
payment_method
string
Enum: "CARD" "CASH" "COMPLIMENTARY" "DIRECT_DEBIT" "POS_TERMINAL" "WALLET" "BANK_TRANSFER" "UNKNOWN"

The new payment method associated with the cart.

Responses

Request samples

Content type
application/json
{
  • "payment_method": "CARD"
}

Response samples

Content type
application/json
{
  • "code": "ERROR_CODE",
  • "message": "internal server error"
}

Facilities

Operations to list facilities available at a location.

Get facilities for a location

This call returns all facilities for a given location.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
locationId
required
string^[a-f\d]{24}$

The ID of the location for which to retrieve facilities.

query Parameters
page
integer >= 1
Default: 1
limit
integer [ 1 .. 100 ]
Default: 50
sort-by
string

field | -field (name, created_at)

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0
}

Courses

Operations to list courses offered at a location.

get-courses

This endpoint returns a filtered courses list

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
locationId
required
string^[a-f\d]{24}$

The ID of the location for which to retrieve courses.

query Parameters
page
integer
Default: 1

The page number used to paginate course listings

limit
integer [ 1 .. 100 ]
Default: 50

The number of results to return per page

sort-by
string

Sort order for results (name, namespace, description, schedule_code, start_date, end_date)

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0
}

Programs

Operations to search and list programs for a location.

Get all programs for a location

This endpoint returns a filtered program list for an specific location

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
locationId
required
string^[a-f\d]{24}$

The ID of the location for which to retrieve programs.

Request Body schema: application/json
required
page
integer

The page number used to paginate course listings

limit
integer [ 1 .. 100 ]
Default: 50

The number of results to return per page

sort_by
string

Sort order for results (name, date_start, date_finish)

facility_ids
string

Comma-separated list of facility IDs to filter programs by

has_facilities
boolean

Filter programs that have facilities assigned

Responses

Request samples

Content type
application/json
{
  • "page": 0,
  • "limit": 50,
  • "sort_by": "string",
  • "facility_ids": "string",
  • "has_facilities": true
}

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0
}

Products

Operations to list products available for purchase at a location.

Get all products for a specific location.

This endpoint returns a filtered product list for a specific location.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
locationId
required
string^[a-f\d]{24}$

The ID of the location for which to retrieve products.

query Parameters
page
integer
Default: 1

The page number used to paginate course listings.

limit
integer [ 1 .. 100 ]
Default: 50

The number of results to return per page.

sort-by
string

Sort order for results (created, modified).

name
string

Filter by product name.

description
string

Filter by product description.

featured
boolean

Filter by featured products.

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "page": 1,
  • "limit": 50,
  • "has_more": false,
  • "total_count": 0
}

Push Notifications

Endpoints for registering devices and retrieving push notification history for members.

Register device

Register a new mobile device to receive push notifications. Registering a new device overrides any previously registered device for the same user.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
x-glofox-branch-id
required
string
x-api-key
required
string
x-glofox-api-token
required
string
x-glofox-impersonated-member-id
required
string
Request Body schema: application/json
required
bundle
string

The application bundle/package identifier. Provided by Glofox.

device_id
string

The unique device identifier or push token used to target the device.

os
string

The device operating system, e.g. ios or android.

object (DeviceVersion)

Responses

Request samples

Content type
application/json
{
  • "bundle": "string",
  • "device_id": "string",
  • "os": "string",
  • "version": {
    }
}

Response samples

Content type
application/json
{
  • "bundle": "string",
  • "device_id": "string",
  • "location_id": "string",
  • "os": "string",
  • "user_id": "string",
  • "version": {
    }
}

Unregister devices

Unregisters all devices for the authenticated member.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
x-glofox-branch-id
required
string
x-api-key
required
string
x-glofox-api-token
required
string
x-glofox-impersonated-member-id
required
string

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

List member push notifications

Returns paginated push notifications for the member. Branch and user IDs are taken from the token.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
path Parameters
userID
required
string

Member user ID

query Parameters
page
integer

Page index, 1-based (default 1)

limit
integer

Page size (default 20, min 1, max 100)

header Parameters
x-glofox-branch-id
required
string
x-api-key
required
string
x-glofox-api-token
required
string
x-glofox-impersonated-member-id
required
string

Responses

Response samples

Content type
application/json
{
  • "notifications": [
    ],
  • "pagination": {
    }
}

Webhooks

Inbound webhook payloads delivered as HTTP POST requests to your configured endpoint. Each webhook includes a signature header for HMAC-SHA256 validation.

For delivery timeouts, retries, idempotency, and signature validation, see the Webhooks guide. Each operation below documents event-specific behaviour and payload schemas for that webhook type.

Handle access events Webhook

Notifies your integration when a member creates or updates a barcode. Use it to keep barcode identifiers in sync with access hardware or third-party apps that rely on the current barcode value.

Event types: MEMBER_ACCESS_INFO_CREATED, MEMBER_ACCESS_INFO_UPDATED.

This webhook covers barcode create and update events. It does not fire when the system grants or denies access.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
Type
required
string
Enum: "MEMBER_ACCESS_INFO_CREATED" "MEMBER_ACCESS_INFO_UPDATED"

The payload event type.

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred.

required
object

Responses

Request samples

Content type
application/json
{
  • "Type": "MEMBER_ACCESS_INFO_CREATED",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle booking events Webhook

Booking is the result of a particular member booking an event. After the booking has passed it will contain the attendance. There are 3 types of events (BOOKING_CREATED, BOOKING_DELETED, BOOKING_UPDATED).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
Type
required
string
Enum: "BOOKING_CREATED" "BOOKING_DELETED" "BOOKING_UPDATED"

The payload event type.

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred.

required
object

Responses

Request samples

Content type
application/json
{
  • "Type": "BOOKING_CREATED",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle course booking events Webhook

A course booking event represents the booking of a course by a user. There are 2 types of events (COURSE_BOOKING_CREATED, COURSE_BOOKING_DELETED).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
Type
required
string
Enum: "COURSE_BOOKING_CREATED" "COURSE_BOOKING_DELETED"

The payload event type.

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred

required
object

Responses

Request samples

Content type
application/json
{
  • "Type": "COURSE_BOOKING_CREATED",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle eagreement events Webhook

An eagreement event represents the acceptance by a user of a studio's waiver and/or terms & conditions for services purchased. There is 2 types of event (EAGREEMENT_CREATED, EAGREEMENT_UPDATED).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
Type
required
string
Enum: "EAGREEMENT_CREATED," "EAGREEMENT_UPDATED,"

The payload event type

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred

required
object

Responses

Request samples

Content type
application/json
{
  • "Type": "EAGREEMENT_CREATED,",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle event events Webhook

An event represents the occurrence of a class at a specific date and time. There are 3 types of events (EVENT_CREATED, EVENT_UPDATED, EVENT_DELETED).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
Type
required
string
Enum: "EVENT_CREATED" "EVENT_UPDATED" "EVENT_DELETED"

The payload event type

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred

required
object

Responses

Request samples

Content type
application/json
{
  • "Type": "EVENT_CREATED",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle invoice events Webhook

An invoice represents an itemized commercial document that records the products or services delivered to the customer and the total amount due. There are 1 type of event (INVOICE_UPDATED).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
type
string
Value: "INVOICE_UPDATED"

The payload event type

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred

required
object

Responses

Request samples

Content type
application/json
{
  • "type": "INVOICE_UPDATED",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle member events Webhook

Notifies your integration when a member is created or updated.

Event types: MEMBER_CREATED, MEMBER_UPDATED.

Glofox does not emit a MEMBER_DELETED event. Deleting a member is a soft delete that sets active to false, delivered as MEMBER_UPDATED. Treat MEMBER_UPDATED events where active is false as a member becoming inactive, not as a permanent removal. Soft-deleted members can be restored by staff or reactivated when the member re-registers (active set back to true, delivered as a further MEMBER_UPDATED event). Do not permanently purge member data based solely on active: false.

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
type
string
Enum: "MEMBER_CREATED" "MEMBER_UPDATED"

The payload event type

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred

required
object

Responses

Request samples

Content type
application/json
{
  • "type": "MEMBER_CREATED",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle membership events Webhook

A membership is the main service that a user can have. A user can only have one membership at a given time. There are 3 types of events (MEMBERSHIP_CREATED, MEMBERSHIP_UPDATED, MEMBERSHIP_DELETED).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
Type
required
string
Enum: "MEMBERSHIP_CREATED" "MEMBERSHIP_UPDATED" "MEMBERSHIP_DELETED"

The payload event type

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred

required
object

Responses

Request samples

Content type
application/json
{
  • "Type": "MEMBERSHIP_CREATED",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle service events Webhook

A service is a product that a user can purchase. There are 3 types of service events (SERVICE_CREATED, SERVICE_UPDATED, SERVICE_DELETED).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
type
string
Enum: "SERVICE_CREATED" "SERVICE_UPDATED" "SERVICE_DELETED"

The payload event type

object
timestamp
string <date-time>

The timestamp when the event occurred

object

Responses

Request samples

Content type
application/json
{
  • "type": "SERVICE_CREATED",
  • "metadata": {
    },
  • "timestamp": "2019-08-24T14:15:22Z",
  • "payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Handle push notification events Webhook

A push notification event represents a push message sent to one or more member devices. There is 1 type of event (PUSH_NOTIFICATION_CREATED).

Authorizations:
(GlofoxApiKeyGlofoxApiToken)
header Parameters
signature
string

A HMAC-SHA256 hash verifying the authenticity of Glofox webhook. The hash is a hexadecimal string. In short Signature = Hex( HMAC-SHA256( YourSecretKey, StringToSign ))

Request Body schema: application/json
required
Type
required
string
Value: "PUSH_NOTIFICATION_CREATED"

The payload event type.

required
object
Timestamp
required
string <date-time>

The timestamp when the event occurred.

required
object

Responses

Request samples

Content type
application/json
{
  • "Type": "PUSH_NOTIFICATION_CREATED",
  • "Metadata": {
    },
  • "Timestamp": "2019-08-24T14:15:22Z",
  • "Payload": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string"
}