Skip to content

PerfectGym Next API (1.20.0)

  • 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
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"
provinceCodestring

Province code of the customer's address

Example: "MD"
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

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.123+02:00"
taxIdentificationsArray of objects(TaxIdentification)

Tax identification documents of the customer.

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"]
bankAccountobject(BankAccount)Deprecated

Customer's bank account information. Deprecated: For fetching bank accounts use the Search customers by payment details endpoint.

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", "provinceCode": "MD", "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.123+02:00", "taxIdentifications": [ {} ], "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"
provinceCodestring

Province code of the customer's address

Example: "MD"
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

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.123+02:00"
taxIdentificationsArray of objects(TaxIdentification)

Tax identification documents of the customer.

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"]
bankAccountobject(BankAccount)Deprecated

Customer's bank account information. Deprecated: For fetching bank accounts use the Search customers by payment details endpoint.

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", "provinceCode": "MD", "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.123+02:00", "taxIdentifications": [ {} ], "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"
phoneNumberstring

Customer phone number. Search matches private, private mobile, business, and business mobile numbers

Example: "+491234567890"
thirdPartyIdstring

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

Example: "A1000"
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",
    "phoneNumber": "+491234567890",
    "thirdPartyId": "A1000"
  }'

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"
provinceCodestring

Province code of the customer's address

Example: "MD"
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

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.123+02:00"
taxIdentificationsArray of objects(TaxIdentification)

Tax identification documents of the customer.

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"]
bankAccountobject(BankAccount)Deprecated

Customer's bank account information. Deprecated: For fetching bank accounts use the Search customers by payment details endpoint.

]
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", "provinceCode": "MD", "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.123+02:00", "taxIdentifications": [], "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" } ]

Search customers by payment details

Request

Required Scopes: CUSTOMER_PAYMENT_SEARCH

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

Security
ApiKeyAuth
Bodyapplication/jsonrequired
cardNumberFormatstring(CardNumberFormat)

Defines how card numbers are interpreted

Default "DECIMAL"
Enum"DECIMAL""HEX_MSB""HEX_LSB"
typestringrequired

Payment details type supported for search

Enum ValueDescription
BACS

BACS payment instrument type

FINGERPRINT

Fingerprint of any payment instrument

SEPA

SEPA payment instrument type

ACH

ACH payment instrument type

CREDIT_CARD

Credit card payment instrument type

Example: "ACH"
Discriminator
bankAccountNumberstringrequired

Bank account number (IBAN)

Example: "DE89370400440532013000"
curl -i -X POST \
  https://open-api-demo.open-api.perfectgym.com/v1/cross-studio/customers/search/by-payment-details \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "cardNumberFormat": "DECIMAL",
    "type": "SEPA",
    "bankAccountNumber": "DE89370400440532013000"
  }'

Responses

OK

