Appointment, bookable appointment and slots operations
PerfectGym Next API (1.19.3)
- Appointment, bookable appointment and slots operations
- Redeem checkin vouchers
- Class and slots operations
- Cross studio operations
- Get customers and contracts
- Retrieve customer accounting details
- Retrieve customer communication details
- Retrieve customer transaction details
- Get device information
- Employee operations
- Debt collection operations
- Leads operations
- Get member lists
- Manage membership contracts
- Membership operations
- Online offer operations
- Payment operations
- Get studio information
- Get trial offers information
https://open-api-demo.open-api.perfectgym.com/
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/online-offers/purchasable
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/online-offers/purchasable
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/online-offers/purchasable?offset=0&sliceSize=50' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
List of online offers
Name of this online offer. Uses the public name when available and otherwise falls back to the non-public name.
The number of times the online offer can be used.
The price amount and currency for the online offer.
Online offer period of use information.
Represents a term with minutes
The value of the term with minutes
Describes the type of the online offer.
| Value | Description |
|---|---|
| CHECK_IN_BASED | The offer is based on check-ins. |
Information about the online booking related to the online offer.
Title of the online booking info. Uses the public title when available and otherwise falls back to the non-public title.
Target groups of the online booking info.
Describes the level of the online booking info.
| Enum Value | Description |
|---|---|
| ALL | The booking applies to all levels. |
| EXPERT | The booking is suited for experts. |
| BEGINNER | The booking is suited for beginners. |
| ADVANCED | The booking is suited for advanced participants. |
{ "result": [ { … } ], "hasNext": true, "offset": "1234567890" }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/online-offers/purchasable/{offerId}
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/online-offers/purchasable/{offerId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/online-offers/purchasable/{offerId}' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
Name of this online offer. Uses the public name when available and otherwise falls back to the non-public name.
The price amount and currency for the online offer.
Online offer period of use information.
Represents a term with minutes
Describes the type of the online offer.
| Value | Description |
|---|---|
| CHECK_IN_BASED | The offer is based on check-ins. |
Information about the online booking related to the online offer.
Title of the online booking info. Uses the public title when available and otherwise falls back to the non-public title.
Target groups of the online booking info.
Describes the level of the online booking info.
| Enum Value | Description |
|---|---|
| ALL | The booking applies to all levels. |
| EXPERT | The booking is suited for experts. |
| BEGINNER | The booking is suited for beginners. |
| ADVANCED | The booking is suited for advanced participants. |
Restrictions (facility, age and time) applicable to the online offer. May be absent when the live offer variant is unavailable.
{ "onlineOfferId": 12345, "name": "Day Ticket Adult", "scopeOfUsage": 1, "price": { "amount": 20, "currency": "EUR" }, "periodOfUse": { "term": { … }, "type": "ONE_TIME" }, "type": "CHECK_IN_BASED", "category": { "id": 1, "name": "Memberships" }, "onlineBookingInfo": { "name": "Gym Access", "targetGroups": [ … ], "level": "BEGINNER", "description": "Access to all gym areas and classes." }, "validity": { "value": 2, "unit": "WEEK" }, "restrictions": { "minAge": 18, "maxAge": 65, "studioAccessType": "ALL_STUDIOS", "restrictedStudioIds": [ … ], "timeRestrictions": { … } }, "paymentMethods": [ "ONLINE_PAYMENT" ] }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/online-offers/purchase/preview
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/online-offers/purchase/preview
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://open-api-demo.open-api.perfectgym.com/v1/online-offers/purchase/preview \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY_HERE' \
-d '{
"onlineOfferId": 12345,
"customerId": 67890,
"voucherCode": "SUMMER21"
}'OK
Price of the online offer before discounts
Discounted price of the online offer after applying the voucher
Discount value of the voucher
Success message if the voucher was applied successfully
Represents a voucher error code
| Enum Value | Description |
|---|---|
| INVALID_CODE | Represents an invalid voucher code |
| REFERRAL_COMBINATION_NOT_ALLOWED | Represents that the voucher cannot be combined with a referral code |
| ALREADY_REDEEMED | Represents that the voucher has already been redeemed |
{ "price": { "amount": 20, "currency": "EUR" }, "discountedPrice": { "amount": 20, "currency": "EUR" }, "discountValue": { "amount": 20, "currency": "EUR" }, "voucherSuccessMessage": "Voucher applied successfully", "voucherErrorCode": "INVALID_CODE" }
The date from which the purchased online offer becomes valid
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/online-offers/purchase
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/online-offers/purchase
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://open-api-demo.open-api.perfectgym.com/v1/online-offers/purchase \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY_HERE' \
-d '{
"onlineOfferId": 12345,
"customerId": 67890,
"validFrom": "2024-07-01",
"voucherCode": "SUMMER2024",
"paymentRequestToken": "abc123token"
}'OK
Success message if the voucher was applied successfully
Represents a voucher error code
| Enum Value | Description |
|---|---|
| INVALID_CODE | Represents an invalid voucher code |
| REFERRAL_COMBINATION_NOT_ALLOWED | Represents that the voucher cannot be combined with a referral code |
| ALREADY_REDEEMED | Represents that the voucher has already been redeemed |
{ "onlineOfferPurchaseId": 123456, "studioAccessCode": "PTKXPMUO", "price": { "amount": 20, "currency": "EUR" }, "discountedPrice": { "amount": 20, "currency": "EUR" }, "discountValue": { "amount": 20, "currency": "EUR" }, "voucherSuccessMessage": "Voucher applied successfully", "voucherErrorCode": "INVALID_CODE", "paymentToken": "tok_abc123" }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/online-offers/{customerId}/purchased
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/online-offers/{customerId}/purchased
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/online-offers/{customerId}/purchased' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
Name of this online offer. Uses the public name when available and otherwise falls back to the non-public name.
The price amount and currency for the online offer.
Online offer period of use information.
Represents a term with minutes
Describes the type of the online offer.
| Value | Description |
|---|---|
| CHECK_IN_BASED | The offer is based on check-ins. |
Information about the online booking related to the online offer.
Title of the online booking info. Uses the public title when available and otherwise falls back to the non-public title.
Target groups of the online booking info.
Describes the level of the online booking info.
| Enum Value | Description |
|---|---|
| ALL | The booking applies to all levels. |
| EXPERT | The booking is suited for experts. |
| BEGINNER | The booking is suited for beginners. |
| ADVANCED | The booking is suited for advanced participants. |
The date when the online offer was purchased in the timezone of the studio it was purchased in.
The expiry date of the online offer in the timezone of the studio it was purchased in.
Studio access code for the purchased online offer.
The date from which the purchased online offer becomes valid
Payment reference token that identifies this purchase in the payment system.
[ { "onlineOfferId": 12345, "name": "Day Ticket Adult", "scopeOfUsage": 1, "price": { … }, "periodOfUse": { … }, "type": "CHECK_IN_BASED", "category": { … }, "onlineBookingInfo": { … }, "onlineOfferPurchaseId": 123456, "purchaseDate": "2026-01-15T00:00:00.416924+01:00", "expiryDate": "2026-01-15T00:00:00+01:00", "studioAccessCode": "ABC123XYZ", "studioId": 67890, "validFrom": "2026-01-15T00:00:00+01:00", "voucherCode": "VOUCHER-ABC123", "discountedPrice": { … }, "discountValue": { … }, "paymentToken": "tok_abc123" } ]
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/online-offers/{customerId}/purchased/{offerId}
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/online-offers/{customerId}/purchased/{offerId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/online-offers/{customerId}/purchased/{offerId}' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
Name of this online offer. Uses the public name when available and otherwise falls back to the non-public name.
The price amount and currency for the online offer.
Online offer period of use information.
Represents a term with minutes
Describes the type of the online offer.
| Value | Description |
|---|---|
| CHECK_IN_BASED | The offer is based on check-ins. |
Information about the online booking related to the online offer.
Title of the online booking info. Uses the public title when available and otherwise falls back to the non-public title.
Target groups of the online booking info.
Describes the level of the online booking info.
| Enum Value | Description |
|---|---|
| ALL | The booking applies to all levels. |
| EXPERT | The booking is suited for experts. |
| BEGINNER | The booking is suited for beginners. |
| ADVANCED | The booking is suited for advanced participants. |
Restrictions (facility, age and time) applicable to the online offer. May be absent when the live offer variant is unavailable.
The date when the online offer was purchased in the timezone of the studio it was purchased in.
The expiry date of the online offer in the timezone of the studio it was purchased in.
Studio access code for the purchased online offer.
The date from which the purchased online offer becomes valid
Payment reference token that identifies this purchase in the payment system.
[ { "onlineOfferId": 12345, "name": "Day Ticket Adult", "scopeOfUsage": 1, "price": { … }, "periodOfUse": { … }, "type": "CHECK_IN_BASED", "category": { … }, "onlineBookingInfo": { … }, "validity": { … }, "restrictions": { … }, "onlineOfferPurchaseId": 123456, "purchaseDate": "2026-01-15T00:00:00+01:00", "expiryDate": "2026-01-15T00:00:00+01:00", "studioAccessCode": "ABC123XYZ", "studioId": 67890, "validFrom": "2026-01-15T00:00:00+01:00", "voucherCode": "VOUCHER-ABC123", "discountedPrice": { … }, "discountValue": { … }, "paymentToken": "tok_abc123" } ]