Skip to main content

Exely Connect APIs (1.0.0)

Download OpenAPI specification:Download

Authorization

Before you start

To use the API, you must obtain an access token (access_token). Access tokens are issued based on the client_id and client_secret credentials.

You can obtain these credentials through a property integration.

The hotelier creates an API integration in the Exely account and provides you with the client_id and client_secret credentials. For more information, see Integration through the property.

Once you have obtained your credentials, send a request to the authorization endpoint. The response will include an access token (access_token).

Include access_token in the Authorization header of every API request:

Authorization: Bearer <access_token>

Authorization is performed using OAuth2.0.

OAuth 2.0 is a standard protocol that allows applications to obtain access to data.

To access the API, include an access token in each request. The token is issued in the JSON Web Token (JWT) format.

JWT (JSON Web Token) is a secure, compact format for transmitting information between a client and a server.

Access tokens are obtained using Client credentials flow, which requires authorization using a client secret. To request an access token, the following parameters are required:

  • client_id,
  • client_secret.

Interaction flow

alt text

Exely. Authorization server: https://connect.hopenapi.com/auth/token

Access token

Rate limits

  • 3 requests per second,
  • 15 requests per minute,
  • 300 requests per hour per IP address.

Token lifetime

Access tokens are valid for 15 minutes.

Token refresh is not supported. Once the token expires, obtain a new access token through the authorization endpoint.

Authorization endpoint

Decoded token example:

eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2OGZjOHRNUGFSUHRyRHYtVHV2WEpncUNGTE1CVGRheTBpQkdJSUE3amxvIn0.eyJleHAiOjE2OTg5MTYwMzYsImlhdCI6MTY5ODkxNTEzNiwianRpIjoiYTJjZGJhMGQtYzQwNy00OWRmLThiNGQtOTJhNTM1NWQxYTFmIiwiaXNzIjoiaHR0cHM6Ly9wYXJ0bmVyLnRsaW50ZWdyYXRpb24uY29tL2F1dGgvcmVhbG1zL1BhcnRuZXJBcGkiLCJhdWQiOiJUcmF2ZWxMaW5lLlBhcnRuZXJBUEkiLCJzdWIiOiI4NmE0YjZiZS0wYTc0LTRjYjktYjNhYi1iNDYyZWUwYmIyYmQiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJwYTMiLCJzY29wZSI6IiIsImFwaV9hY2Nlc3NlcyI6WyJjb250ZW50Il19.Nz6dyaHGyIN5IKv30oM-HrqdQBqaGdzEFrk7ACUWbfvsNCHNowg96iJrGwQbkOUSVPtQJF9Cwf1_jywP6c2UPHclzBIDp9HTsYdVM5QS_k9ecs0GCiI8ACBqld3yatY4dJz3MRkxnU_rp0NbJJQ-uBcmg_9UCSCIc3mKR7UAosr5XOXeb4ckrFd67DK5xfofT0ykE46Qkc6nvev3AGx11fPAVsFnmmPOSnlpQzJTI7XBWbD120q5fDdksVlaiq3YoBueDEeOPFH08Ia6xdTVjIf_zsyOEKt2N8_7BTyWG_3YPThBbgn-eAgybSdeop6_eCrWTfQvX5g8qtR2e9J32A

You can decode the token using JWT.IO.

Decoded token example

Request body:

{
  "exp": 1698916036,
  "iat": 1698915136,
  "jti": "a2cdba0d-c407-49df-8b4d-92a5355d1a1f",
  "iss": "https://connect.hopenapi.com/auth/realms/PartnerApi",
  "aud": "Exely.ConnectApi",
  "sub": "86a4b6be-0a74-4cb9-b3ab-b462ee0bb2bd",
  "typ": "Bearer",
  "azp": "pa3",
  "scope": "",
  "api_accesses": [
    "content"
  ]
}

*Note: Refresh tokens are not used.

Recommendations

  1. Cache the access token on the client side and reuse it in subsequent requests.

  2. Use OAuth 2.0 libraries:

    • .NET:
      IdentityModel
      Microsoft.Extensions.DependencyInjection

    • JavaScript:
      oidc-client
      oidc-client-js Wiki

    • PHP:
      OpenID-Connect-PHP

    • cURL:

      curl -L -X POST "https://connect.hopenapi.com/auth/token" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -d "grant_type=client_credentials" \
      -d "client_id=XXXXXXXXXXXX" \
      -d "client_secret=XXXXXXXXXXXX"
      

Rate limits

To ensure the stability of the service, we apply limits to the number of API requests. If a limit is exceeded, the API returns a 429 Too Many Requests error and the request is not processed.

Unless otherwise specified, limits are applied separately to each API client. All requests made by the same client are counted against the same limit, regardless of the IP address or the number of access tokens used.

Request limits define the maximum number of requests that can be made per second, minute, or hour. For each incoming request, the system evaluates the number of requests made during the corresponding time window immediately preceding that request. For example, if the limit is set to 50 requests per second, the 51st request sent within the same second will be rejected. Requests can be made again once the number of requests made during the last second falls below the set limit. The same principle applies to per-minute and per-hour limits.

