Skip to content

PerfectGym Next API (1.11.1)

  • 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
  • Get device information
  • Employee operations
  • Debt collection operations
  • Leads operations
  • Manage membership contracts
  • Membership operations
  • Payment operations
  • Get studio information
  • Get trial offers information
Download OpenAPI description
Languages
Servers
Demo tenant

https://open-api-demo.open-api.perfectgym.com/

Mock server

https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/

Appointments

Appointment, bookable appointment and slots operations

Operations

Checkin vouchers

Redeem checkin vouchers

Operations
Operations

Cross Studio

Cross studio operations

Operations

Request

Required Scopes: CUSTOMER_READ

Returns customer by one of the given parameters from all studios with activated partner integration

Security
ApiKeyAuth
Query
cardNumberstring

Card number to identify the customer

cardNumberFormatstring(CardNumberFormat)

Defines how card numbers are interpreted

Default "DECIMAL"
Enum"DECIMAL""HEX_MSB""HEX_LSB"
debtorIdstring

Unique ID of the debtor

barcodestring

Barcode to identify the customer

pinstring

PIN to identify the customer

customerNumberstring

Customer number to identify the customer

qrCodeUuidstring(uuid)Deprecated

QR code UUID to identify the customer

curl -i -X GET \
  'https://open-api-demo.open-api.perfectgym.com/v1/cross-studio/customers/by?cardNumber=string&cardNumberFormat=DECIMAL&debtorId=string&barcode=string&pin=string&customerNumber=string&qrCodeUuid=497f6eca-6276-4993-bfeb-53cbbbba6f08' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
idinteger(int64)required

Unique ID of the customer

Example: 1001
customerNumberstring

Customer number

Example: "1-12345"
firstNamestring

First name of the customer

Example: "Edgar"
secondFirstNamestring

Second first name of the customer

Example: "Thomas"
lastNamestring

Surname of the customer

Example: "Bullock"
secondLastNamestring

Second last name of the customer

Example: "Meyer"
dateOfBirthstring(date)

Birthday of the customer

Example: "1952-05-04"
emailstring

Email address of the customer

Example: "example@email.com"
genderstring

Gender of the customer

Enum ValueDescription
MALE

Male gender of the customer

FEMALE

Female gender of the customer

UNISEX

Unisex gender of the customer

Example: "MALE"
streetstring

Street of the customer

Example: "Am Bahnhof"
houseNumberstring

Number of the customer's house

Example: 89
zipCodestring

Zip code of the customer

Example: "12133"
citystring

City of the customer

Example: "Munich"
countrystring(ISO 3166-1)

Country of the customer

Example: "DE"
secondStreetstring

Second street line of the customer's address

Example: "Second Street"
cityPartstring

City part of the customer's address

Example: "Tegel"
districtstring

District of the customer's address

Example: "District 12"
streetTypestring

Street type of the customer's address

Example: "Avenue"
streetBlockstring

Street block of the customer's address

Example: "5th block"
portalstring

Portal of the customer's address

Example: "Portal 1"
stairwaystring

Stairway of the customer's address

Example: "Right stairway"
doorstring

Door of the customer's address

Example: "Door 1"
provincestring

Province of the customer's address

Example: "Champagne"
additionalAddressInformationstring

Additional address information of the customer's address

Example: "Additional information"
floorstring

Floor of the customer's address

Example: "2nd floor"
buildingNamestring

Building name

Example: "Empire State Building"
statusstringrequired

Status of customer

Enum ValueDescription
FORMER_MEMBER

Customer is a former member

PROSPECT

Customer without contracts

MEMBER

Customer with contracts attached

Example: "MEMBER"
imageUrlstring

Url with an image to download. It will expire after 15 minutes

Example: "https://example.com"
phonePrivatestring

Private phone number of the customer

Example: "+49 30901820"
phonePrivateMobilestring

Private mobile phone number of the customer

Example: "+49 15223433333"
phoneBusinessstring

Business phone number of the customer

Example: "+49 30901820"
phoneBusinessMobilestring

Business mobile phone number of the customer

Example: "+49 15223433333"
idlePeriodsArray of objects(CustomerIdlePeriod)

List of customer's idle periods

bankAccountobject(BankAccount)

Customer's bank account information

accessRefusalbooleanrequired

Indicates whether the customer has an access block currently

accessRestrictionsArray of objects(AccessRestriction)

List of access restrictions of the customer

uuidstring

Customer's UUID

Example: "7be3932c-825b-4401-abff-29e9f9410bc7"
referralCodestring