Bodyapplication/jsonArray [
customerobject(Customer)required

Customer information

customer.​idinteger(int64)required

Unique ID of the customer

Example: 1001
customer.​customerNumberstring

Customer number

Example: "1-12345"
customer.​firstNamestring

First name of the customer

Example: "Edgar"
customer.​secondFirstNamestring

Second first name of the customer

Example: "Thomas"
customer.​lastNamestring

Surname of the customer

Example: "Bullock"
customer.​secondLastNamestring

Second last name of the customer

Example: "Meyer"
customer.​dateOfBirthstring(date)

Birthday of the customer

Example: "1952-05-04"
customer.​emailstring

Email address of the customer

Example: "example@email.com"
customer.​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"
customer.​streetstring

Street of the customer

Example: "Am Bahnhof"
customer.​houseNumberstring

Number of the customer's house

Example: 89
customer.​zipCodestring

Zip code of the customer

Example: "12133"
customer.​citystring

City of the customer

Example: "Munich"
customer.​countrystring(ISO 3166-1)

Country of the customer

Example: "DE"
customer.​secondStreetstring

Second street line of the customer's address

Example: "Second Street"
customer.​cityPartstring

City part of the customer's address

Example: "Tegel"
customer.​districtstring

District of the customer's address

Example: "District 12"
customer.​streetTypestring

Street type of the customer's address

Example: "Avenue"
customer.​streetBlockstring

Street block of the customer's address

Example: "5th block"
customer.​portalstring

Portal of the customer's address

Example: "Portal 1"
customer.​stairwaystring

Stairway of the customer's address

Example: "Right stairway"
customer.​doorstring

Door of the customer's address

Example: "Door 1"
customer.​provincestring

Province of the customer's address

Example: "Champagne"
customer.​provinceCodestring

Province code of the customer's address

Example: "MD"
customer.​additionalAddressInformationstring

Additional address information of the customer's address

Example: "Additional information"
customer.​floorstring

Floor of the customer's address

Example: "2nd floor"
customer.​buildingNamestring

Building name

Example: "Empire State Building"
customer.​statusstringrequired

Status of customer

Enum ValueDescription
FORMER_MEMBER

Customer is a former member

PROSPECT

Customer without contracts

MEMBER

Customer with contracts attached

Example: "MEMBER"
customer.​imageUrlstring

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

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

Private phone number of the customer

Example: "+49 30901820"
customer.​phonePrivateMobilestring

Private mobile phone number of the customer

Example: "+49 15223433333"
customer.​phoneBusinessstring

Business phone number of the customer

Example: "+49 30901820"
customer.​phoneBusinessMobilestring

Business mobile phone number of the customer

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

List of customer's idle periods

customer.​accessRefusalbooleanrequired

Indicates whether the customer has an access block currently

customer.​accessRestrictionsArray of objects(AccessRestriction)

List of access restrictions of the customer

customer.​uuidstring

Customer's UUID

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

Customer's referral code

Example: "20J6N"
customer.​studioIdinteger(int64)

Studio ID of the customer

Example: 1238735970
customer.​preferredLanguageobject(Language)

Basic language information

customer.​additionalInformationFieldAssignmentsArray of objects(AdditionalInformationFieldAssignment)

List of additional information field assignments of the customer

customer.​thirdPartyIdstring

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

Example: "A1000"
customer.​createdDateTimestring(date-time)

Customer's creation date time in ISO-8601 format

Example: "2022-06-15T23:59:59.123+02:00"
customer.​taxIdentificationsArray of objects(TaxIdentification)

Tax identification documents of the customer.

customer.​accessMediumsArray of objects(AccessMediumDto)

List of access mediums of the customer

customer.​cardNumbersArray of stringsDeprecated

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

Example: ["1290158199"]
customer.​bankAccountobject(BankAccount)Deprecated

Customer's bank account information. Deprecated: For fetching bank accounts use the Search customers by payment details endpoint.

paymentDetailsobject(CustomerPaymentDetails)

Payment details for a customer

]
Response
application/json
[ { "customer": {}, "paymentDetails": {} } ]

Request

Required Scopes: CLASSES_READ

Returns a list of class bookings of the customer from all studios with activated partner integration for a specific time window

Security
ApiKeyAuth
Path
customerIdinteger(int64)required

Unique ID of the customer

Query
studioIdinteger(int32)

Optional studio ID to filter bookings to a single studio while preserving cross-studio identity

slotWindowStartDatestring(date)

Start date of the slot window. Class slots are retrieved from slotWindowStartDate to (slotWindowStartDate + daysAhead). If omitted, today is used.

daysAheadinteger(int32)[ 0 .. 6 ]

Number of days to look ahead from slotWindowStartDate. If slotWindowStartDate is omitted, the window starts today.

Default 1
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}/class-bookings?studioId=0&slotWindowStartDate=2019-08-24&daysAhead=1&sliceSize=10&offset=0' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
resultArray of objects(CrossStudioClassBooking)required

List of class bookings

result[].​bookingIdinteger(int64)required

Unique ID of a class booking

Example: 2033
result[].​bookingStatusstringrequired

Status of the class slot booking

Enum ValueDescription
BOOKED

Customer is successfully booked

CANCELED

Customer booking is canceled

BOOKED_WITH_CONFIRMATION_REQUIRED

Customer is booked, but booking confirmation is required

WAITING_LIST

Customer is assigned to waiting list

Example: "BOOKED"
result[].​customerIdinteger(int64)required

Unique ID of a customer

Example: 14925548
result[].​participantStatusstringrequired

The status of a participant

Enum ValueDescription
PARTICIPATING

The customer is participating.

UNSET

The participation status is not set.

NOT_PARTICIPATING

The customer is not participating.

Example: "PARTICIPATING"
result[].​classInformationobject(CrossStudioClassInformation)required

Class information for a cross-studio booking

result[].​classInformation.​idinteger(int64)required

Unique ID of a class

Example: 14928
result[].​classInformation.​titlestringrequired

Title of the class

Example: "Functional HIIT"
result[].​classInformation.​categorystring

Category of the class

Example: "Fitness"
result[].​classInformation.​descriptionstring

Description of the class