API Description Limits
Standard API limits All API methods that do not have dedicated limits 50 requests per second, 200 requests per minute, 3,000 requests per hour
PMS Integration Storage API All API methods 50 requests per second, 1,200 requests per minute, 30,000 requests per hour
Read Reservation API Retrieve a list of bookings 3 requests per second, 100 requests per minute, 3,000 requests per hour
Read Reservation API Retrieve booking details 10 requests per second, 200 requests per minute, 4,000 requests per hour
Search API Search for accommodation options by the lowest available price 3 requests per second, 20 requests per minute, 900 requests per hour
Search API Retrieve accommodation options 50 requests per second, 200 requests per minute, 1,000 requests per hour
Search API Retrieve accommodation options with extra services, early check-in, or late check-out 10 requests per second, 50 requests per minute, 500 requests per hour
Search API Retrieve extra services, early check-in, or late check-out options 10 requests per second, 100 requests per minute, 1,000 requests per hour

Monitor limits through headers

Each API response returns headers that help you track the remaining number of requests:

  • x-ratelimit-remaining-hour - number of remaining requests within one hour from the time the request was sent
  • x-ratelimit-remaining-minute - number of remaining requests within one minute from the time the request was sent
  • x-ratelimit-remaining-second - number of remaining requests within one second from the time the request was sent
  • retry-after is returned with the 429 Too Many Requests error and specifies the time in seconds after which the request can be retried

Error codes

Error code Message Description
400 Bad Request The request contains errors. For example, required headers are missing or parameter values are invalid.
401 Unauthorized This error may occur if the OAuth token is missing, invalid, or expired. In the latter case, obtain a new token.
403 Forbidden The user does not have access to specific API methods.
404 Not Found The requested resource does not exist or is outdated. Check the request URL.
429 Too Many Requests The requests-per-second (RPS) limit has been exceeded. Make sure you're not sending unnecessary requests.
500 Internal Server Error Internal server error. Try again later.
503 Service Unavailable The server is overloaded. Try again later.

CancellationRules

Swagger

Booking cancellation rules are set by the property to define the period when free cancellation is available, as well as the penalty for late cancellation. These rules are applied to selected rate plans through cancellationRuleId.

A rule can take effect starting from one of the following reference times:

  • ProviderArrivalTime: Standard check-in time. For example, if the check-in time is set to 14:00, free cancellation is available until 14:00 on the day before check-in.

  • ProviderDepartureTime: Standard check-out time. The cancellation period is calculated based on the property's standard check-out time applied to the check-in date. For example, if the property check-out time is set to 12:00, free cancellation is available until 12:00 on the day before check-in.

  • GuestArrivalTime: Check-in time selected by the guest when booking. For example, if the standard check-in time is 14:00, but the guest selects 16:00, free cancellation is available until 16:00 on the day before check-in. If guests cannot select a check-in time, the standard check-in time is applied.

  • CustomArrivalTime: Custom time from which the cancellation rule calculation starts. The time is specified in the referencePointTime field using the property's time zone.

  • BookingCreationTime: The time (but not the date) when the guest made the booking. For example, if the check-in time is set to 14:00 and the guest made a booking at 09:00, free cancellation is available until 09:00 on the day before check-in.

Penalty for a specific period

A penalty is set using a time frame that includes time units and a period before the reference time.

  • Time units:

    • None: Not specified, used only with the NoMatter period
    • Day: Days
    • Hour: Hours
  • Period before the reference time:

    • NoMatter: Does not depend on a specific time
    • AtLeast: Greater than or equal to beforeArrivalValue.
    • NoMoreThan: Less than or equal to beforeArrivalValue.
    • Between: Within the range from beforeArrivalValue to beforeArrivalValueMax.

Penalty calculation methods

  • NoPenalty: No penalty is applied
  • FirstNightPercent: The penalty is a specified percentage of the first night's cost
  • PrepaymentPercent: The penalty is a specified percentage of the prepayment amount
  • FirstNights: The penalty equals the full cost of the first N nights

The penalty for the selected calculation method is specified as a numeric value and currency.

The rule validity period can be set by selecting check-in dates in the property's time zone. The period includes both the start and end dates. If the end date is not specified, it can be set to "Not limited", which corresponds to isEndless = true.

If the rule does not contain cancellation terms, cancellation is free of charge.

Endpoint

GET /v1/properties/{propertyId}/cancellation-rules

Retrieves booking cancellation rules

Parameters:

  • propertyId (string, path): Property ID

Example:

GET /v1/properties/7291/cancellation-rules

{
  "cancellationRules": [
    {
      "id": "556875",
      "propertyId": "7291",
      "referencePointKind": "CustomArrivalTime",
      "referencePointTime": "10:57",
      "cancellationTerms": [
        {
          "beforeArrivalMatching": "Between",
          "beforeArrivalUnit": "Day",
          "beforeArrivalValue": 1,
          "beforeArrivalValueMax": 3,
          "penaltyCalculationMethod": "PrepaymentPercent",
          "penaltyValue": 10,
          "penaltyValueCurrency": "EUR",
          "arrivalDates": [
            {
              "startDate": "2024-07-11",
              "endDate": "2024-07-11",
              "isEndless": true
            }
          ]
        },
        {
          "beforeArrivalMatching": "NoMoreThan",
          "beforeArrivalUnit": "Hour",
          "beforeArrivalValue": 24,
          "penaltyCalculationMethod": "PrepaymentPercent",
          "penaltyValue": 100,
          "penaltyValueCurrency": "EUR",
          "arrivalDates": [
            {
              "startDate": "2021-02-09",
              "endDate": "2021-02-09",
              "isEndless": true
            }
          ]
        }
      ]
    }
  ]
}

Receive cancellation rules

path Parameters
propertyId
required
string
Example: 1024

Property ID

Responses

Response samples

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

ContentApi

Swagger