Customer's referral code

Example: "20J6N"
studioIdinteger(int64)

Studio ID of the customer

Example: 1238735970
preferredLanguageobject(Language)

Basic language information

additionalInformationFieldAssignmentsArray of objects(AdditionalInformationFieldAssignment)

List of additional information field assignments of the customer

thirdPartyIdstring

Unique ID of the third party customer in the third party system

Example: "A1000"
createdDateTimestring(date-time)

Customer's creation date time in ISO-8601 format

Example: "2022-06-15T23:59:59.999+02:00[Europe/Berlin]"
accessMediumsArray of objects(AccessMediumDto)

List of access mediums of the customer

cardNumbersArray of stringsDeprecated

UID list of the customer card numbers in expected format. (The new property to use is accessMediums)

Example: ["1290158199"]
Response
application/json
{ "id": 1001, "customerNumber": "1-12345", "firstName": "Edgar", "secondFirstName": "Thomas", "lastName": "Bullock", "secondLastName": "Meyer", "dateOfBirth": "1952-05-04", "email": "example@email.com", "gender": "MALE", "street": "Am Bahnhof", "houseNumber": 89, "zipCode": "12133", "city": "Munich", "country": "DE", "secondStreet": "Second Street", "cityPart": "Tegel", "district": "District 12", "streetType": "Avenue", "streetBlock": "5th block", "portal": "Portal 1", "stairway": "Right stairway", "door": "Door 1", "province": "Champagne", "additionalAddressInformation": "Additional information", "floor": "2nd floor", "buildingName": "Empire State Building", "status": "MEMBER", "cardNumbers": [ "1290158199" ], "imageUrl": "https://example.com", "phonePrivate": "+49 30901820", "phonePrivateMobile": "+49 15223433333", "phoneBusiness": "+49 30901820", "phoneBusinessMobile": "+49 15223433333", "idlePeriods": [ {} ], "bankAccount": { "accountHolder": "Sven Hannawald", "bankName": "Deutsche Bank", "bic": "DEUTDEFFXXX", "iban": "DE91 1000 0000 0123 4567 89" }, "accessRefusal": true, "accessRestrictions": [ {} ], "uuid": "7be3932c-825b-4401-abff-29e9f9410bc7", "referralCode": "20J6N", "studioId": 1238735970, "preferredLanguage": { "languageCode": "de", "countryCode": "DE" }, "additionalInformationFieldAssignments": [ {} ], "thirdPartyId": "A1000", "createdDateTime": "2022-06-15T23:59:59.999+02:00[Europe/Berlin]", "accessMediums": [ {} ] }

Request

Required Scopes: CUSTOMER_READ

Returns customer by given id from all studios with activated partner integration

Security
ApiKeyAuth
Path
customerIdinteger(int64)required

Unique ID of the customer

Query
cardNumberFormatstring(CardNumberFormat)

Defines how card numbers are interpreted

Default "DECIMAL"
Enum"DECIMAL""HEX_MSB""HEX_LSB"
curl -i -X GET \
  'https://open-api-demo.open-api.perfectgym.com/v1/cross-studio/customers/{customerId}?cardNumberFormat=DECIMAL' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
idinteger(int64)required

Unique ID of the customer

Example: 1001
customerNumberstring

Customer number

Example: "1-12345"
firstNamestring

First name of the customer

Example: "Edgar"
secondFirstNamestring

Second first name of the customer

Example: "Thomas"
lastNamestring

Surname of the customer

Example: "Bullock"
secondLastNamestring

Second last name of the customer

Example: "Meyer"
dateOfBirthstring(date)

Birthday of the customer

Example: "1952-05-04"
emailstring

Email address of the customer

Example: "example@email.com"
genderstring

Gender of the customer

Enum ValueDescription
MALE

Male gender of the customer

FEMALE

Female gender of the customer

UNISEX

Unisex gender of the customer

Example: "MALE"
streetstring

Street of the customer

Example: "Am Bahnhof"
houseNumberstring

Number of the customer's house

Example: 89
zipCodestring

Zip code of the customer

Example: "12133"
citystring

City of the customer

Example: "Munich"
countrystring(ISO 3166-1)

Country of the customer

Example: "DE"
secondStreetstring

Second street line of the customer's address

Example: "Second Street"
cityPartstring

City part of the customer's address

Example: "Tegel"
districtstring

District of the customer's address

Example: "District 12"
streetTypestring

Street type of the customer's address

Example: "Avenue"
streetBlockstring