Example: "High-intensity full body training with interval blocks"
result[].​classSlotInformationobject(CrossStudioClassSlotInformation)required

Class slot information for a cross-studio booking

result[].​classSlotInformation.​idinteger(int64)required

Unique ID of a class slot

Example: 14928
result[].​classSlotInformation.​statusstringrequired

The status of a class slot

Enum ValueDescription
COMPLETED

The class slot is completed.

CANCELED

The class slot is canceled.

PLANNED

The class slot is planned.

Example: "COMPLETED"
result[].​classSlotInformation.​startDateTimestring(date-time)

Start date and time of the class slot

Example: "2026-03-24T18:00:00+01:00"
result[].​classSlotInformation.​endDateTimestring(date-time)

End date and time of the class slot

Example: "2026-03-24T19:00:00+01:00"
result[].​studioInformationobject(CrossStudioStudioInformation)required

Studio information for a cross-studio booking

result[].​studioInformation.​idinteger(int64)required

Unique ID of the studio

Example: 123
result[].​studioInformation.​namestring

Name of the studio

Example: "Berlin Mitte"
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 customer's appointment bookings

Request

Required Scopes: APPOINTMENTS_READ

Returns a list of appointment bookings of the customer from all studios with activated partner integration for a specific time window

Security
ApiKeyAuth
Path
customerIdinteger(int64)required

Unique ID of the customer

Query
studioIdinteger(int32)

Optional studio ID to filter bookings to a single studio while preserving cross-studio identity

slotWindowStartDatestring(date)

Start date of the slot window. Appointments are retrieved from slotWindowStartDate to (slotWindowStartDate + daysAhead). If omitted, today is used.

daysAheadinteger(int32)[ 0 .. 6 ]

Number of days to look ahead from slotWindowStartDate. If slotWindowStartDate is omitted, the window starts today.

Default 1
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}/appointment-bookings?studioId=0&slotWindowStartDate=2019-08-24&daysAhead=1&sliceSize=10&offset=0' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
resultArray of objects(CrossStudioAppointmentBooking)required

List of appointment bookings

result[].​bookingIdinteger(int64)required

Unique ID of an appointment booking

Example: 9988
result[].​bookingStatusstringrequired

Status of the appointment booking

Enum ValueDescription
BOOKED

Customer is successfully booked

CANCELED

Customer booking is canceled

BOOKED_WITH_CONFIRMATION_REQUIRED

Customer booking is successful, but confirmation is required

Example: "BOOKED"
result[].​customerIdinteger(int64)required

Unique ID of a customer

Example: 14925548
result[].​participantStatusstringrequired

The status of a participant

Enum ValueDescription
PARTICIPATING

The customer is participating.

UNSET

The participation status is not set.

NOT_PARTICIPATING

The customer is not participating.

Example: "PARTICIPATING"
result[].​appointmentInformationobject(CrossStudioAppointmentInformation)required

Appointment information for a cross-studio booking

result[].​appointmentInformation.​titlestring

Title of the appointment

Example: "PT Intro Session"
result[].​appointmentInformation.​descriptionstring

Description of the appointment

result[].​appointmentInformation.​categorystring

Category of the appointment

Example: "Personal Training"
result[].​appointmentInformation.​appointmentStatusstringrequired

The status of an appointment

Enum ValueDescription
COMPLETED

The appointment is completed.

CANCELED

The appointment is canceled.

PLANNED

The appointment is planned.

Example: "COMPLETED"
result[].​appointmentInformation.​startDateTimestring(date-time)required

Start date and time of the appointment

Example: "2026-03-25T10:00:00+01:00"
result[].​appointmentInformation.​endDateTimestring(date-time)required

End date and time of the appointment

Example: "2026-03-25T10:45:00+01:00"
result[].​appointmentInformation.​durationinteger(int64)required

Duration of the appointment in minutes

Example: 45
result[].​studioInformationobject(CrossStudioStudioInformation)required

Studio information for a cross-studio booking

result[].​studioInformation.​idinteger(int64)required

Unique ID of the studio

Example: 123
result[].​studioInformation.​namestring

Name of the studio

Example: "Berlin Mitte"
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" }

Customers

Get customers and contracts

Operations

Customers Account

Retrieve customer accounting details

Operations

Customers Communication

Retrieve customer communication details

Operations
Operations

Customers Transactions

Retrieve customer transaction details

Operations
Operations
Operations
Operations
Operations
Operations

Membership Self-service

Manage membership contracts

Operations
Operations

Online offers

Online offer operations

Operations
Operations
Operations

Trial Offers

Get trial offers information

Operations