Content API retrieves photos and descriptions of the property, room types, rate plans, services, and amenities. This information is displayed in Exely Booking Engine on the property's website.

  1. Main settings, description, and photos of the property
  2. services - all services, including meals
  3. ratePlans - rate plans
  4. roomTypes - room types
  5. amenities - amenities
  6. Settings that are not available in the property's account:
    • currency - currency determined by the country
    • timeZone - time zone determined by the city
    • stayUnitKind - NightRate or DailyRate room sales in the booking engine determined by the property type
    • multiLocationProperty - allows different addresses for room types and can be enabled upon request to Exely customer support.

In addition, API provides available selection options.

Some common reference data, such as payment methods and property kinds, is available in the separate Reference Data API.

  1. meal-plans - meal plan types, for example:
    • code EnglishBreakfast name English breakfast
    • code FullBoard name Full board
  2. room-type-categories - accommodation offers. For example:
    • code Apartments name Apartment
    • code PlaceInRoom name Bed in room
    • code SmallHouse name Small house
  3. room-amenity-categories - room amenities. For example:
    • group Internet and telephony code wifi_internet name Wi-Fi
    • group Furniture code journal_table name coffee table

Services

The service type can be determined by the kind field value:

  • Common - any services except meals
  • Meal - meals

For meals, the mealPlanCode and mealPlanName fields are provided and completed with values from the meal plans reference.

Rate plans

Rate plans are linked to other API sections:

  • extraStayRuleId field - early check-in and late check-out rule (see ExtraStayRules)
  • cancellationRuleId field - booking cancellation rule (see CancellationRules)

Room types

Room types are linked to references:

  • categoryCode and categoryName fields - accommodation offer
  • code and name elements of the amenities array - room amenities

Amenities

List of property amenities:

  • code - identifier
  • displayName - display name
  • chargeType - charge type:
    • free - free-of-charge service
    • chargeable - paid service
    • none - charge type does not apply (the service does not require payment, for example: concierge)

Amenities with the swimming_pool and restaurant identifiers may be duplicated because there can be several of them within a single property.

Receive property entity

query Parameters
since
string
Example: since=UlUtNDE5NQ==

Key to continue viewing from the required spot

The number of accommodations in the response is limited, so you may not always be able to get them all within one request.

To continue from the spot you left off, use this option.

The value of this parameter can always be obtained from the response (‘next’ property).

If you do not specify this parameter, you will obtain accommodations from the very beginning of the list.

Analogue to pagination.

count
integer <int32>
Example: count=200

The number of elements in the response.

Maximum number of elements - 200 (default value)

include
string
Example: include=

Add additional information to the response

‘All’ value: information about the hotel, room types, rate plans and services

Empty value: ‘Id’ only

languageCode
string
Example: languageCode=

Language code. Allowed values: 'en' (English).

If you do not specify this parameter, you will obtain accommodations in the property’s language.

Responses

Response samples

Content type
application/json
{
  • "next": "string",
  • "properties": [
    ],
  • "warnings": [
    ]
}

Receive description of a property

path Parameters
propertyId
required
string
Example: 1024

Property ID

query Parameters
languageCode
string
Example: languageCode=

Language code. Allowed values: 'en' (English).

If you do not specify this parameter, you will obtain accommodations in the property’s language.

Responses

Response samples

Content type
application/json
{
  • "id": "1024",
  • "name": "Test hotel",
  • "description": "Hotel is located in a picturesque location. \n\nThere are 11 hotel rooms of \"Standard\" and \"Standard +\" categories, as well as 4 separate cottages of the \"Duplex\" type for accommodation of guests on the territory of the club.",
  • "currency": "GBP",
  • "images": [
    ],
  • "stars": 4,
  • "stayUnitKind": "NightRate",
  • "propertyKindId": 1,
  • "contactInfo": {
    },
  • "policy": {
    },
  • "timeZone": {
    },
  • "ratePlans": [
    ],
  • "roomTypes": [
    ],
  • "services": [
    ],
  • "multiLocationProperty": true,
  • "companyDetails": {
    },
  • "amenities": [
    ]
}

Receive entity of possible meal options

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Receive entity of possible room types

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Receive entity of possible room amenities

Responses

Response samples

Content type
application/json
[
  • {
    }
]

ExtraStayRules

Swagger

The early check-in and late check-out rules allow properties to set surcharges for early check-in and late check-out. These rules are applied to selected rate plans through extraStayRuleId.

The "Check-in and check-out" setting defines the standard check-in and check-out times that do not require an extra charge.

These rules allow properties to apply surcharges for specific time periods between the early check-in/late check-out time and the standard check-in/check-out time.

Surcharge calculation methods

  • Free: free of charge
  • Fixed: fixed rate
  • Percent: percentage of the daily rate
  • HourlyRate: hourly fixed rate
  • HourlyRateAutoCalculated: hourly auto-calculated price
  • Forbidden: no early check-in/late check-out

Fixed and HourlyRate allow multiple rates to be set in different currencies.

Percent allows setting a surcharge percentage and additional parameters:

  • extraPlacementEnabled: 'true' if a surcharge is applied for an extra guest, 'false' if no surcharge is applied for an extra guest
  • extraServiceOption: extra services with the [None, All, MealOnly] surcharge

OccupyQuota specifies whether room availability is guaranteed for an extra stay.

  • true: room availability is guaranteed
  • false: room availability is not guaranteed, even if the extra stay is prepaid

Endpoint

GET /v1/properties/{propertyId}/extra-stay-rules

Retrieves early check-in and late check-out rules

Parameters:

  • propertyId (string, path): Property ID

Example:

GET /v1/properties/7291/extra-stay-rules