Street block of the customer's address

Example: "5th block"
portalstring

Portal of the customer's address

Example: "Portal 1"
stairwaystring

Stairway of the customer's address

Example: "Right stairway"
doorstring

Door of the customer's address

Example: "Door 1"
provincestring

Province of the customer's address

Example: "Champagne"
additionalAddressInformationstring

Additional address information of the customer's address

Example: "Additional information"
floorstring

Floor of the customer's address

Example: "2nd floor"
buildingNamestring

Building name

Example: "Empire State Building"
statusstringrequired

Status of customer

Enum ValueDescription
FORMER_MEMBER

Customer is a former member

PROSPECT

Customer without contracts

MEMBER

Customer with contracts attached

Example: "MEMBER"
imageUrlstring

Url with an image to download. It will expire after 15 minutes

Example: "https://example.com"
phonePrivatestring

Private phone number of the customer

Example: "+49 30901820"
phonePrivateMobilestring

Private mobile phone number of the customer

Example: "+49 15223433333"
phoneBusinessstring

Business phone number of the customer

Example: "+49 30901820"
phoneBusinessMobilestring

Business mobile phone number of the customer

Example: "+49 15223433333"
idlePeriodsArray of objects(CustomerIdlePeriod)

List of customer's idle periods

bankAccountobject(BankAccount)

Customer's bank account information

accessRefusalbooleanrequired

Indicates whether the customer has an access block currently

accessRestrictionsArray of objects(AccessRestriction)

List of access restrictions of the customer

uuidstring

Customer's UUID

Example: "7be3932c-825b-4401-abff-29e9f9410bc7"
referralCodestring

Customer's referral code

Example: "20J6N"
studioIdinteger(int64)

Studio ID of the customer

Example: 1238735970
preferredLanguageobject(Language)

Basic language information

additionalInformationFieldAssignmentsArray of objects(AdditionalInformationFieldAssignment)

List of additional information field assignments of the customer

thirdPartyIdstring

Unique ID of the third party customer in the third party system

Example: "A1000"
createdDateTimestring(date-time)

Customer's creation date time in ISO-8601 format

Example: "2022-06-15T23:59:59.999+02:00[Europe/Berlin]"
accessMediumsArray of objects(AccessMediumDto)

List of access mediums of the customer

cardNumbersArray of stringsDeprecated

UID list of the customer card numbers in expected format. (The new property to use is accessMediums)

Example: ["1290158199"]
Response
application/json
{ "id": 1001, "customerNumber": "1-12345", "firstName": "Edgar", "secondFirstName": "Thomas", "lastName": "Bullock", "secondLastName": "Meyer", "dateOfBirth": "1952-05-04", "email": "example@email.com", "gender": "MALE", "street": "Am Bahnhof", "houseNumber": 89, "zipCode": "12133", "city": "Munich", "country": "DE", "secondStreet": "Second Street", "cityPart": "Tegel", "district": "District 12", "streetType": "Avenue", "streetBlock": "5th block", "portal": "Portal 1", "stairway": "Right stairway", "door": "Door 1", "province": "Champagne", "additionalAddressInformation": "Additional information", "floor": "2nd floor", "buildingName": "Empire State Building", "status": "MEMBER", "cardNumbers": [ "1290158199" ], "imageUrl": "https://example.com", "phonePrivate": "+49 30901820", "phonePrivateMobile": "+49 15223433333", "phoneBusiness": "+49 30901820", "phoneBusinessMobile": "+49 15223433333", "idlePeriods": [ {} ], "bankAccount": { "accountHolder": "Sven Hannawald", "bankName": "Deutsche Bank", "bic": "DEUTDEFFXXX", "iban": "DE91 1000 0000 0123 4567 89" }, "accessRefusal": true, "accessRestrictions": [ {} ], "uuid": "7be3932c-825b-4401-abff-29e9f9410bc7", "referralCode": "20J6N", "studioId": 1238735970, "preferredLanguage": { "languageCode": "de", "countryCode": "DE" }, "additionalInformationFieldAssignments": [ {} ], "thirdPartyId": "A1000", "createdDateTime": "2022-06-15T23:59:59.999+02:00[Europe/Berlin]", "accessMediums": [ {} ] }

Request

Required Scopes: CUSTOMER_READ

Returns all customers from all studios with activated partner integration by given criteria

Security
ApiKeyAuth
Bodyapplication/jsonrequired
firstNamestring

Substring of customer first name starts from beginning

Example: "Edga"
lastNamestring

Substring of customer last name starts from beginning

Example: "Bull"
emailstring

Customer email

Example: "example@email.com"
dateOfBirthstring(date)

Customer date of birth

Example: "1952-05-04"
cardNumberFormatstring(CardNumberFormat)

Defines how card numbers are interpreted

Default "DECIMAL"
Enum"DECIMAL""HEX_MSB""HEX_LSB"
curl -i -X POST \
  https://open-api-demo.open-api.perfectgym.com/v1/cross-studio/customers/search \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "firstName": "Edga",
    "lastName": "Bull",
    "email": "example@email.com",
    "dateOfBirth": "1952-05-04",
    "cardNumberFormat": "DECIMAL"
  }'

Responses

OK

Bodyapplication/jsonArray [
idinteger(int64)required

Unique ID of the customer

Example: 1001
customerNumberstring

Customer number

Example: "1-12345"
firstNamestring

First name of the customer

Example: "Edgar"
secondFirstNamestring

Second first name of the customer

Example: "Thomas"
lastNamestring

Surname of the customer

Example: "Bullock"
secondLastNamestring

Second last name of the customer

Example: "Meyer"
dateOfBirthstring(date)

Birthday of the customer

Example: "1952-05-04"
emailstring

Email address of the customer

Example: "example@email.com"
genderstring

Gender of the customer

Enum ValueDescription
MALE

Male gender of the customer

FEMALE

Female gender of the customer

UNISEX

Unisex gender of the customer

Example: "MALE"
streetstring

Street of the customer

Example: "Am Bahnhof"
houseNumberstring

Number of the customer's house

Example: 89
zipCodestring

Zip code of the customer

Example: "12133"
citystring

City of the customer

Example: "Munich"
countrystring(ISO 3166-1)

Country of the customer

Example: "DE"
secondStreetstring

Second street line of the customer's address

Example: "Second Street"
cityPartstring

City part of the customer's address

Example: "Tegel"
districtstring

District of the customer's address

Example: "District 12"
streetTypestring

Street type of the customer's address

Example: "Avenue"
streetBlockstring

Street block of the customer's address

Example: "5th block"
portalstring

Portal of the customer's address

Example: "Portal 1"
stairwaystring

Stairway of the customer's address

Example: "Right stairway"
doorstring

Door of the customer's address

Example: "Door 1"
provincestring

Province of the customer's address

Example: "Champagne"
additionalAddressInformationstring

Additional address information of the customer's address

Example: "Additional information"
floorstring

Floor of the customer's address

Example: "2nd floor"
buildingNamestring

Building name

Example: "Empire State Building"
statusstringrequired

Status of customer

Enum ValueDescription
FORMER_MEMBER

Customer is a former member

PROSPECT

Customer without contracts

MEMBER

Customer with contracts attached

Example: "MEMBER"
imageUrlstring

Url with an image to download. It will expire after 15 minutes

Example: "https://example.com"
phonePrivatestring

Private phone number of the customer

Example: "+49 30901820"
phonePrivateMobilestring

Private mobile phone number of the customer

Example: "+49 15223433333"
phoneBusinessstring

Business phone number of the customer

Example: "+49 30901820"
phoneBusinessMobilestring

Business mobile phone number of the customer

Example: "+49 15223433333"
idlePeriodsArray of objects(CustomerIdlePeriod)

List of customer's idle periods

bankAccountobject(BankAccount)

Customer's bank account information

accessRefusalbooleanrequired

Indicates whether the customer has an access block currently

accessRestrictionsArray of objects(AccessRestriction)

List of access restrictions of the customer

uuidstring

Customer's UUID

Example: "7be3932c-825b-4401-abff-29e9f9410bc7"
referralCodestring

Customer's referral code

Example: "20J6N"
studioIdinteger(int64)

Studio ID of the customer

Example: 1238735970
preferredLanguageobject(Language)

Basic language information

additionalInformationFieldAssignmentsArray of objects(AdditionalInformationFieldAssignment)

List of additional information field assignments of the customer

thirdPartyIdstring

Unique ID of the third party customer in the third party system

Example: "A1000"
createdDateTimestring(date-time)

Customer's creation date time in ISO-8601 format

Example: "2022-06-15T23:59:59.999+02:00[Europe/Berlin]"
accessMediumsArray of objects(AccessMediumDto)

List of access mediums of the customer

cardNumbersArray of stringsDeprecated

UID list of the customer card numbers in expected format. (The new property to use is accessMediums)

Example: ["1290158199"]
]
Response
application/json
[ { "id": 1001, "customerNumber": "1-12345", "firstName": "Edgar", "secondFirstName": "Thomas", "lastName": "Bullock", "secondLastName": "Meyer", "dateOfBirth": "1952-05-04", "email": "example@email.com", "gender": "MALE", "street": "Am Bahnhof", "houseNumber": 89, "zipCode": "12133", "city": "Munich", "country": "DE", "secondStreet": "Second Street", "cityPart": "Tegel", "district": "District 12", "streetType": "Avenue", "streetBlock": "5th block", "portal": "Portal 1", "stairway": "Right stairway", "door": "Door 1", "province": "Champagne", "additionalAddressInformation": "Additional information", "floor": "2nd floor", "buildingName": "Empire State Building", "status": "MEMBER", "cardNumbers": [], "imageUrl": "https://example.com", "phonePrivate": "+49 30901820", "phonePrivateMobile": "+49 15223433333", "phoneBusiness": "+49 30901820", "phoneBusinessMobile": "+49 15223433333", "idlePeriods": [], "bankAccount": {}, "accessRefusal": true, "accessRestrictions": [], "uuid": "7be3932c-825b-4401-abff-29e9f9410bc7", "referralCode": "20J6N", "studioId": 1238735970, "preferredLanguage": {}, "additionalInformationFieldAssignments": [], "thirdPartyId": "A1000", "createdDateTime": "2022-06-15T23:59:59.999+02:00[Europe/Berlin]", "accessMediums": [] } ]