{
  "extraStayRules": [
    {
      "id": "519845",
      "propertyId": "7291",
      "checkInTime": "13:00",
      "overridesPropertyCheckInTime": false,
      "earlyCheckInPeriods": [
        {
          "startTime": "00:00",
          "endTime": "09:00",
          "chargeType": "Forbidden",
          "rates": [],
          "occupyQuota": false
        },
        {
          "startTime": "09:00",
          "endTime": "13:00",
          "chargeType": "Percent",
          "rates": [],
          "percentOptions": {
            "percentage": 0,
            "extraPlacementEnabled": false,
            "extraServiceOption": "MealOnly"
          },
          "occupyQuota": false
        }
      ],
      "checkOutTime": "12:00",
      "overridesPropertyCheckOutTime": true,
      "lateCheckOutPeriods": [
        {
          "startTime": "12:00",
          "endTime": "16:00",
          "chargeType": "Fixed",
          "rates": [
            {
              "currency": "EUR",
              "rate": 20
            }
          ],
          "occupyQuota": false
        },
        {
          "startTime": "16:00",
          "endTime": "24:00",
          "chargeType": "Forbidden",
          "rates": [],
          "occupyQuota": false
        }
      ]
    }
  ]
}

Receive early check-in and late check-out rules

path Parameters
propertyId
required
string
Example: 1024

Property ID

Responses

Response samples

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

CorporateApi

Swagger

Corporate API allows you to create a corporate customer and retrieve its data by identifier. Corporate customers are used in integrations where bookings or payments need to be associated with a legal entity.

When creating a corporate customer, the following fields are required:

  1. taxpayerIdentificationNumber - Tax ID.
  2. registrationReasonCode - Registration Reason Code (KPP).
  3. metaData - additional information about a customer, if required by the integration.

In response, the API returns the customer's id, the legal entity name legalName and the registration details.

Creates a corporate client

Request Body schema:

Corporate client creation entity

taxpayerIdentificationNumber
required
string non-empty

Taxpayer Identification Number (TIN)

registrationReasonCode
required
string non-empty

Registration Reason Code (RRC).

Responses

Request samples

Content type
{
  • "taxpayerIdentificationNumber": "770493581",
  • "registrationReasonCode": "771401001"
}

Response samples

Content type
application/json
{
  • "corporate": {
    },
  • "warnings": [
    ]
}

Retrieves corporate client information

path Parameters
corporateId
required
string

Identifier of the corporate client

Responses

Response samples

Content type
application/json
{
  • "corporate": {
    },
  • "warnings": [
    ]
}

PaymentMethods

Swagger

Payment Methods API returns a reference of payment methods available in Partner API. This reference data can be used to map payment method codes to their corresponding types and to maintain consistency across integrations.

Each payment method includes:

  1. code - payment method code.
  2. type - payment method type.

Use the values from this reference when sending or processing payment information in related APIs.

Get list of payment methods

Responses

Response samples

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

PropertyAmenity

Swagger

Property Amenity API returns a reference of property amenities. These values can be used to display and map amenities in user interfaces and across integrations.

Each amenity includes the following fields:

  1. code - amenity code, for example, parking.
  2. displayName - amenity name.
  3. chargeTypeApplicable - indicates whether the amenity supports a payment type.

If chargeTypeApplicable is true, the amenity may be offered either free of charge or for an additional fee.

Get list of property amenity types

query Parameters
languageCode
string

Optional language code. Example: 'en' (English).

Responses

Response samples

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

PropertyKind

Swagger

Property Kind API returns a reference of property types. This reference data can be used to determine the type of a property, such as a hotel, apartment, etc.

Each property type includes the following fields:

  1. id - numeric identifier of the property type.
  2. displayName - property name.
  3. propertyKindType - system-defined property type.

Use this reference data to store and display property types consistently across systems and integrations.

Get list of property kinds

query Parameters
languageCode
string

Optional language code. Example: 'en' (English).

Responses

Response samples

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

Reservation

Swagger

Read Reservation API allows you to retrieve booking details from Exely Booking Engine, Exely Channel Manager, and Exely PMS.

Get booking summaries

This method returns a paginated list with brief information about each booking.

  • lastModification allows you to retrieve bookings created or updated after the specified UTC date and time. If omitted, the API performs a full synchronization.

  • continueToken allows you to continue retrieving the list. Its value is returned in the response of the previous request. The token does not expire. The request may return bookings that were previously retrieved but have since been updated.

  • hasMoreData = false indicates that the end of the current result set has been reached. Even after this, subsequent requests may return new data created after the previous request.

If continueToken is lost, it is recommended to start a new synchronization using lastModification to obtain new continueToken.

It is recommended to set the lastModification value as follows: use the booking lastModification value minus two days. This helps avoid missing bookings in subsequent requests.

Get booking details

This method returns detailed information about a single booking.

The response includes related data available through ContentApi:

  • booking.roomStays[].ratePlans[] - rate plans
  • booking.roomStays[].dailyRates[].RatePlanId - rate plan identifiers
  • booking.roomStays[].roomType - room types
  • booking.roomStays[].services[] - services
  • booking.services[] - services with the "Per booking" charge type.

Receive booking summaries

path Parameters
propertyId
required
string
Example: 1024

Property ID

query Parameters
continueToken
string
Example: continueToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Use the token from the previous response to continue receiving booking summaries including new and updated ones.
The token must not request bookings modified earlier than 2009-01-01T00:00:00Z.
For the first request, the parameter must be empty.

count
integer <int32>
Example: count=1000

Maximum mumber of booking summaries in response.
The maximum allowed value is 1000 (default).

lastModification
string <date-time>
Example: lastModification=2023-06-20T10:41:04Z

Enumerate booking summaries based on the last modification datetime, starting from the specified datetime in UTC.
Bookings can be requested starting from 2009-01-01T00:00:00Z.
For subsequent requests, the parameter must be empty.
Specifying both continueToken and lastModification results in an error.
If neither continueToken nor lastModification is specified, a search for all bookings starting from 2009-01-01T00:00:00Z (a full sync) is initiated.

Responses

Response samples

Content type
application/json
{
  • "continueToken": "Qm9va2luZ0NvbnRpbnVhdGlvblRva2Vu",
  • "hasMoreData": false,
  • "bookingSummaries": [
    ]
}

Receive booking details

path Parameters
propertyId
required
string
Example: 7291

Property ID

number
required
string
Example: 20240303-7291-14573801

Booking number

Responses

Response samples

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

SearchRoomStays

Swagger

Important: A mandatory condition for using Search API is to use search results for creating bookings in Exely Suite. If this requirement is violated, API access may be disabled by the provider. To restore access, contact support@exely.com

Search API retrieves accommodations with the lowest price across all available properties (up to 200) and offers provided by a specific property.

Search data is available up to one year from the current date. Maximum number of days between arrivalDate and departureDate is 100. Maximum number of days between arrivalDate and the current date is 365.

Two additional methods are available to retrieve early check-in / late check-out information and extra services provided by a specific property. Both types of data can be retrieved in a single request: GET /api/search/v1/properties/{propertyId}/room-stays when using includeExtraStays=true and includeExtraServices=true.

In the method /api/search/v1/properties/room-stays/search, you can specify the following filters:

By meal availabilitymealPreference.mealType. Available values:

All — returns the lowest-priced accommodation in each property.

MealOnly — returns the lowest-priced accommodation with meals included. If such an option is not available, the property is not returned.

By meal planmealPreference.mealsIncluded. You can specify meal plans using values returned by the following endpoints: content/v1/meal-plans — list of available meal plans,
content/v1/properties — information about all available properties, and content/v1/properties{propertyId} — information about a specific property.

Search results return the lowest-priced accommodation per property for the specified meal plans included in the rate plan. For example, if only BreakFast is specified, the response will include only the lowest-priced options with BreakFast. Options such as AllInclusive or HalfBoard are excluded.

The meal plan filter is available only when MealOnly is selected.

By minimum and maximum pricepricePreference.minPrice and pricePreference.maxPrice

These fields are optional. If provided, the search results will return the lowest-priced accommodations across all available properties based on the selected filters.

Search for the lowest priced accommodation options across all available accommodations. The maximum number of accommodation to be searched - 200.

Request Body schema:

Search parameters

propertyIds
Array of strings or null

Accommodations IDs

Maximum number of IDs - 200

adults
required
integer <int32>

Number of adults

childAges
Array of integers or null <int32>

Child age range

include
string or null

Add additional information about room types and rate plans to the response

empty by default, but values can be accepted as follows:

roomTypeShortContent - content by room types only

ratePlanShortContent - content by rate plans only

roomTypeShortContent|ratePlanShortContent - content by both rate plans and room types

arrivalDate
required
string <date-time>

Check-in date.

Date format complies with ISO-8601 YYYY-MM-DD

departureDate
required
string <date-time>

Check-out date.

Date format complies with ISO-8601 YYYY-MM-DD

object (SearchApi_MealPreference)

Meal filters

object (SearchApi_PricePreference)

Price filters

Responses

Request samples

Content type
{
  • "propertyIds": [
    ],
  • "adults": 1,
  • "childAges": [
    ],
  • "include": "",
  • "arrivalDate": "2026-08-24",
  • "departureDate": "2026-08-25",
  • "mealPreference": {
    },
  • "pricePreference": {
    }
}

Response samples

Content type
application/json
{
  • "roomStays": [
    ],
  • "warnings": [
    ]
}

Search for accommodation options by specific accommodation

path Parameters
propertyId
required
string
Example: 1024

Accommodation ID

query Parameters
arrivalDate
required
string
Example: arrivalDate=2026-08-24

Check-in date.

Format complies with ISO-8601 YYYY-MM-DD

departureDate
required
string
Example: departureDate=2026-08-25

Check-out date.

Format complies with ISO-8601 YYYY-MM-DD

adults
required
integer <int32>
Example: adults=1

Number of adults

childAges
Array of integers <int32> [ items <int32 > ]

Child age range

Responses

Response samples

Content type
application/json
{
  • "roomStays": [
    ],
  • "warnings": [
    ]
}

Search for extra services by accommodation conditions

path Parameters
propertyId
required
string
Example: 1024

Accommodation ID

Request Body schema:
required

Search parameters

required
object (SearchApi_StayDates)

Period of stay

required
object (SearchApi_RoomTypeRq)
required
object (SearchApi_RatePlan)

Rate plan entity

required
object (SearchApi_GuestCount)

Number of guests entity

Responses

Request samples

Content type
{
  • "stayDates": {
    },
  • "roomType": {
    },
  • "ratePlan": {
    },
  • "guestCount": {
    }
}

Response samples

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

Search for extra stays by accommodation conditions

path Parameters
propertyId
required
string
Example: 1024

Accommodation ID

Request Body schema:
required

Search parameters

object (SearchApi_StayDates)

Period of stay

object (SearchApi_RoomTypeRq)
object (SearchApi_RatePlan)

Rate plan entity

object (SearchApi_GuestCount)

Number of guests entity

Responses

Request samples

Content type
{
  • "stayDates": {
    },
  • "roomType": {
    },
  • "ratePlan": {
    },
  • "guestCount": {
    }
}