Request

Required Scopes: CHECKIN_READ

Returns a list of studio checkins of the customer from all studios with activated partner integration for a specific time span (default is one month from today) in expected slices

Security
ApiKeyAuth
Path
customerIdinteger(int64)required

Unique ID of the customer

Query
fromDatestring(date)

The from date of the time span

toDatestring(date)

The to date of the time span, should not be greater than 365 days from the start date.

sliceSizeinteger(int32)[ 1 .. 50 ]

Desired size of data chunk

Default 10
offsetstring

Offset from last request

Default "0"
curl -i -X GET \
  'https://open-api-demo.open-api.perfectgym.com/v1/cross-studio/customers/{customerId}/activities/checkins?fromDate=2019-08-24&toDate=2019-08-24&sliceSize=10&offset=0' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
resultArray of objects(CustomerCheckin)required

List of checkins

result[].​checkinIdinteger(int64)required

Unique ID of the studio visit

Example: 1001
result[].​checkInDateTimestring(date-time)

Check in time of the studio visit in ISO-8601 format

Example: "2023-12-03T10:15:30+01:00"
result[].​checkOutDateTimestring(date-time)

Check out time of the studio visit in ISO-8601 format

Example: "2023-12-03T10:16:30+01:00"
result[].​studioIdinteger(int64)

Studio ID of the checkin studio

Example: 123
result[].​studioNamestring

Studio name of the checkin studio

Example: "Example studio"
hasNextbooleanrequired

True if there exists next data slice

Example: true
offsetstringrequired

Offset for next query

Example: "1234567890"
Response
application/json
{ "result": [ {} ], "hasNext": true, "offset": "1234567890" }

Get studios with active membership offers

Request

Required Scopes: STUDIO_READ

Returns all studios with at least one active membership offer.

Security
ApiKeyAuth
curl -i -X GET \
  https://open-api-demo.open-api.perfectgym.com/v1/cross-studio/membership-offers/studios \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/jsonArray [
namestring

Studio name

Example: "Example studio"
descriptionstring

Studio description

Example: "Example studio description"
countrystring

Studio address' country

Example: "Germany"
countryCodestring(ISO 3166-1)

Studio address' country code

Example: "DE"
studioIdinteger(int64)required

Studio Id

Example: 123
openingDatestring(date)

Studio opening date

Example: "2025-06-11"
closingDatestring(date)

Studio closing date

Example: "2029-01-01"
]
Response
application/json
[ { "name": "Example studio", "description": "Example studio description", "country": "Germany", "countryCode": "DE", "studioId": 123, "openingDate": "2025-06-11", "closingDate": "2029-01-01" } ]

Customers

Get customers and contracts

Operations

Customers Account

Retrieve customer accounting details

Operations

Customers Communication

Retrieve customer communication details

Operations
Operations
Operations
Operations
Operations
Operations

Membership Self-service

Manage membership contracts

Operations
Operations
Operations
Operations

Trial Offers

Get trial offers information

Operations