Response samples

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

Property

Retrieves the accommodation inventory for a property.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "accommodationInventory": {
    }
}

PropertyCompany

Swagger

The methods allow you to search for and retrieve information about companies from the property's account. This information is displayed in "Property management" > "Companies".

Retrieves the list of companies for a property.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

query Parameters
maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "companies": [
    ]
}

PropertyGuest

Swagger

These methods allow you to search, retrieve, and update guest profiles and related data, including loyalty cards, bookings, and documents, for a property. The information is available in Exely PMS under the "Guest profiles" section.

Searches guest profiles by name, phone or room number.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

query Parameters
phone
string
Example: phone=91390

Partial phone number to match

roomName
string
Example: roomName=111

Room/suite display name.

name
string
Example: name=Jo

Partial first or last name to match

languageCode
string
Example: languageCode=en

ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.

maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "guests": [
    ]
}

Retrieves basic loyalty card details for a guest.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

pmsPersonId
required
string
Example: 4503599627465719

Guest identifier in PMS

query Parameters
maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "loyaltyCards": [
    ]
}

Retrieves a guest profile by its PMS identifier.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

pmsPersonId
required
string
Example: 4503599627465719

Guest identifier in PMS

query Parameters
languageCode
string
Example: languageCode=en

ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "guest": {
    }
}

Retrieves the list of stays for a given guest.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

pmsPersonId
required
string
Example: 4503599627465719

Guest identifier in PMS

query Parameters
maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "roomStays": [
    ]
}

Updates guest’s identity document details.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

pmsPersonId
required
string
Example: 4503599627465719

Guest identifier in PMS

Request Body schema:

request

series
string or null

Document series (1–64 alphanumeric)

number
string or null

Document number (1–64 alphanumeric)

effectiveDate
string or null

Issue date in ISO-8601 YYYY-MM-DD format

expiryDate
string or null

Expiry date in ISO-8601 YYYY-MM-DD format

departmentCode
string or null

Issuing authority subdivision code (max 16 chars)

issueAuthority
string or null

Full issuing authority name (max 2048 chars)

type
string
Enum: "ForeignPassport" "InternationalPassportBiometric" "InternationalPassport" "TemporaryPassport" "BirthCertificate" "Diplomatic" "BirthCertificateForeign" "MilitaryOfficer" "ForeignPassportForeign" "Another" "DiplomaticForeign" "TemporaryResidence" "Residence" "TemporaryRefuge" "Cis" "WorkPassport" "ResidenceStateless" "NationalPassport" "KazPassport" "ResidenceStatelessBiometric" "TemporaryResidenceStateless" "TemporaryResidenceStatelessBlank" "Patent" "DriverLicense" "PersonalCard" "Passport"

Document type (required parameter) New values can be added (enum is not frozen).

  • ForeignPassport: International passport
  • InternationalPassportBiometric: International passport with biometrics
  • InternationalPassport: International passport of a Russian Federation citizen
  • TemporaryPassport: Temporary passport
  • BirthCertificate: Birth certificate
  • Diplomatic: Diplomatic passport of a Russian Federation citizen
  • BirthCertificateForeign: Foreign birth certificate
  • MilitaryOfficer: Officer ID card
  • ForeignPassportForeign: International passport issued outside the Russian Federation
  • Another: Another identity document
  • DiplomaticForeign: Diplomatic passport of a foreign citizen
  • TemporaryResidence: Temporary residence permit for a foreign citizen
  • Residence: Residence permit of a foreign citizen
  • TemporaryRefuge: Certificate of temporary refuge on the territory of the Russian Federation
  • Cis: Identity card of a citizen of CIS member states
  • WorkPassport: Service passport
  • ResidenceStateless: Residence permit of a stateless person
  • NationalPassport: National foreign passport
  • KazPassport: Identity card of a citizen of the Republic of Kazakhstan
  • ResidenceStatelessBiometric: Residence permit of a stateless person with biometrics
  • TemporaryResidenceStateless: Temporary residence permit of a stateless person (stamp)
  • TemporaryResidenceStatelessBlank: Temporary residence permit of a stateless person (blank)
  • Patent: Patent
  • DriverLicense: Driver license
  • PersonalCard: Identity card
  • Passport: Passport

Responses

Request samples

Content type
{
  • "series": "5000",
  • "number": "999999",
  • "effectiveDate": "2020-11-11",
  • "expiryDate": "2040-12-22",
  • "departmentCode": "1234",
  • "issueAuthority": "Some authority",
  • "type": "ForeignPassport"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

Updates guest's place of birth details.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

pmsPersonId
required
string
Example: 4503599627465719

Guest identifier in PMS

Request Body schema:

request

countryCode
string or null

ISO 3166-1 alpha-3 code of birth country

Responses

Request samples

Content type
{
  • "countryCode": "ARG"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

Uploads guest’s identity document scan files.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

pmsPersonId
required
string
Example: 4503599627465719

Guest identifier in PMS

Request Body schema:

request

Array of objects or null (PmsApi_FileInfo)

Details of files to upload

Array
content
string or null

File contents in Base64 (max 2 MB)

name
string or null

File name with extension.

Supported file extensions: ".pdf", ".jpg", ".jpeg", ".png", ".gif".

Responses

Request samples

Content type
{
  • "files": [
    ]
}

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

PropertyReservation

Swagger

Read Reservation API retrieves booking details from Exely PMS.

Get booking summaries

This method returns a paginated list with brief information about each booking.

  • pageToken allows you to continue retrieving the list. Its value is returned in the response of the previous request. The token does not expire. The request may return bookings that were previously retrieved but have since been updated.
  • hasNextPage = false indicates that the end of the current result set has been reached. Even after this, subsequent requests may return new data created after the previous request.

If the pageToken is lost, it is recommended to start a new request to obtain new pageToken.

Get booking details

This method returns detailed information about a single booking.

The response contains identifiers that can be used to retrieve additional information:

Save payment to a stay

This method allows you to save a payment to a stay using the pmsRoomStayId identifier, which can be retrieved from booking details through PMS API > PropertyReservation.

Input parameters:

  • pmsPaymentSystemId - payment method identifier. Specify one of the available payment methods that can be retrieved by: GET /v2/properties/{propertyId}/reservations/{number}/room-stays/{pmsRoomStayId}/find-available-payment-systems

Retrieves reservation details by reservation number.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

query Parameters
languageCode
string
Example: languageCode=en

ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "reservation": {
    }
}

Searches reservations by parameters; at least one time period must be specified.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

query Parameters
roomId
string
Example: roomId=4503599627373585

Room/suite identifier

state
required
string
Example: state=Active

Reservation status filter ("Active" or "Cancelled")

startModifyDateTime
string
Example: startModifyDateTime=2024-09-09T11:11

Last modification of the reservation is on or after the specified datetime in ISO-8601 yyyy-MM-ddTHH:mm format, local time.

Limit for "Modify" range is 365 days.

endModifyDateTime
string
Example: endModifyDateTime=2025-09-09T11:11

Last modification of the reservation is on or before the specified datetime in ISO-8601 yyyy-MM-ddTHH:mm format, local time.

Limit for "Modify" range is 365 days.

startAffectPeriodDateTime
string
Example: startAffectPeriodDateTime=2024-09-09T11:11

Stay or part of stay is after the specified datetime in ISO-8601 yyyy-MM-ddTHH:mm format, local time.

Limit for "AffectPeriod" range is 365 days

endAffectPeriodDateTime
string
Example: endAffectPeriodDateTime=2025-09-09T11:11

Stay or part of stay is before the specified datetime in ISO-8601 yyyy-MM-ddTHH:mm format, local time.

Limit for "AffectPeriod" range is 365 days

maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "reservations": [
    ]
}

Searches available rooms for each stay in the reservation.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

query Parameters
maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "availableRoomForRoomStays": [
    ]
}

Assigns room/suite for each stay in the reservation.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

Request Body schema:

request

Array
pmsRoomStayId
string or null

Stay identifier in PMS

roomId
string or null

Room or suite identifier

Responses

Request samples

Content type
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

Assigns the actual check-in time for a stay.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

pmsRoomStayId
required
string
Example: 4503599628227391

Room stay identifier in PMS

Request Body schema:

request

actualCheckInDateTime
string or null

Actual check-in date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time

Responses

Request samples

Content type
{
  • "actualCheckInDateTime": "2024-07-11T14:00"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

Assigns the actual check-out time for a stay.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

pmsRoomStayId
required
string
Example: 4503599628227391

Room stay identifier in PMS

Request Body schema:

request

actualCheckOutDateTime
string or null

Actual check-out date and time in ISO-8601 YYYY-MM-DDThh:mm format, Local time

Responses

Request samples

Content type
{
  • "actualCheckOutDateTime": "2024-07-11T14:00"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

Retrieves available payment methods for a stay.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

pmsRoomStayId
required
string
Example: 4503599628227391

Room stay identifier in PMS

query Parameters
action
string
Enum: "Payment" "Refund"
Example: action=Payment

Transaction type ("Payment" or "Refund")

languageCode
string
Example: languageCode=en

ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.

maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "paymentSystems": [
    ]
}

Processes a payment for a stay.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

pmsRoomStayId
required
string
Example: 4503599628227391

Room stay identifier in PMS

Request Body schema:

request

actionDateTime
string or null

Action date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time

pmsPaymentSystemId
string or null

Payment system ID in PMS

object or null

Total amount

comment
string or null

Payment comment

Responses

Request samples

Content type
{
  • "actionDateTime": "2024-07-11T14:00",
  • "pmsPaymentSystemId": "0oHjfSIZS0ng==",
  • "total": {
    },
  • "comment": "Payment for something"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

Processes a refund for a stay.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

pmsRoomStayId
required
string
Example: 4503599628227391

Room stay identifier in PMS

Request Body schema:

request

actionDateTime
string or null

Action date and time in ISO-8601 YYYY-MM-DDThh:mm format, local time

pmsPaymentSystemId
string or null

Payment system ID in PMS

object or null

Total amount

comment
string or null

Payment comment

Responses

Request samples

Content type
{
  • "actionDateTime": "2024-07-11T14:00",
  • "pmsPaymentSystemId": "0oHjfSIZS0ng==",
  • "total": {
    },
  • "comment": "Payment for something"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

Assigns a room for a stay.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

pmsRoomStayId
required
string
Example: 4503599628227391

Room stay identifier in PMS

Request Body schema:

request

roomId
string or null

Room or suite identifier

Responses

Request samples

Content type
{
  • "roomId": "4503599627373585"
}

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ]
}

Retrieves all invoices related to a reservation.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

number
required
string
Example: 22200222-111-99999999

Reservation number

query Parameters
languageCode
string
Example: languageCode=en

ISO 639-1 language code. Supported: en, ru, bg, cs, fr, id, ka, km, ko, pl, th, tr, uk, uz, vi.

maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "invoices": [
    ]
}

PropertyRoom

Swagger

These methods allow you to search and retrieve information about rooms included in a property's room inventory. The information is available in Exely PMS under the "Room inventory" section.

Retrieves the list of rooms/suites for a property.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

query Parameters
roomTypeId
string
Example: roomTypeId=315367

Room type identifier

maxPageSize
integer <int32>
Example: maxPageSize=100

Maximum number of items to return (<=100)

pageToken
string
Example: pageToken=V2Ugd2lzaCB5b3UgcHJvZHVjdGl2ZSBpbnRlcmFjdGlvbiE=

Pagination token for next page.

Token is in the response if the number of items exceeds the limit.

Send it back to get the next set of items.

If the request contains the token, other parameters passed in the query are ignored.

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "nextPageToken": "b24aRNO0Q0WD2CLexb8G6EnqlYqQTWUdGdkrh9DqjLYBthewTbDErm55sLvB+41A5p8aoDpkA6CG1QCGz63jBOqWcPrwZoHwDLUnPp6HZx4FKcRzBSrItBLY2QpAOWxYZnAF57I8dPg7/fgj/xgWEWT/M9qwM8MNihVJX1twL2jABZ3pG49qjbMJMUpXAHdnFtMNjV1ILwg+WhOXnnHjr+4BdmSTiQMAvo3inEewRRg=",
  • "hasNextPage": true,
  • "rooms": [
    ]
}

PropertyAnalytics

Swagger

PMS Analytics API retrieves daily statistics from Exely PMS.

Get daily occupancy statistics

The method returns property's daily statistics for the given period.

  • The date range is limited to 31 days. The startStayDate and endStayDate parameters are required and must be in ISO-8601 format (YYYY-MM-DD).
  • The optional otbDate parameter filters historical statistics to include only bookings created on the given date (OTB — On-the-Books).

Response fields:

  • currencyCode — currency code (ISO-4217)
  • propertyRoomCount — total number of rooms in the property according to the property profile
  • dailyOccupancies — daily statistics:
    • date — date
    • occupancyRate — property occupancy rate (0.0–1.0, where 1.0 = 100%)
    • closedRoomCount — out-of-order rooms (maintenance or other)
    • occupancyRoomCount — occupied rooms (includes only paid rooms; rooms with a zero rate are excluded)
    • complimentaryOccupancyRoomCount — occupied rooms with a zero rate
    • roomRevenue — net room revenue (excluding VAT, commissions, and extra services)
    • revenue — property's gross revenue for the day
    • mealRevenue — meal revenue
    • arrivalCount — number of check-ins for the date
    • guestCount — number of guests (adults + children)

Retrieves daily occupancy statistics for a property.

path Parameters
propertyId
required
string
Example: 5431

Property Identifier

query Parameters
startStayDate
required
string <date>
Example: startStayDate=2026-01-01

Start date of the stay period for reported statistics (ISO-8601 format YYYY-MM-DD). Limit for date range is 31 days

endStayDate
required
string <date>
Example: endStayDate=2026-01-25

End date of the stay period for reported statistics. (ISO-8601 format YYYY-MM-DD). Limit for date range is 31 days

otbDate
string <date>
Example: otbDate=2025-01-15

Optional OTB (On-the-Books) snapshot date. If specified, the historical statistics will be filtered based solely on the booking creation date

Responses

Response samples

Content type
application/json
{
  • "warnings": [
    ],
  • "errors": [
    ],
  • "currencyCode": "RUB",
  • "propertyRoomCount": 90,
  • "dailyOccupancies": [
    ]
}

Bookings

Retrieves booking details. The bookingId is obtained from a pms_integration_storage:booking_changed webhook event.

path Parameters
propertyId
required
string
Example: 2490

Property ID

bookingId
required
string
Example: 606541

Booking id

Responses

Response samples

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

Inventory

Returns PMS inventory filtered by room type codes and date range.

path Parameters
propertyId
required
string
Example: 2490

Property ID

Request Body schema:
required

Search filters: room type codes and date range

roomTypeCodes
required
Array of strings

Room type codes to filter by (PMS codes).

startDate
required
string <date>

Start date of the search range (inclusive) in ISO-8601 yyyy-MM-dd format, property local time. Maximum date range is 2 years.

endDate
required
string <date>

End date of the search range (inclusive) in ISO-8601 yyyy-MM-dd format, property local time. Maximum date range is 2 years.

Responses

Request samples

Content type
{
  • "roomTypeCodes": [
    ],
  • "startDate": "2026-01-01",
  • "endDate": "2026-12-31"
}

Response samples

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

Retrieves inventory block details. The inventoryBlockId is obtained from a pms_integration_storage:inventory_block_changed webhook event.

path Parameters
propertyId
required
string
Example: 2490

Property ID

inventoryBlockId
required
string
Example: 12345

Inventory block id

Responses

Response samples

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

Statistics

Calculates the number of booked stay units (days or nights) for a given period and rate plan.

path Parameters
propertyId
required
string
Example: 2490

Property ID

query Parameters
firstStayDate
required
string <date>
Example: firstStayDate=2025-05-15

First date of the period for calculation (inclusive) in ISO-8601 yyyy-MM-dd format, property local time

lastStayDate
required
string <date>
Example: lastStayDate=2025-08-15

Last date of the period for calculation (inclusive) in ISO-8601 yyyy-MM-dd format, property local time

pmsSideRatePlanCode
required
string
Example: pmsSideRatePlanCode=BAR1

Rate plan code from PMS (case-sensitive). Specified rate plan is used to filter bookings for calculation

Responses

Response samples

Content type
application/json
{
  • "stayUnits": 0
}