The RezdyConnect API powers the external supply side of Rezdy’s Channel Manager tool. The API is designed for ticketing systems needing to expand their channel management capabilities, and for suppliers of any size, using any ticketing system, who want access to Rezdy’s extensive distribution network.
The API is hosted by the supplier or ticketing system, with Rezdy acting as the client. Rezdy makes requests to pull availability and pricing, and pushes bookings and cancellations to the supplier system. Supplier endpoints must respond with data according to the RezdyConnect specification.
For Suppliers:
Access Rezdy Channel Manager’s features and extensive distribution network, while using a booking system other than Rezdy.
Able to build and maintain the API connection into Rezdy, allowing for full end-to-end automation via suppliers proprietary booking system.
For Ticketing and Booking Systems:
Provide customers (suppliers) with full end-to-end automation & channel manager features directly through your source system.
Enable customers (suppliers) to access the largest, most varied distribution network directly through your source ticketing system.
Able to build and maintain an API connection into Rezdy that meets technical requirements and specifications.
Rezdy offers different API products for different types of businesses. Make sure to choose the right one for your needs.
Rezdy API for agents
REST API for Rezdy agents and OTAs (online travel agents), providing functionality to resell suppliers products, including pulling shared products, availability and pricing from Rezdy, and pushing bookings and cancellations to Rezdy.
Rezdy API for agents specification
Rezdy API for suppliers
REST API for suppliers using Rezdy Booking Software provides functionality to manage their Rezdy inventory and booking capabilities.
Rezdy API for suppliers specification
RezdyConnect (RC)
The RezdyConnect API powers the supply side of the Rezdy Channel Manager tool. The API is designed for suppliers using other ticketing systems, allowing them to import and resell their products through Rezdy’s connected channels. Rezdy pulls availability and pricing, and pushes bookings and cancellations to the supplier’s booking system.
Rezdy Webhooks
Webhooks allow 3rd party applications to be notified or updated when certain events happen on Rezdy, by sending data to configured URLs.
Supported features of RezdyConnect are:
Two-step booking flow - reservation/confirmation
Booking cancellations
Availability pull / real-time availability push
Product features including:
product content and images
customer data / per order booking fields - main customer data and order related data
participants booking fields - per booking participant data
extras - optional services bookable together with products
pickups - including geo location, address, pickup instructions
Barcodes/QR codes per order or per participant, see reservation or booking response for details
Unsupported features are:
Booking amendments - normally any OTA originated booking amendments are handled as a new booking creation, followed by a booking cancellation
Coupons (vouchers and promo codes) - RezdyConnect is not synchronising any discount coupons available in the supplier's system
Interested in learning more about RezdyConnect? Please contact us at
to discuss the connectivity options for ticketing systems and suppliers.
Developing your integration to RezdyConnect now? Email us at
with questions and when you are ready to begin certification.
Already live with the RezdyConnect API? Get in touch with Rezdy for support, question, and advice:
To ensure the best booking experience for the end consumer, Rezdy requires all RezdyConnect partners to adhere to the baseline functional requirements and Service Level Agreement (SLA) outlined below.
Note: These requirements exist because of the functionality differences and constraints of connected agents and OTAs. Some variations may be acceptable, depending on the system’s base functionality, but non-compliance may limit the supplier’s choice of distribution partners
To ensure the best booking experience for the end consumer, all RezdyConnect partners must adhere to the Service Level Agreement (SLA) outlined below.
Rezdy will monitor the average response time of all partner integrations. Should the average response time not meet the minimum standard set, Rezdy will work with the partner to make sufficient improvements.
If sufficient improvements are not made within a reasonable timeframe, Rezdy may render the partner ineligible for live connectivity integration.
API Service | Average Response Time1 | Requirements |
---|---|---|
Availability - Single session | < 200 ms | Exact availability |
Availability - One month | < 500 ms | Can be from cache, max 1 day old |
Reserve | < 1000 ms | Idempotent requests2 Availability hold3 |
Booking | < 1000 ms | Idempotent requests2, No validation failures4 |
Cancellation | < 1000 ms | Idempotent requests2 |
Product | < 25000 ms |
1 Hard timeout for all endpoints is 25s.
2 Idempotent requests based on the order number, Rezdy may retry calls on timeout or failures
3 Availability must be held for reservations for at least 60 minutes.
4 Successful bookings should not fail on business validation, including missing availability or invalid product data. Most business validations should be performed on the step prior (reservation request)
Integration requirements may vary depending on the type of partner. Systems using RezdyConnect fall into these two categories:
Many-to-one - Booking software integrations into RezdyConnect that will facilitate connections between many suppliers and Rezdy Channel Manager.
One-to-one - A single supplier’s custom solution integrated into RezdyConnect for access to Rezdy Channel Manager.
If technical constraints prevent you from supporting any of the applicable requirements, please reach out to your Rezdy contact to discuss the impacts and options.
Requirement | Description | Many-to-One | One-to-One |
---|---|---|---|
Automate RezdyConnect Account Activation | This service automates the onboarding process from 'click to connect' to full product creation with the required endpoints. Direct access by individual suppliers should be restricted. | Mandatory | Optional |
Product Import | Enables suppliers to use our import screen to automatically import products. Alternatively, the supplier can set up products manually using the Rezdy UI. | Mandatory | Recommended |
Availability Sync | Enables Rezdy to load availability from the supplier's system. | Mandatory | Mandatory |
Reserve | Reserve availability by creating order. | Mandatory | Mandatory (based on product types) |
Commit | Booking confirmed | Mandatory | Mandatory |
Cancellation | Cancel order | Mandatory | Mandatory |
Real time Sync | Push updates from the supplier's system to Rezdy for real-time synchronization of product and price/availability. | Mandatory | Availability - Mandatory Product - Recommended |
Error Codes | Implementing Error Codes in the case of any RezdyConnect call failures, will allow Rezdy to work efficiently with the supplier to minimise the downtime and/or communicate the problem to the customer | Mandatory | Mandatory |
Before starting the integration project, contact Rezdy for the prerequisites steps:
Technical Scoping
Commercial Agreements
After commercial agreements have been finalized, engage with Rezdy’s Integrations team:
Project Kickoff Meeting
RezdyConnect Settings Configuration
Develop to RezdyConnect API
Certification
Supplier Piloting
Go Live
To complete the supplier's integration into Rezdy, refer to the steps outlined below:
Step | Description | |
---|---|---|
1 | Configure Security | Choose between API key and OAuth2 authentication. |
2 | Request Access | RezdyConnect configuration is not available by default. Access can only be granted after the partner has had a discussion with the Rezdy sales team. |
3 | Automate RezdyConnect Account Activation | This service automates the onboarding process of multiple supplier accounts. The feature enables 'click to connect' to full product creation with the required endpoints. Note: This step applies to Booking software systems and multi-site single suppliers. |
4 | Configure RezdyConnect Settings | Rezdy’s team works with the supplier to configure settings, including the refresh intervals, and product import. |
5 | Product Import | By implementing the product list endpoint the supplier can use our import screen to automatically import the supplier's products, otherwise the supplier can setup products manually using the Rezdy UI. |
6 | Implement RezdyConnect endpoints | RezdyConnect endpoints are required for synchronisation between the partner’s system and Rezdy.
|
7 | Real-time Update Notifications | Push updates from the supplier's system to Rezdy for real-time synchronization of products/prices and availability. Each call to the notification endpoints will trigger a refresh. Rezdy will process the refresh event and call availability or product list endpoint to retrieve the new data from the supplier's system and update the cache.
|
Authentication is required for all interactions between the Booking Software partner and Rezdy. Rezdy supports two types of authentication:
API Key - Query parameter based authentication
OAuth2 - Token based authentication sent under the Authorization header
Rezdy receives the apiKey during the Activation process. When received, the apiKey will automatically be appended as the apiKey parameter and sent with each of the service endpoints outlined below. Please notify your Rezdy Contact if the Activation Service will not be supported with the integration.
For example if your exposed endpoints are https://api.supplier.com/xxx, we will append apiKey as follows:
Availability - https://api.supplier.com/availability?apiKey=yourAPIKey
Reservation - https://api.supplier.com/reservation?apiKey=yourAPIKey
Booking - https://api.supplier.com/booking?apiKey=yourAPIKey
Cancellation - https://api.supplier.com/reservation?apiKey=yourAPIKey
Product - https://api.supplier.com/booking?apiKey=yourAPIKey
Rezdy supports OAuth2 bearer tokens if the Booking Software partner requires a token based authentication system.
If the Booking Software partner chooses to use this method of authentication, apiKey will be omitted in each request to the Booking Software partner.
Rezdy's requests follow the standard OAuth2 client_credentials grant type protocol.
Please refer to https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/ for the full specs.
Before each request, Rezdy will need to authenticate with the Booking Software partner's system in order to obtain a bearer token.
After a token is received, Rezdy will forward it under the Authorization header:
Authorization: Bearer access_token
If the Booking Software partner wishes to use OAuth2 Rezdy will require the following details:
Client ID - Unique client identifier for Rezdy to use
Client Secret - Secret that is paired with the Client ID
Http Method - Http method type Rezdy will use when calling the supplier's token endpoint. Rezdy supports POST and POST_X_WWW_FORM_URLENCODED
Token Endpoint - Endpoint to provide bearer tokens for Rezdy to send to the Booking Software partner's system
Example token requests
https://{the supplier's_token_endpoint}
Content-Type: application/json
{
"client_id": "123",
"client_secret": "secret123",
"grant_type": "client_credentials"
}
https://{the supplier's_token_endpoint}
Content-Type: application/x-www-form-urlencoded
client_id={client_id}
&client_secret={client_secret}
&grant_type=client_credentials
Expected Response Structure
{
"access_token": "token123",
"token_type": "bearer",
"expires_in": 3600
}
Rezdy will cache and re-use the same bearer token until the specified 'expires_in' timestamp returned by the Booking Software Partner before attempting to obtain a new bearer token.
The Booking Software partner may configure OAuth2 settings through query parameters in the Activation link. Please see more information on this here. Should the Booking Software Partner decide to switch from apiKey to OAuth2 later on, Please contact API Support.
This activation process is available to all third-party Booking Software partners to seamlessly onboard their suppliers to the Rezdy Marketplace. This service automates the onboarding process from 'click to connect' to full product creation with the required endpoints.
Note: Direct access to this feature by suppliers should be restricted to prevent duplicate accounts.
Rezdy will provide a redirect link that will navigate suppliers to the Rezdy account activation screen. Rezdy will collect the necessary supplier data to create and activate a ChannelManger account on Rezdy. The target endpoint contains both predefined and generic parameters, which should be appended to the link URL to pre-fill data on the Account activation screen or to provide customisation specific for the supplier's integration. Rezdy will provide separate links for each environment.
https://rc-onboarding.rezdy.com/activate?[parameters]
Supported parameters which can be appended to URL as query parameters:
email: [mandatory] a supplier's company e-mail
companyName: [mandatory] a supplier's company name
website: a supplier's company website
phone: a supplier's phone in international format (e.g. +61400000000)
country: a supplier's business location - 2-letter ISO country code (e.g. au)
currency: a supplier's products currency - 3 Letter ISO 4217 currency codes supported by Rezdy (e.g. AUD)
timezone: a supplier's timezone - Area/Location tz database timezone names (e.g. Australia/Sydney)
partnerSource: Rezdy defined value. We will let you know the value when it is set up and ready to use.
rc_apiKey: so that we can call the supplier's API, it should be per supplier. If OAuth2 is the preferred method of authentication, then this field can be omitted.
rc_oAuthClientId: a supplier's Client ID used by Rezdy to authenticate with the supplier's booking software. Only supply this parameter if the booking software uses OAuth2 instead of apiKey
rc_oAuthClientSecret: a supplier's Client Secret that is coupled with the Client ID used by Rezdy to authenticate with the supplier's booking software. Only supply this parameter if the booking software uses OAuth2 instead of apiKey
rc_oAuthTokenEndpoint: a supplier's oauth2 endpoint which Rezdy uses to authenticate with the supplier's booking software. Only supply this parameter if the booking software uses OAuth2 instead of apiKey
rc_oAuthHttpMethod: the http method used to call a supplier's oauth2 endpoint. Support methods are POST, POST_X_WWW_FORM_URLENCODED. Only supply this parameter if the booking software uses OAuth2 instead of apiKey
generic RezdyConnect parameters
custom integration parameters
Rezdy activation link must be integrated into secured pages that can only be accessed by authorized users. If the supplier requires additional encryption, Rezdy can issue a certificate to encrypt the query parameters from the URL upon request.
Given the following values at time of activation:
email: no-reply@rezdy.com
companyName: ToursAndActivities
website: dusan.toursandactivities.com
partnerSource: PARTNERSOURCECODE
phone: +61484123456
country: au
timezone: Australia/Sydney
currency: AUD
rc_apiKey: abcd1234
The URL to generate would be:
https://rc-onboarding.rezdy.com/activate?email=no-reply%40rezdy.com&companyName=ToursAndActivities&website=dusan.toursandactivities.com&phone=%2B61484123456%20&country=au&timezone=Australia%2FSydney¤cy=AUD&partnerSource=PARTNERSOURCECODE&rc_apiKey=abcd1234
Given the same values as before but with OAuth2 as the preferred method of authentication.
email: no-reply@rezdy.com
companyName: ToursAndActivities
website: dusan.toursandactivities.com
partnerSource: PARTNERSOURCECODE
phone: +61484123456
country: au
timezone: Australia/Sydney
currency: AUD
rc_oAuthClientId: 123
rc_oAuthClientSecret: 1234
rc_oAuthTokenEndpoint: https://tokenendpoint.com
rc_oAuthHttpMethod: POST_X_WWW_FORM_URLENCODED
The URL to generate would be:
https://rc-onboarding.rezdy.com/activate?email=no-reply%40rezdy.com&companyName=ToursAndActivities&website=dusan.toursandactivities.com&phone=%2B61484123456%20&country=au&timezone=Australia%2FSydney¤cy=AUD&partnerSource=PARTNERSOURCECODE&rc_clientId=123&rc_clientSecret=1234&rc_tokenEndpoint=https://tokenendpoint.com&rc_oAuthHttpMethod=POST_X_WWW_FORM_URLENCODED
When the supplier’s account on Rezdy is created, the general settings of the RezdyConnect integration are configured. This configuration is completed by the Rezdy team and may be customized based on the needs of the individual supplier.
Setting | Format | Default | Description |
---|---|---|---|
Product endpoint | Absolute URL | - | Product import endpoint, if automated product setup is supported |
Setting | Format | Default | Description |
---|---|---|---|
Primary Refresh times | Comma-separated times using HH:MM format | System generated, single time a day | Primary Batch refresh runs for a longer date span (next 6+ months availability) at trigger times. The refresh times can be set for multiple times a day if necessary. E.g. 00:00,06:00,18:00,12:00. |
Secondary Refresh times | Comma-separated times using HH:MM format | System generated, single time a day | Secondary Batch refresh runs for a shorter date span (next 1-6 months availability) at trigger times, can be set for multiple times a day if necessary. E.g. 00:00,06:00,18:00,12:00 The secondary refresh should be used to refresh session availability where seats may fill up faster closer to the travel date. |
Supports date interval | true/false | false | Set to false, if the supplier's system does not support date intervals for availability check, for example it always dumps a whole availability feed. Batch refresh will then obtain the whole availability of a product at once instead of splitting the refresh to one month interval chunks. |
Primary Refresh interval (month) | Number of months | 6 | Product availability interval to the Primary Batch refresh. E.g. To obtain and refresh with each batch, one year availability for each product on Rezdy, set it to 12. |
Secondary Refresh interval (month) | Number of months | 1 | Product availability interval for the Secondary refresh. E.g. to obtain and refresh with each batch, one month availability for each product on Rezdy, set it to 1. |
Setting | Format | Default | Description |
---|---|---|---|
Refresh timeout (sec) | Number of seconds | 600 | Number of seconds when an availability refresh from the external system is forced instead of using cached value on Rezdy. E.g. If set to 600, whenever Rezdy checks a session availability and this session has been refreshed in the last 10 minutes, a cached value on Rezdy will be used, instead of doing an external availability call. |
Reservation holding time (min) | Number of minutes | 60 | Number of minutes a reserved availability is held on Rezdy. If the supplier's system does not support at least a 60 minute hold, decrease this value accordingly. However, 60 minutes is recommended for a better user experience with some OTA connections. After the reservation hold time is over, Rezdy will call the cancellation endpoint, so you can release the held availability. |
Notifications e-mail address | company's profile e-mail address | RezdyConnect failure notification address, used for e.g. failed bookings, batch refresh errors, etc. | |
Skip notifications | true/false | false | Suppress RezdyConnect failures notifications |
If OAuth 2 is used as RezdyConnect authentication method with the supplier's system, used the settings below to configure it. Leave blank if API key is used.
Setting | Format | Default | Description |
---|---|---|---|
OAuth Token Endpoint | Absolute URL | - | OAuth 2 token endpoint URL |
Client ID | String | - | OAuth 2 Client Id |
Client Secret | String | - | OAuth 2 Client Secret |
OAuth Access Token Content Type | POST_X_WWW_FORM_ URLENCODED/POST | POST_X_WWW_ FORM_URLENCODED | Content type used in Rezdy request when obtaining access token application/x-www-form-urlencoded if set as POST_X_WWW_FORM_URLENCODED or application/json if POST |
Assuming that the supplier's supplier account is ready, there are multiple ways to import products on Rezdy:
Automated import - (recommended) implement product list endpoint and use product import screen
Manual method - create products manually using the Rezdy UI
For automated product import using Rezdy import screen, product endpoint needs to be implemented. The endpoint allows Rezdy to query available products in the supplier's system. See the product list endpoint specification for the required payload and product features which are currently supported.
To import the products, log into the supplier's Rezdy company account and navigate to product import screen. The screen can be accessed from main menu: Inventory -> Products -> Import Products button
Rezdy will list the products from the product import endpoint. It will identify the products already imported (the first on the screenshot with an existing Product Code PTEMMD) and new products not imported yet (a blank Product Code).
Choose the products for import, enter the email address at the bottom of the form and submit it. The import process is asynchronous and it will run in the background, an email will be sent with the results of the import once complete.
Choose the availability mode, related settings, the booking strategy, and the supported format. Based on the setting, suppliers need to specify necessary endpoints URLs. After the supplier saves the product, Rezdy will request one month availability to ensure the availability endpoint is working. Rezdy will validate URLs for all other endpoints. The supplier will use Rezdy UI to do the configuration.
Note: For suppliers using a booking software integration, if the Booking Software Partner is on OAuth2 authentication, the supplier can omit the apiKey query parameter in each of the above endpoints.
Below are the supported product scheduling modes and their impact on RezdyConnect behaviour. Scheduling modes affect how a product is scheduled and whether there is any capacity restriction or date requirement in the booking process.
While all product scheduling modes are supported in the RezdyConnect API, not all scheduling modes may be supported by OTAs. Please consult with Rezdy’s Technical Integrations team to review best practices.
No Date - a product is available everyday and with no availability limitation; the customer is not required to choose a time when making a booking (some OTAs may require date selection in their UI). Typical examples of No Date products are free-sell tickets, vouchers, gift cards, merchandise.
the product will not be part of the availability synchronization batch
the available capacity will not be checked before a booking
product startTime maybe passed in a booking request, only if the agent/OTA collects it as part of their transaction
set bookingMode
as NO_DATE
in GET /products
endpoint, to use this mode
Any Date - a product is available everyday and there is no availability limitation for these products, but customers will have to choose a time when making a booking. Typically examples of Any Date products are parks, walking tours, wellness appointments.
the product will not be part of the availability synchronization batch
the available capacity will not be checked before a booking
product startTime will be passed in a booking request
set bookingMode
as DATE_ENQUIRY
in GET /products
endpoint, to use this mode
Inventory Free-sell - availability is determined by sessions, but there is no limit for these sessions. Sessions are synchronized using the availability endpoint calls in a synchronization batch. Unlike to Any Date products, the schedule and closeouts of certain days can be managed.
the product will be part of the availability synchronization batch
the available capacity will not be checked before a booking
product startTime will be passed in a booking request
set bookingMode
as INVENTORY
in GET products endpoint and set seats
and seatsAvailable
as 999
in GET availability endpoint, to use this mode
Inventory Session based - availability is determined by sessions, they are synchronized using the availability endpoint calls, both batch and before checkout refresh. This mode is typically used for the majority of tours and activities, with managed inventory and limited availability.
the product will be part of the availability synchronization batch
the available capacity will be checked before a booking
product startTime will be passed in a booking request
set bookingMode
as INVENTORY
in GET /products
endpoint, to use this mode
Rezdy uses a two-step booking process. In this process, a reservation is created in a first call and then confirmed in a second call. This improves the customer experience and maximizes successful bookings by reducing the risk that a booking fails after payment is processed. The two-step booking process minimizes the need for manual intervention by the supplier to handle situations of a failed booking that has been originated by an OTA.
In a booking process Rezdy will use the availability endpoint to refresh availability and pricing. Once the reseller submits a booking to Rezdy, Rezdy will ensure the availability in the supplier's system. Rezdy will then send a booking in 'PROCESSING' state to the supplier's system by calling the Reservation endpoint. If that call fails, we stop the booking process. Otherwise, we create booking internally. If the supplier is using automated payments and the charge fails, the order is cancelled and the supplier's Cancellation endpoint is called. If no error occurs during the booking flow, we call the Confirmation endpoint.
Requests flow for two-steps booking process:
Rezdy returns cached sessions to the agent/OTA
The agent/OTA indicates the session selected by the consumer
Rezdy calls the product's Availability endpoint to refresh the session availability and pricing
If there are seats available, agent/OTA can proceed with the booking
Booking is created on Rezdy
Rezdy calls the product's Booking Reservation Endpoint
If an error response is received, Rezdy will refresh the availability for the travel date rejected by the supplier and the booking will be deleted. The reseller will in turn be notified. These default values can be overridden per company, please let Rezdy know if it is required.
The customer's payment is processed
If any error occurs, the booking will be deleted and Booking Cancellation Endpoint will be called
Otherwise Rezdy calls Booking Confirmation Endpoint
Note: Availability refresh call in the flow will be skipped for all scheduling modes except Inventory session based.
Diagram below shows the calls flow for booking originated in OTA systems connected to Rezdy via their APIs
The next step is to implement Rezdy connect endpoints, please refer to the general RC specification for details. We highly recommend implementing two-steps-booking-strategy.
To provide automated products import implement Product endpoint.
Enabling bookings by implementing the following endpoints:
To ensure successful bookings and accurate availability for agents and OTAs, Rezdy also recommends implementing push updates of product content and availability:
Note: Rezdy can use a customized configuration for batch availability refresh, which can be structured to better reflect the supplier's system. The batch start time, frequency, and date range can be configured. Please let Rezdy know if the supplier needs to change the default configuration.
Rezdy product codes are used when making an availability or booking call, so the supplier can either:
Use product.internalProduct code field for the supplier's product code (Recommended) – RezdyConnect will populate this as externalProductCode in all RezdyConnect calls (either as a query parameter for availability calls or in the request body for booking requests). If the supplier supports synchronise products endpoint, include products[N].internalCode field in the supplier's response. The field is supported via Rezdy API, too, if the supplier chose to create products that way, or alternatively, the supplier can set it up in UI (product Details tab -> Unique code).
Product code mapping – Map Rezdy product codes to the supplier's own internal codes and maintain the mapping on the supplier's end in the supplier's RezdyConnect implementation.
Several events can result in a call to the external endpoints. Calls to the booking endpoints are based on the booking strategy implemented by the supplier and the product scheduling mode. Availability calls to refresh availability and pricing will occur when:
Daily batch update - load the next 6+ months of availability for each product in monthly intervals.
The agent/OTA’s customer selects a specific session and starts a checkout process - refresh of the specific session, start and end time are the same (does not apply for the requests with intervals, when multiple sessions are matched).
Product scheduling settings are updated - one week of availability is pulled to test the endpoint There is an algorithm that determines if a session should be served from cache or if a refresh is required. It applies when a specific session is requested; therefore, the remote call might not be triggered, but the cached availability is used.
The following rules force the availability refresh from the external endpoint:
the requested session startTime in less than 7 days ahead,
the requested session has less than 4 seats available
the last update of the requested session was more than 10 mins ago
Below is an example of the start and end time parameters for batch availability refresh for 6 months. Rezdy will make separate calls for each month, start time is 00:00 of the first day of the month, end time is 23:59:59 last day of the month of the supplier's timezone setup on Rezdy. The exception is the first month, when the start time is set to the current time. Past sessions are never refreshed. In the example, the batch starts on Mar 13 14:20:00 UTC, when the supplier's timezone is UTC+14.
from - to: 2029-05-13T14:20:00.000Z - 2029-05-31T12:59:59.000Z
from - to: 2029-05-31T13:00:00.000Z - 2029-06-30T13:59:59.000Z
from - to: 2029-06-30T14:00:00.000Z - 2029-07-31T13:59:59.000Z
from - to: 2029-07-31T14:00:00.000Z - 2029-08-31T13:59:59.000Z
from - to: 2029-08-31T14:00:00.000Z - 2029-09-30T13:59:59.000Z
from - to: 2029-09-30T14:00:00.000Z - 2029-10-31T13:59:59.000Z
Note: Rezdy can use a customized configuration for batch availability refresh, which can be set up to better reflect the supplier's system. The batch start time, frequency, and date range can be configured. Please let us know if the supplier needs to change the default configuration.
A successful response from the supplier's endpoint must be HTTP status 2xx, and in most cases, it must contain a response entity, see each of the endpoints for details. An error response should use HTTP status 4xx in case of a business error and 5xx in case of an internal error. The response should contain a body with an error code and an error message to provide error details.
Note: A response with status code 2xx, but with an error object, or without the required response entity will be considered as an error response too.
Error response example:
{
"requestStatus":{
"error": {
"errorCode": "RC_INVALID_DATA",
"errorMessage": "Failed to create a booking, missing Reseller e-mail.",
"fields": "Reseller e-mail"
}
}
}
Please respond with one of the following HTTP Status and RC Error codes in case of any RezdyConnect call failures. Any call response with an error code marked as retriable may be retried by Rezdy. The errorMessage should be a user friendly text as it will be shown to a customer.
Error Code | Retriable | Alternative HTTP Status | Description |
---|---|---|---|
RC_INVALID_DATA | No | 400 | Rezdy sent invalid data. E.g. missing a required customer data for a booking, pickup location, etc. Example:
|
RC_NO_AVAILABILITY | No | 422 | The reservation or booking confirmation could not be fulfilled due to a lack of remaining availability.
It should NOT be used for cases when a booked product is no longer available. Please refer to RC_INVALID_PRODUCT.
We may use this to update the remaining availability. Example :
|
RC_AUTH_ERROR | No | 403 | Rezdy did not provide the required authentication data or is not authorised to perform the call.
For example, Rezdy provided invalid API key, missing authenticated headers, authenticated reseller does not have
access to the booked product etc
E.g. provided API key is incorrect, missing authentication headers, authenticated agent does not have access to
the booked product, etc.
Example:
|
RC_ENDPOINT_UNAVAILABLE | Yes | 503 | Temporal error. Endpoint is currently not available Example :
|
RC_MINIMUM_QUANTITY_REQUIRED | No | 422 | Minimum booking quantity in either the reservation or the booking call is below the required number.
For minimum booking quantity violation, please specify quantityRequiredMin field.
Group Requirements are not supported so the quantityRequiredMin field would represent for Per Person PriceOptions only.
We may use this data to update your product settings. Example :
|
RC_MAXIMUM_QUANTITY_REACHED | No | 422 | Maximum booking quantity in either the reservation or the booking call is above the required number.
For maximum booking quantity violation, please specify quantityRequiredMax field.
Group Requirements are not supported so the quantityRequiredMax field would represent for Per Person PriceOptions only.
We may use this data to update your
product settings. Example :
|
RC_INVALID_ORDER | No | 422 | Booking cannot be fulfilled as the Reservation does not exist or the order is in Invalid State (Confirmation Endpoint)
Booking cannot be cancelled as the Booking does not exist or the Order is in Invalid State.(Cancellation Endpoint) Example:
|
RC_INVALID_PRODUCT | No | 422 | Product does not exist in the External system or is no longer active. We may use this data to remove this
product from Rezdy in the future. Example :
|
RC_INVALID_PRICE_OPTION | No | 422 | Price option is not found or is no longer active. Please provide an array of invalid price option labels in
the priceOption field. We may use this data to remove the obselete Price Options provided, from your Rezdy product configuration
in the Rezdy account. Example :
|
RC_MAX_RATE_LIMIT_REACHED | No | 429 | Too many requests sent in a particular interval of time. Please retry later. Example :
|
RC_INTERNAL_ERROR | Yes | 500 | Internal error whilst processing the request where none of the above scenarios applies Example :
|
RezdyConnect pulls availability and product content on a regular basis using a scheduled batch, however, for a better user experience, we recommend implementing real-time push updates to trigger an event whenever availability or product changes on the supplier's end. See Product update notification and Availability update notification for details.
bookingUrl
field.taxes
field.Updated Configure RezdyConnect section
Updated Automated product import section
Added support for OAuth2 authentication
Added a section for automated account activation, which is used by Booking software partner integrations
Specification of SLA timeouts for RezdyConnect endpoints
Error codes list specification
The endpoint provides a list of products available for Rezdy to import. Rezdy will call it from the product import screen for the initial product creation.
A pagination support on your end is recommended in case of large amount of products. Rezdy will send pagination parameters, offset and limit, with every product call as query parameters. If you do not support pagination just ignore these parameters and return a list of all products matching filters in a response.
If pagination is supported on your end, include an HTTP header pagination-has-more=true
for each response, letting us know
if you have next pages, or whether the current one is the last page. Rezdy will keep calling your endpoint while the parameter has the value set as true.
GET https://rc-stubs.rezdy.com/products?offset=0&limit=100
GET https://rc-stubs.rezdy.com/products?offset=100&limit=100
GET https://rc-stubs.rezdy.com/products?offset=200&limit=100
...
If pagination is implemented, respond with an HTTP header:
pagination-has-more:true
or
pagination-has-more:false
There are two options on how to map a product between your system and Rezdy:
Once you do an initial import of products on Rezdy, you can create the mapping on your end using Rezdy generated productCodes.
Use the internalCode field to specify your product identifier. The field will then be sent with every RezdyConnect request as the externalProductCode query parameter.
When importing all products to the supplier’s Channel Manager account on Rezdy, your system is required to return a list of all available products. The request for that list of all available products will be made by calling the supplier’s product endpoint without any additional query parameters.
GET: https://rc-stubs.rezdy.com/products?apiKey=ABC12346&offset=0&limit=100
For synchronisation of selected existing products in the product import screen, Rezdy will send productCodes and externalProductCodes as query parameters.
You can use either field, based on your preferred mapping, and return only the requested products. Preserve the order of the products in the response.
If you fail to load any of the requested products, the whole call should fail instead of skipping the failed products in the response.
This will avoid incorrect ordering and thus wrong mapping on Rezdy end. The call URL follows the pattern below. You can call the endpoint rc-stubs.rezdy.com
, our stub implementation of RC endpoints for a demonstration purpose, a response from your endpoint should be similar.
GET: https://rc-stubs.rezdy.com/products?apiKey=ABC12346&externalProductCode=YOURPRODUCTCODE1&externalProductCode=YOURPRODUCTCODE2&productCode=P00001&productCode=P00002&offset=0&limit=100
Note: If the Booking Software Partner is on OAuth2 authentication, Rezdy will omit apiKey in each request and instead pass a token under the Authorization header, e.g. Authorization: Bearer {token}
RezdyConnect products support different scheduling modes. This affects how we refresh product availability and how availability is displayed to customers.
While all product scheduling modes are supported in the RezdyConnect API, not all scheduling modes may be supported by OTAs. Please consult with Rezdy’s Technical Integrations Specialists to review best practices.
Supported scheduling mode examples:
A product has a specific start time and limited availability. E.g., A tour or activity with a limited number of participants and a specified start time. To create this configuration, use:
"bookingMode": "INVENTORY",
In this case bookingMode could be omitted as it's a default value
A product has a specific start time and unlimited availability. E.g., Products like a self-guided tour or walking tour. There may be 2 different schedules here:
"bookingMode": "INVENTORY",
Availability endpoint response:
"seats": 10,
"seatsAvailable": 5,
"bookingMode": "DATE_ENQUIRY",
A product does not have a specific start time - an open ticket
Such products always have unlimited availability. There is no need to support the availability endpoint for these products, Rezdy will not use it.
"bookingMode": "NO_DATE",
barcodeType
allows the Booking Software Partner to recommend the rendering format of the redemption code/barcodes provided with each booking confirmation. The barcodeType
must be set at the Product level.
The barcodeType field must be populated in the Product response payload and the following barcodeType (formats) are supported "TEXT", "QR_CODE", "CODE_39", "CODE_128", "EAN_8", "EAN_13", "ITF"
If this field is omitted from the Product response payload, Rezdy sets the value to QR Code format (default).
The example below depicts a product with a redemption code format of CODE_128 (Barcode 128).
"barcodeType": "CODE_128",
barcodeOutputType
allows the Booking Software Partner to specify the outputType requirement of the barcode provided with each booking confirmation. The barcodeOutputType
must be set at the Product level.
This allows Rezdy to determine whether to expect a Barcode for each participant or at the order level. Rezdy currently supports PARTICIPANT
and ORDER
PARTICIPANT
= Assigns a generated barcode per participant.
ORDER
= Converts the order number provided by the Booking software partner as the order level barcode and will not assign a barcode per participant.
When barcodeOutputType
is not specified, Rezdy will default to ORDER
.
The example below depicts a product with a barcodeOuputType of PARTICIPANT
(per participant).
"barcodeOutputType": "PARTICIPANT",
Rezdy has a predefined set of booking fields that you may use, or you can create your own using custom labels (supported types are String, List, Boolean, and Hidden). The predefined fields have an implicit format based on the fieldType, which we validate when a customer creates a booking.
The predefined set of the Rezdy booking fields type is one of:
String
Phone
List
Date
Boolean
The list of predefined fields on Rezdy (label
and fieldType
):
Title: String
First Name: String
Middle Name: String
Last Name: String
Phone: Phone
Mobile: Phone
Fax: String
Skype: String
Email: String
Gender: List
Date of birth: Date
Preferred Language: List
Company Name: String
Address: String
City: String
Country: List
State/County/Region: String
Postcode/ZIP: String
I agree to receive marketing emails: Boolean
How did you hear about us?: String
Special Requirements: String
Message to recipient: String
Barcode: String
This field must contain a boolean value. Accepted values are "true", "false" (case insensitive matching)
{
"label": "I agree to receive marketing emails",
"value": "true"
}
This field must be a ISO-8601 date only format yyyy-MM-dd e.g. 1991-01-01
{
"label": "Date of Birth",
"value": "1991-01-01"
}
This field must be in an international format +41 44 668 18 00, or E164 format +41446681800
{
"label": "Mobile",
"value": "+61484123456"
}
List types need to match one of the predefined values. For a custom list booking field you can specify the values using listOptions
field as \r\n
separated values. Below are the predefined lists provided by Rezdy:
This field must be in ISO 3166-1 alpha-2 codes format e.g., Australia -> AU, United States -> US (case insensitive matching)
{
"label": "Country",
"value": "AU"
}
Valid genders that are accepted through our API are: MALE and FEMALE. (case insensitive matching)
{
"label": "Gender",
"value": "MALE"
}
Valid titles that are accepted through our API are: MR, MS, MRS, MISS. (case insensitive matching)
{
"label": "Title",
"value": "MISS"
}
To create your own fields with a custom label, use one of these types:
String (default) - a text value, this field type will be rendered on Rezdy booking Form as a TEXTFIELD
Boolean - a true, false value, this field type will be rendered on Rezdy booking Form as a CHECKBOX
Hidden - a hidden booking field value can be provided in a booking response as a string, and can be access by various APIs and internal order screen, but will be hidden from customer facing screens such a Rezdy booking Form
List - a predefined list of values, this field type will be rendered on Rezdy’s booking form as a SELECTLIST
for example:
{
"label": "Custom String field",
"requiredPerParticipant": false,
"requiredPerBooking": true,
"visiblePerParticipant": true,
"visiblePerBooking": true,
"fieldType": "String"
},
{
"label": "Custom Boolean field",
"requiredPerParticipant": false,
"requiredPerBooking": true,
"visiblePerParticipant": true,
"visiblePerBooking": true,
"fieldType": "Boolean"
},
{
"label": "Custom Hidden field",
"requiredPerParticipant": false,
"requiredPerBooking": true,
"visiblePerParticipant": true,
"visiblePerBooking": true,
"fieldType": "Hidden"
},
{
"label": "Custom List field",
"requiredPerParticipant": false,
"requiredPerBooking": true,
"visiblePerParticipant": false,
"visiblePerBooking": true,
"fieldType": "List",
"listOptions": "A\nB\nC\nD"
},
apiKey | string API Key for a RezdyConnect product. It is recommended to specify an API Key as a query parameter of product RC endpoints. Rezdy will preserve the query parameter when making a call to your endpoint, so you can verify that the call has originated in Rezdy. |
productCode | string <P[0-9A-Z]{5}> Example: productCode=P123XY A list of Rezdy's product codes. Rezdy's product code is automatically generated in Rezdy when a product is created. It is unique and permanent, therefore it is suitable for a product mapping on your end. |
externalProductCode | string <[0-9a-zA-Z]> Example: externalProductCode=ABCD12345 A list of your system's product codes. Your product Code is only sent if it has been populated in product.internalCode in Rezdy. It is an alternative option to store product mapping in Rezdy upon product creation. |
required | Array of objects (ProductsResponseProducts) |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
A product with all features
{- "products": [
- {
- "internalCode": "YOURPRODUCTCODE2",
- "additionalInformation": "Additional information for the product, that Rezdy sends after a booking is completed (i.e. by email) to the customer",
- "advertisedPrice": 99,
- "bookingFields": [
- {
- "label": "First Name",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": false,
- "visiblePerBooking": false
}, - {
- "label": "Last Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false
}, - {
- "label": "Email",
- "requiredPerParticipant": false,
- "requiredPerBooking": true,
- "visiblePerParticipant": false,
- "visiblePerBooking": false
}
], - "barcodeType": "QR_CODE",
- "barcodeOutputType": "PARTICIPANT",
- "bookingMode": "INVENTORY",
- "confirmMode": "AUTOCONFIRM",
- "durationMinutes": 60,
- "extras": [
- {
- "description": "Description of the product extra",
- "extraPriceType": "QUANTITY",
- "name": "GoPro rental",
- "price": 10,
- "quantity": 10
}
], - "pickupLocations": [
- {
- "address": "123 Address Street",
- "latitude": 26.820553,
- "longitude": 30.802498,
- "locationName": "New hotel",
- "minutesPrior": 60,
- "pickupInstructions": "Meet in front of hotel"
}
], - "images": [
], - "languages": [
- "en_au"
], - "locationAddress": {
- "addressLine": "The Promenade, Lime Street",
- "city": "Sydney",
- "countryCode": "au",
- "postCode": "2000",
- "state": "NSW"
}, - "name": "Morning kayaking tour in the harbour",
- "priceOptions": [
- {
- "label": "Adult",
- "price": 100,
- "seatsUsed": 1
}, - {
- "label": "Child",
- "price": 50,
- "seatsUsed": 1
}, - {
- "label": "1 Adult + 2 Children",
- "price": 180,
- "seatsUsed": 3
}, - {
- "label": "Family of 4",
- "price": 200,
- "seatsUsed": 4
}
], - "productType": "ACTIVITY",
- "quantityRequired": true,
- "quantityRequiredMax": 6,
- "quantityRequiredMin": 1,
- "shortDescription": "A short description of the product which should be a plain text. See the min, max length restrictions in the product model specification.",
- "description": "Long description of the product can use some white-listed HTML tags and should contain a full description fo your tour or activity. See the min, max length restrictions in the product model specification.",
- "terms": "Specific terms and conditions for this product",
- "unitLabel": "Passenger",
- "unitLabelPlural": "Passengers",
- "taxes": [
- {
- "taxFeeType": "TAX",
- "label": "GST",
- "taxPercent": 10,
- "taxType": "PERCENT",
- "priceInclusive": true,
- "compound": false
}, - {
- "taxFeeType": "FEE",
- "label": "National Park Entry",
- "taxType": "FIXED_PER_QUANTITY",
- "taxAmount": 10
}
], - "rezdyConnectSettings": {
- "externalAvailabilityApi": "https://rc-stubs.rezdy.com/products/123/availability?apiKey=YOURAPIKEY",
}
}
]
}
This endpoint is used to load availability from your system to Rezdy. It's called primarily from batch refresh, but it might be triggered by other events in Rezdy when we identify that the cached availability needs to be refreshed.
Rezdy will call the availability endpoint using HTTP GET method and decorate the endpoint URL with additional query parameters productCode, externalProductCode, from, to, fromLocal and toLocal. All parameters are always sent by Rezdy.
When Rezdy call the availability endpoint using HTTP GET method, Rezdy is expecting to receive in the response, all sessions where startTime falls between the to and from datetime parameters in the query. For example, if Rezdy queries for from=2019-03-04T22:00:00.000Z&to=2019-03-05T00:00:00.000Z
, the response should contain available sessions with start times between 2019-03-04 22:00 and 2019-03-05 00:00
For single-session queries, the start and end time parameters in the query will have the same dateTime values. For example from=2019-03-04T22:00:00.000Z&to=2019-03-04T22:00:00.000Z
. In this example, Rezdy is expecting to receive availability data on any session with a start time of 2019-03-04 22:00 in the response
The response has an array of Session objects
The session response should contain all the sessions within the specified from and to interval, DO NOT EXCLUDE session with 0 availability (Sold out).
The session's startTime and endTime are represented in UTC time zone, startTimeLocal and endTimeLocal are in local time zone. It is up to you to decide which time zone you would like to use in the response. The UTC time zone has priority if both are present. See the dates format
For all day sessions set startTimeLocal and endTimeLocal as midnight, or UTC equivalent for startTime and endTime. For example "startTimeLocal": "2021-01-15 00:00:00", "endTimeLocal": "2021-01-16 00:00:00" for a single day, all day tour on January 15th.
If you do not need to support dynamic pricing per session, or the pricing of a certain session is the same as the product default price, you can omit the priceOptions array.
If you override the price at the session level, the priceOptions labels on the session have to match the priceOptions labels on the product. Note that the label matching is case sensitive.
The session level priceOptions can be a subset of the product priceOptions, however, you CANNOT add a new priceOption which does not exist on the product. The product needs to be updated first in such case.
There are 2 date formats in our API model.
The first one is ISO8601 format, and typically fields such as startTime, endTime are formatted this way.
The other one is a localized date format, which is based on your timezone setup on Rezdy. Typically, used by fields startTimeLocal/endTimeLocal.
Local format does not contain timezone information, the format is yyyy-MM-dd HH:mm:ss, e.g.:
2014-10-30 09:00:00
Using local date format is recommended to avoid issues related to UTC conversions and daylight saving time.
If you use ISO8601 format, you will have to convert times to UTC timezone. For example, a tour on 30 Oct 2014 at 9:00 AM in the “Sydney/Australia” timezone, time in ISO8601 format returned by the API will be:
2014-10-29T22:00:00Z
That’s because 2014-10-29T22:00:00Z is the same time as 2014-10-30T09:00:00+11:00. You can send any of these formats, they’re both valid and both represent the same timestamp.
Here is an example of the Product Availability Endpoint::
https://rc-stubs.rezdy.com/availability?apiKey?ABC123456
Note: If the Booking Software partner is on OAuth2 authentication, Rezdy will omit apiKey in each request and instead pass a token under the Authorization header, e.g. Authorization: Bearer {token}
The dateTime in the query parameter should be referred to as a query for any session with startTime that falls between the to and from dateTime values. The start and end time parameters in the query will have the same dateTime values. In the below example, Rezdy is expecting to receive data on any session with a start time of 2019-03-04 22:00:00 in the response.
GET: https://rc-stubs.rezdy.com/availability?apiKey=ABC12346&productCode=P12345&from=2019-03-04T22:00:00.000Z&to=2019-03-04T22:00:00.000Z&fromLocal=2019-03-04 14:00:00&toLocal=2019-03-04 14:00:00&externalProductCode=ABCD
The dateTime in the query parameter should be referred to as a query for any session with startTime that falls between the to and from dateTime values. The start and end time parameters in the query will have different dateTime values. In the below example, Rezdy is expecting to receive data on any session with a start time between the period of 2019-03-31T22:00:00.000 and 2019-04-30T21:59:00.000 in the response.
GET: https://rc-stubs.rezdy.com/availability?apiKey=ABC12346&productCode=P12345&from=2019-03-31T22:00:00.000Z&to=2019-04-30T21:59:00.000Z&fromLocal=2019-03-31 14:00:00&toLocal=2019-04-30 13:59:00&externalProductCode=ABCD
apiKey | string API Key for a RezdyConnect product. It is recommended to specify an API Key as a query parameter of product RC endpoints. Rezdy will preserve the query parameter when making a call to your endpoint, so you can verify that the call has originated in Rezdy. |
productCode required | string <P[0-9A-Z]{5}> Example: productCode=P123XY Rezdy's product Code. This product code is automatically generated in Rezdy when a product is created. It is unique and permanent, therefore it is suitable for a product mapping on your end. |
externalProductCode | string <a string max length 255> Example: externalProductCode=ABCD12345 Your product Code is only sent if it has been populated in product.internalCode in Rezdy. It is an alternative option to store product mapping in Rezdy upon a product creation. |
from required | string <ISO 8601 date-time format yyyy-MM-dd'T'HH:mm'Z> Example: from=2019-05-29T20:00:00Z It represents a begining of a search interval for a session start time in UTC timezone. |
to required | string <ISO 8601 date-time format yyyy-MM-dd'T'HH:mm'Z> Example: to=2019-05-29T22:00:00Z It represents an end of a search interval for a session start time in UTC timezone. |
fromLocal required | string <local date-time format yyyy-MM-dd HH:mm:ss> Example: fromLocal=2019-05-29 12:00:00 It represents a beginning of a search interval for a session start time in a local time based on the timezone configured on your Rezdy profile. |
toLocal required | string <local date-time format yyyy-MM-dd HH:mm:ss> Example: toLocal=2019-05-29 14:00:00 It represents an end of a search interval for a session start time in a local time based on the timezone configured on your Rezdy profile. |
object (RequestStatus) Request processing status. | |
required | Array of objects (AvailabilityResponseSessions) |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
A minimalistic single session RESPONSE from your endpoint using local times with dynamic pricing.
{- "sessions": [
- {
- "startTimeLocal": "2019-03-31 14:00:00",
- "endTimeLocal": "2019-03-31 16:00:00",
- "seats": 10,
- "seatsAvailable": 5,
- "priceOptions": [
- {
- "price": 99.99,
- "label": "Adult"
}
]
}
]
}
Request and (successful) response must contain exactly one Booking object in the Request body/Response envelope.
The order of the booking items and participants must be preserved between request and response.
You can use either the Rezdy generated orderNumber from the request in the format R12345, or you can generate you own and return it in the response, Rezdy will then use your order number to store the booking internally and use your orderNumber for any future requests including confirmation and cancellation call.
If you use your own orderNumber, it must be unique for each booking and a maximum of 36 characters long.
Rezdy booking software supports multiple barcode types "TEXT", "QR_CODE", "CODE_39", "CODE_128", "EAN_8", "EAN_13", "ITF"
. Rezdy stores the barcode values retrieved from your reservation or booking call response.
For bookings originated by an OTA, the barcode value and type are propagated to the OTA if the OTA’s integration supports them. Rezdy renders barcodes based on the product’s barcodeType
if Rezdy issues the order confirmation emails.
*Note: Rezdy supports rendering of different barcode types; however, QR_CODE is the default. If the supplier wishes to support a different type, set up a barcodeType
for the desired products as part of the Product Synchronisation step.
Per order barcode
Booking field labelled as "Barcode" under fields
is used to specify the order barcode. If you plan to use per order barcode, add a Barcode booking field as part of booking response as shown in Response samples.
If this booking field is not present, Rezdy will treat orderNumber
as the order barcode
Per participants barcodes
Booking field labelled as "Barcode" under participants fields
is used to specify per participants barcodes. If you plan to use per participant barcodes, add a Barcode booking field for each participant in a reservation or a booking response as shown in Response samples.
Note: Per participant barcodes must be set up per product in the Rezdy UI. This can be completed in the following section.
Inventory -> Products -> Messages -> Notifications, check "Show a QR Code for each Participant" and select "Show a Rezdy generated QR Code for each Participant"
Note: If the Booking Software Partner is on OAuth2 authentication, Rezdy will omit apiKey in each request and instead pass a token under the Authorization header e.g. Authorization: Bearer {token}
Let's consider a product with the following RezdyConnect settings:
"rezdyConnectSettings": {
"externalAvailabilityApi": "https://rc-stubs.rezdy.com/availability?apiKey=123",
"externalReservationApi": "https://rc-stubs.rezdy.com/reservation?apiKey=123",
"externalBookingApi": "https://rc-stubs.rezdy.com/booking?apiKey=123",
"externalCancellationApi": "https://rc-stubs.rezdy.com/cancellation?apiKey=123"
}
The endpoints URLs can be the same or different, configuration is up to you. For all three requests, Reservation, Booking, and Cancellation, the request data will be almost similar, and Rezdy will always send a full booking object. The only difference among the calls is the HTTP method used for the request and booking status:
Reservation endpoint: HTTP POST, booking.status = "PROCESSING"
Booking endpoint: HTTP PUT, booking.status = "CONFIRMED"
Cancellation endpoint: HTTP DELETE, booking.status = "CANCELLED" or "ABANDONED_CART"
An example of a URL of a Reservation request made by Rezdy:
POST: https://rc-stubs.rezdy.com/reservation?apiKey=ABC123456
apiKey | string API Key for a RezdyConnect product. It is recommended to specify an API Key as a query parameter of product RC endpoints. Rezdy will preserve the query parameter when making a call to your endpoint, so you can verify that the call has originated in Rezdy. |
comments | string Special requirements entered by the customer. Visible to both customer and supplier. |
commission | integer <int64> Calculated commission that the agent should receive for this booking. |
coupon | string Promo code that has been applied to this booking. |
object (BookingRequestCreatedBy) User who created this Booking. | |
object (BookingRequestCreditCard) Add a credit card payment to a booking. | |
required | object (BookingRequestCustomer) Customer details. |
dateConfirmed | string Date this booking was confirmed. |
dateCreated | string Date this booking was created. |
datePaid | string Date this booking was fully paid. |
dateReconciled | string Date this booking was reconciled with the agent. |
dateUpdated | string Date this booking was last updated. |
Array of objects (BookingRequestFields) List of custom fields that are required "once per booking" by all the products in this booking. | |
internalNotes | string Comments only visible internally by the supplier. |
required | Array of objects (BookingRequestItems) Items in this booking. RezdyConnect currently supports only a single item per booking. A BookingItem is a product with a set of quantities and participant details. |
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by Rezdy. |
paymentOption | string Enum: "ALIPAY" "BANKTRANSFER" "CASH" "CREDITCARD" "EXTERNAL" "INVOICE" "PAYPAL" Payment option selected by the customer when making an online booking. |
Array of objects (BookingRequestPayments) List of payments recorded for this booking. | |
resellerAlias | string Alias of the agent company attached to this booking. |
resellerComments | string Comments only visible by the agent and the supplier. This should be used by the agent to send voucher numbers./redemption codes to suppliers. |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking. |
resellerName | string Name of the agent company attached to this booking. |
resellerReference | string External reseller reference, can be used to pass internal booking number. This reference will be shown to a supplier,. also it will appear on reports and can be used to filter orders. |
resellerSource | string Enum: "API" "INTERNAL" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "ONLINE" Source of this booking viewed from the agent. |
object (BookingRequestResellerUser) Name of the agent user attached to this booking. | |
sendNotifications | boolean Flag to control if a booking confirmation email should be send to the customer after this booking is created.<br./ > This will also send other types of customer notifications when setup by the supplier (I.e. SMS, Gift cards). |
source | string Enum: "API" "INTERNAL" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "ONLINE" Source of this booking viewed from the supplier. |
sourceChannel | string Agent code defined by the supplier. |
sourceReferrer | string Referrer code. |
status | string Enum: "ABANDONED_CART" "CANCELLED" "CONFIRMED" "NEW" "ON_HOLD" "PENDING_CUSTOMER" "PENDING_SUPPLIER" "PROCESSING" Status of this booking. |
supplierAlias | string Alias of the company supplying this product. |
supplierId | integer <int64> Rezdy internal ID of the company supplying this product. |
supplierName | string Name of the company supplying this product. |
surcharge | integer <int64> Credit card surcharge calculated for this booking. |
totalAmount | number <float> Total booking amount. |
totalCurrency | string Enum: "AED" "AFA" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BWP" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUP" "CVE" "CYP" "CZK" "DJF" "DKK" "DOP" "DZD" "ECS" "EEK" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHC" "GHS" "GIP" "GMD" "GNF" "GTQ" "GWP" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KIP" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MGF" "MKD" "MMK" "MNT" "MOP" "MRO" "MTL" "MUR" "MVR" "MWK" "MXN" "MYR" "MZM" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDD" "SEK" "SGD" "SHP" "SIT" "SKK" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMM" "TND" "TOP" "TRL" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYI" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XOF" "XPF" "YER" "YUM" "ZAR" "ZMK" "ZMW" "ZWD" Booking Currency. |
totalDue | integer <int64> Amount still due for this booking. |
totalPaid | integer <int64> Amount already paid. |
vouchers | Array of strings List of vouchers (Gift cards) that have been redeemed to pay for this booking. |
required | Array of objects (BookingResponseBookings) |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
A Rezdy originated reservation using manual payments
{- "orderNumber": "RHAUL5R",
- "status": "PROCESSING",
- "supplierName": "Sydney whale watching",
- "supplierAlias": "sydneywhalewatching",
- "resellerName": "Rezdy Agent",
- "resellerAlias": "rezdyagent",
- "resellerUser": {
- "firstName": "Sales",
- "lastName": "Person",
- "email": "sales1@test.com"
}, - "customer": {
- "firstName": "Dusan",
- "lastName": "Zahoransky",
- "name": "Dusan Zahoransky"
}, - "items": [
- {
- "productName": "Morning whale watching cruise",
- "productCode": "P12345",
- "externalProductCode": "MWWCRUISE",
- "startTime": "2016-10-02T13:00:00Z",
- "endTime": "2016-10-03T13:00:00Z",
- "startTimeLocal": "2016-10-03 00:00:00",
- "endTimeLocal": "2016-10-04 00:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 75,
- "value": 1
}, - {
- "optionLabel": "Child under 12",
- "optionPrice": 55,
- "value": 1
}
], - "totalQuantity": 2,
- "amount": 130,
- "extras": [
- {
- "name": "Hot breakfast",
- "price": 10,
- "extraPriceType": "QUANTITY",
- "quantity": 2
}
], - "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Dusan",
- "requiredPerParticipant": false,
- "requiredPerBooking": false
}, - {
- "label": "Last Name",
- "value": "Zahoransky",
- "requiredPerParticipant": false,
- "requiredPerBooking": false
}
]
}
], - "subtotal": 150,
- "pickupLocation": {
- "locationName": "Town hall Train Station",
- "address": "Town Hall Train Station, Sydney, New South Wales, Australia",
- "pickupTime": "2016-10-02 23:45:00",
- "pickupInstructions": "Meet outside the station\r\nPlease be at this location 15 minutes before pick up"
}
}
], - "totalAmount": 150,
- "totalCurrency": "AUD",
- "totalPaid": 0,
- "totalDue": 150,
- "dateCreated": "2016-09-28T06:40:03Z",
- "dateConfirmed": "2016-09-28T06:40:03Z",
- "datePaid": "2016-09-28T06:40:05Z",
- "dateReconciled": "2016-09-28T06:40:03Z",
- "comments": "",
- "internalNotes": "",
- "payments": [ ],
- "fields": [ ],
- "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "INTERNAL",
- "sourceChannel": "rezdyagent",
- "resellerComments": "",
- "resellerReference": "ABC123",
- "commission": 11.25,
- "paymentOption": "CREDITCARD"
}
Your system's reservation response with data to update
{- "bookings": [
- {
- "orderNumber": "MyOrderNumber1234",
- "fields": [
- {
- "label": "Barcode",
- "value": "ORDERBARCODE123"
}
], - "items": [
- {
- "participants": [
- {
- "fields": [
- {
- "label": "Barcode",
- "value": "PARTICIPANTBARCODE123"
}
]
}
], - "pickupLocation": {
- "locationName": "Central Station"
}
}
], - "comments": "Thank you for booking. Please call us to confirm the pickup and specify drop-off location on 012345679.",
- "resellerComments": "BookingReference: 123456789"
}
]
}
Request and (successful) response must contain exactly one Booking object in the Request body/Response envelope.
The order of the booking items and participants must be preserved between request and response.
You can either use the Rezdy generated orderNumber from the request in the format R12345, or you can generate you own and return it in the response, Rezdy will then use your order number to store the booking internally and use your orderNumber for any future requests, including confirmation and cancellation call.
If you use your own orderNumber, it must be unique for each booking and a maximum of 36 characters long.
Rezdy booking software supports multiple barcode types "TEXT", "QR_CODE", "CODE_39", "CODE_128", "EAN_8", "EAN_13", "ITF"
. Rezdy stores the barcode values retrieved from your reservation or booking call response.
For bookings originated by an OTA, the barcode value and type are propagated to the OTA if the OTA’s integration supports them. Rezdy renders barcodes based on the product’s barcodeType
if Rezdy issues the order confirmation e-mails.
Note: Rezdy supports rendering of different barcode types; however, QR_CODE is the default. If the supplier wishes to support a different type, set up a barcodeType
for the desired products as part of the Product Synchronisation step.
Per order barcode
Booking field labelled as "Barcode" under fields
is used to spsecify the order barcode. If you plan to use per order barcode, add a Barcode booking field as part of booking response as shown in Response samples.
If this booking field is not present, Rezdy will treat orderNumber
as the order barcode
Per participants barcodes
Booking field labelled as "Barcode" under participants fields
is used to specify per participants barcodes. If you plan to use per participant barcodes, add a Barcode booking field for each participant in a reservation or a booking response as shown in Response samples.
Note: per participant barcodes have to be manually set up per product in Rezdy UI. In Inventory -> Products -> Messages -> Notifications, check "Show a QR Code for each Participant" and select "Show a Rezdy generated QR Code for each Participant"
Note: If the Booking Software Partner is on OAuth2 authentication, Rezdy will omit apiKey in each request and instead pass a token under the Authorization header, e.g. Authorization: Bearer {token}
Let's consider a product with the following RezdyConnect settings:
"rezdyConnectSettings": {
"externalAvailabilityApi": "https://services.rezdy.com/rc-stubs/availability?apiKey=123",
"externalReservationApi": "https://services.rezdy.com/rc-stubs/reservation?apiKey=123",
"externalBookingApi": "https://services.rezdy.com/rc-stubs.com/booking?apiKey=123",
"externalCancellationApi": "https://services.rezdy.com/rc-stubs/cancellation?apiKey=123"
}
The endpoint URLs can be the same or different, configuration is up to you. For all three requests, Reservation, Booking, and Cancellation, the request data will be almost similar and Rezdy will always send a full booking object. The only difference among the calls is the HTTP method used for the request and booking status:
Reservation endpoint: HTTP POST, booking.status = "PROCESSING"
Booking endpoint: HTTP PUT, booking.status = "CONFIRMED"
Cancellation endpoint: HTTP DELETE, booking.status = "CANCELLED" or "ABANDONED_CART"
In general, there should not be a business error returned from a confirmation call, all validation should ideally be done during reservation. In a rare case when a reservation can't be confirmed, return a status "CANCELLED", "ABANDONED_CART" or an error response.
A successful response order status may be omitted or "CONFIRMED". We do not recommend using any other status, such as "PENDING_SUPPLIER", unless previously communicated with us. Other status may not be supported by certain resellers and can cause a booking status discrepancy.
An example of a Booking request made by Rezdy:
PUT: https://services.rezdy.com/rc-stubs/booking?apiKey=ABC123456
apiKey | string API Key for a RezdyConnect product. It is recommended to specify an API Key as a query parameter of product RC endpoints. Rezdy will preserve the query parameter when making a call to your endpoint, so you can verify that the call has originated in Rezdy. |
comments | string Special requirements entered by the customer. Visible to both customer and supplier. |
commission | integer <int64> Calculated commission that the agent should receive for this booking. |
coupon | string Promo code that has been applied to this booking. |
object (BookingRequestCreatedBy) User who created this Booking. | |
object (BookingRequestCreditCard) Add a credit card payment to a booking. | |
required | object (BookingRequestCustomer) Customer details. |
dateConfirmed | string Date this booking was confirmed. |
dateCreated | string Date this booking was created. |
datePaid | string Date this booking was fully paid. |
dateReconciled | string Date this booking was reconciled with the agent. |
dateUpdated | string Date this booking was last updated. |
Array of objects (BookingRequestFields) List of custom fields that are required "once per booking" by all the products in this booking. | |
internalNotes | string Comments only visible internally by the supplier. |
required | Array of objects (BookingRequestItems) Items in this booking. RezdyConnect currently supports only a single item per booking. A BookingItem is a product with a set of quantities and participant details. |
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by Rezdy. |
paymentOption | string Enum: "ALIPAY" "BANKTRANSFER" "CASH" "CREDITCARD" "EXTERNAL" "INVOICE" "PAYPAL" Payment option selected by the customer when making an online booking. |
Array of objects (BookingRequestPayments) List of payments recorded for this booking. | |
resellerAlias | string Alias of the agent company attached to this booking. |
resellerComments | string Comments only visible by the agent and the supplier. This should be used by the agent to send voucher numbers./redemption codes to suppliers. |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking. |
resellerName | string Name of the agent company attached to this booking. |
resellerReference | string External reseller reference, can be used to pass internal booking number. This reference will be shown to a supplier,. also it will appear on reports and can be used to filter orders. |
resellerSource | string Enum: "API" "INTERNAL" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "ONLINE" Source of this booking viewed from the agent. |
object (BookingRequestResellerUser) Name of the agent user attached to this booking. | |
sendNotifications | boolean Flag to control if a booking confirmation email should be send to the customer after this booking is created.<br./ > This will also send other types of customer notifications when setup by the supplier (I.e. SMS, Gift cards). |
source | string Enum: "API" "INTERNAL" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "ONLINE" Source of this booking viewed from the supplier. |
sourceChannel | string Agent code defined by the supplier. |
sourceReferrer | string Referrer code. |
status | string Enum: "ABANDONED_CART" "CANCELLED" "CONFIRMED" "NEW" "ON_HOLD" "PENDING_CUSTOMER" "PENDING_SUPPLIER" "PROCESSING" Status of this booking. |
supplierAlias | string Alias of the company supplying this product. |
supplierId | integer <int64> Rezdy internal ID of the company supplying this product. |
supplierName | string Name of the company supplying this product. |
surcharge | integer <int64> Credit card surcharge calculated for this booking. |
totalAmount | number <float> Total booking amount. |
totalCurrency | string Enum: "AED" "AFA" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BWP" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUP" "CVE" "CYP" "CZK" "DJF" "DKK" "DOP" "DZD" "ECS" "EEK" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHC" "GHS" "GIP" "GMD" "GNF" "GTQ" "GWP" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KIP" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MGF" "MKD" "MMK" "MNT" "MOP" "MRO" "MTL" "MUR" "MVR" "MWK" "MXN" "MYR" "MZM" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDD" "SEK" "SGD" "SHP" "SIT" "SKK" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMM" "TND" "TOP" "TRL" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYI" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XOF" "XPF" "YER" "YUM" "ZAR" "ZMK" "ZMW" "ZWD" Booking Currency. |
totalDue | integer <int64> Amount still due for this booking. |
totalPaid | integer <int64> Amount already paid. |
vouchers | Array of strings List of vouchers (Gift cards) that have been redeemed to pay for this booking. |
required | Array of objects (BookingResponseBookings) |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
A Rezdy originated booking using manual payments
{- "orderNumber": "RHAUL5R",
- "status": "CONFIRMED",
- "supplierName": "Sydney whale watching",
- "supplierAlias": "sydneywhalewatching",
- "resellerName": "Rezdy Agent",
- "resellerAlias": "rezdyagent",
- "resellerUser": {
- "firstName": "Sales",
- "lastName": "Person",
- "email": "sales1@test.com"
}, - "customer": {
- "firstName": "Dusan",
- "lastName": "Zahoransky",
- "name": "Dusan Zahoransky"
}, - "items": [
- {
- "productName": "Morning whale watching cruise",
- "productCode": "P12345",
- "externalProductCode": "MWWCRUISE",
- "startTime": "2016-10-02T13:00:00Z",
- "endTime": "2016-10-03T13:00:00Z",
- "startTimeLocal": "2016-10-03 00:00:00",
- "endTimeLocal": "2016-10-04 00:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 75,
- "value": 1
}, - {
- "optionLabel": "Child under 12",
- "optionPrice": 55,
- "value": 1
}
], - "totalQuantity": 2,
- "amount": 130,
- "extras": [
- {
- "name": "Hot breakfast",
- "price": 10,
- "extraPriceType": "QUANTITY",
- "quantity": 2
}
], - "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Dusan",
- "requiredPerParticipant": false,
- "requiredPerBooking": false
}, - {
- "label": "Last Name",
- "value": "Zahoransky",
- "requiredPerParticipant": false,
- "requiredPerBooking": false
}
]
}
], - "subtotal": 150,
- "pickupLocation": {
- "locationName": "Town hall Train Station",
- "address": "Town Hall Train Station, Sydney, New South Wales, Australia",
- "pickupTime": "2016-10-02 23:45:00",
- "pickupInstructions": "Meet outside the station\r\nPlease be at this location 15 minutes before pick up"
}
}
], - "totalAmount": 150,
- "totalCurrency": "AUD",
- "totalPaid": 150,
- "totalDue": 0,
- "dateCreated": "2016-09-28T06:40:03Z",
- "dateConfirmed": "2016-09-28T06:40:03Z",
- "datePaid": "2016-09-28T06:40:05Z",
- "dateReconciled": "2016-09-28T06:40:03Z",
- "comments": "",
- "internalNotes": "",
- "payments": [
- {
- "type": "CREDITCARD",
- "amount": 150,
- "currency": "AUD",
- "date": "2016-09-28T06:40:05Z",
- "label": "Payment proceed at agent side"
}
], - "fields": [ ],
- "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "INTERNAL",
- "sourceChannel": "rezdyagent",
- "resellerComments": "",
- "commission": 11.25,
- "paymentOption": "CREDITCARD",
- "resellerReference": "ABC123"
}
Your system's booking response with data to update
{- "bookings": [
- {
- "orderNumber": "MyOrderNumber1490069083572",
- "fields": [
- {
- "label": "Barcode",
- "value": "ORDERBARCODE123"
}
], - "items": [
- {
- "participants": [
- {
- "fields": [
- {
- "label": "Barcode",
- "value": "PARTICIPANTBARCODE123"
}
]
}
], - "pickupLocation": {
- "locationName": "Central Station"
}
}
], - "comments": "Thank you for booking. Please call us to confirm the pickup and specify drop-off location on 012345679.",
- "resellerComments": "BookingReference: 123456789"
}
]
}
Let's consider a product with the following RezdyConnect settings:
"rezdyConnectSettings": {
"externalAvailabilityApi": "https://rc-stubs.rezdy.com/availability?apiKey=123",
"externalReservationApi": "https://rc-stubs.rezdy.com/reservation?apiKey=123",
"externalBookingApi": "https://rc-stubs.rezdy.com/booking?apiKey=123",
"externalCancellationApi": "https://rc-stubs.rezdy.com/cancellation?apiKey=123"
}
The endpoint URLs can be the same or different, configuration is up to you. For all three requests, Reservation, Booking and Cancellation, the request data will be almost similar, and Rezdy will always send a full booking object. The only difference among the calls is the HTTP method used for the request and booking status:
Reservation endpoint: HTTP POST, booking.status = "PROCESSING"
Booking endpoint: HTTP PUT, booking.status = "CONFIRMED"
Cancellation endpoint: HTTP PUT, booking.status = "CANCELLED" or "ABANDONED_CART"
There are multiple booking flow scenarios which could trigger a cancellation endpoint call:
A confirmed booking has been cancelled. The booking status will be set as CANCELLED.
After a reservation has been crated, a booking confirmation failed. The booking status will be set as CANCELLED. Use it to release any availability held by the reservation.
After the Reservation holding time period is over, if a reservation was not confirmed. The booking status will be set as ABANDONED_CART. Use it to release any availability held by the reservation.
An example of an URL of a Cancellation request made by Rezdy:
PUT: https://rc-stubs.rezdy.com/cancellation?apiKey=ABC123456
Note: If the Booking Software Partner is on OAuth2 authentication, Rezdy will omit apiKey in each request and instead pass a token under the Authorization header e.g. Authorization: Bearer {token}
apiKey | string API Key for a RezdyConnect product. It is recommended to specify an API Key as a query parameter of product RC endpoints. Rezdy will preserve the query parameter when making a call to your endpoint, so you can verify that the call has originated in Rezdy. |
comments | string Special requirements entered by the customer. Visible to both customer and supplier. |
commission | integer <int64> Calculated commission that the agent should receive for this booking. |
coupon | string Promo code that has been applied to this booking. |
object (BookingRequestCreatedBy) User who created this Booking. | |
object (BookingRequestCreditCard) Add a credit card payment to a booking. | |
required | object (BookingRequestCustomer) Customer details. |
dateConfirmed | string Date this booking was confirmed. |
dateCreated | string Date this booking was created. |
datePaid | string Date this booking was fully paid. |
dateReconciled | string Date this booking was reconciled with the agent. |
dateUpdated | string Date this booking was last updated. |
Array of objects (BookingRequestFields) List of custom fields that are required "once per booking" by all the products in this booking. | |
internalNotes | string Comments only visible internally by the supplier. |
required | Array of objects (BookingRequestItems) Items in this booking. RezdyConnect currently supports only a single item per booking. A BookingItem is a product with a set of quantities and participant details. |
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by Rezdy. |
paymentOption | string Enum: "ALIPAY" "BANKTRANSFER" "CASH" "CREDITCARD" "EXTERNAL" "INVOICE" "PAYPAL" Payment option selected by the customer when making an online booking. |
Array of objects (BookingRequestPayments) List of payments recorded for this booking. | |
resellerAlias | string Alias of the agent company attached to this booking. |
resellerComments | string Comments only visible by the agent and the supplier. This should be used by the agent to send voucher numbers./redemption codes to suppliers. |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking. |
resellerName | string Name of the agent company attached to this booking. |
resellerReference | string External reseller reference, can be used to pass internal booking number. This reference will be shown to a supplier,. also it will appear on reports and can be used to filter orders. |
resellerSource | string Enum: "API" "INTERNAL" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "ONLINE" Source of this booking viewed from the agent. |
object (BookingRequestResellerUser) Name of the agent user attached to this booking. | |
sendNotifications | boolean Flag to control if a booking confirmation email should be send to the customer after this booking is created.<br./ > This will also send other types of customer notifications when setup by the supplier (I.e. SMS, Gift cards). |
source | string Enum: "API" "INTERNAL" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "ONLINE" Source of this booking viewed from the supplier. |
sourceChannel | string Agent code defined by the supplier. |
sourceReferrer | string Referrer code. |
status | string Enum: "ABANDONED_CART" "CANCELLED" "CONFIRMED" "NEW" "ON_HOLD" "PENDING_CUSTOMER" "PENDING_SUPPLIER" "PROCESSING" Status of this booking. |
supplierAlias | string Alias of the company supplying this product. |
supplierId | integer <int64> Rezdy internal ID of the company supplying this product. |
supplierName | string Name of the company supplying this product. |
surcharge | integer <int64> Credit card surcharge calculated for this booking. |
totalAmount | integer <int64> Total booking amount. |
totalCurrency | string Enum: "AED" "AFA" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AUD" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BRL" "BSD" "BWP" "BYR" "BZD" "CAD" "CDF" "CHF" "CLP" "CNY" "COP" "CRC" "CUP" "CVE" "CYP" "CZK" "DJF" "DKK" "DOP" "DZD" "ECS" "EEK" "EGP" "ERN" "ETB" "EUR" "FJD" "FKP" "GBP" "GEL" "GGP" "GHC" "GHS" "GIP" "GMD" "GNF" "GTQ" "GWP" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "IDR" "ILS" "IMP" "INR" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KIP" "KMF" "KPW" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MGF" "MKD" "MMK" "MNT" "MOP" "MRO" "MTL" "MUR" "MVR" "MWK" "MXN" "MYR" "MZM" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "NZD" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "QAR" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDD" "SEK" "SGD" "SHP" "SIT" "SKK" "SLL" "SOS" "SRD" "STD" "SVC" "SYP" "SZL" "THB" "TJS" "TMM" "TND" "TOP" "TRL" "TRY" "TTD" "TVD" "TWD" "TZS" "UAH" "UGX" "USD" "UYI" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XOF" "XPF" "YER" "YUM" "ZAR" "ZMK" "ZMW" "ZWD" Booking Currency. |
totalDue | integer <int64> Amount still due for this booking. |
totalPaid | integer <int64> Amount already paid. |
vouchers | Array of strings List of vouchers (Gift cards) that have been redeemed to pay for this booking. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
A cancellation request made by Rezdy
{- "orderNumber": "RHAUL5R",
- "status": "CANCELLED",
- "supplierName": "Sydney whale watching",
- "supplierAlias": "sydneywhalewatching",
- "resellerName": "Rezdy Agent",
- "resellerAlias": "rezdyagent",
- "resellerUser": {
- "firstName": "Sales",
- "lastName": "Person",
- "email": "sales1@test.com"
}, - "customer": {
- "firstName": "Dusan",
- "lastName": "Zahoransky",
- "name": "Dusan Zahoransky"
}, - "items": [
- {
- "productName": "Morning whale watching cruise",
- "productCode": "P12345",
- "externalProductCode": "MWWCRUISE",
- "startTime": "2016-10-02T13:00:00Z",
- "endTime": "2016-10-03T13:00:00Z",
- "startTimeLocal": "2016-10-03 00:00:00",
- "endTimeLocal": "2016-10-04 00:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 75,
- "value": 1
}, - {
- "optionLabel": "Child under 12",
- "optionPrice": 55,
- "value": 1
}
], - "totalQuantity": 2,
- "amount": 130,
- "extras": [
- {
- "name": "Hot breakfast",
- "price": 10,
- "extraPriceType": "QUANTITY",
- "quantity": 2
}
], - "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Dusan",
- "requiredPerParticipant": false,
- "requiredPerBooking": false
}, - {
- "label": "Last Name",
- "value": "Zahoransky",
- "requiredPerParticipant": false,
- "requiredPerBooking": false
}
]
}
], - "subtotal": 150,
- "pickupLocation": {
- "locationName": "Town hall Train Station",
- "address": "Town Hall Train Station, Sydney, New South Wales, Australia",
- "pickupTime": "2016-10-02 23:45:00",
- "pickupInstructions": "Meet outside the station\r\nPlease be at this location 15 minutes before pick up"
}
}
], - "totalAmount": 150,
- "totalCurrency": "AUD",
- "totalPaid": 150,
- "totalDue": 0,
- "dateCreated": "2016-09-28T06:40:03Z",
- "dateConfirmed": "2016-09-28T06:40:03Z",
- "datePaid": "2016-09-28T06:40:05Z",
- "dateReconciled": "2016-09-28T06:40:03Z",
- "comments": "",
- "internalNotes": "",
- "payments": [
- {
- "type": "CREDITCARD",
- "amount": 150,
- "currency": "AUD",
- "date": "2016-09-28T06:40:05Z",
- "label": "Payment proceed at agent side"
}
], - "fields": [ ],
- "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "INTERNAL",
- "sourceChannel": "rezdyagent",
- "resellerComments": "",
- "commission": 11.25,
- "paymentOption": "CREDITCARD",
- "resellerReference": "ABC123"
}
Your system's cancellation response
{ }
With product update triggers, product data inconsistencies can be eliminated, which helps ensure successful bookings. The need for users to update products manually in Rezdy’s Channel Manager interface may also be eliminated.
Use these notifications to trigger a product update refresh from Rezdy. A successful call will queue up an update event to be processed immediately unless delayed by another in-progress refresh on the supplier’s account.
Upon the event processing, Rezdy will call the product endpoint to get the product content from your system and update the mapped product on Rezdy. The call is without any request body.
The request’s product code will be validated against the Supplier’s existing product list in Rezdy. If the product code provided does not exist in any products, no action will be taken.
There is a hit rate limit of 100 requests per minute applied globally for an API key.
Implement product update notifications along with automated product imports. Include only the feature flags that correspond to the product options you support.
Choose to trigger update notifications for any product field change, or only for key updates that could cause bookings to fail, such as price and price label changes.
apiKey required | string Rezdy's API key. This key has been generated upon RezdyConnect activation. If you do not have the Rezdy's API key yet, send us an e-mail to api-support@rezdy.com including your company name or alias. |
externalProductCode | string Product code stored in the external system |
object (ProductUpdateRequestImportFeatures) | |
productCode | string Rezdy product code |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
Product update refresh request
{- "externalProductCode": "MWWCRUISE",
- "productCode": "P12345",
- "importFeatures": {
- "description": true,
- "price": true,
- "images": true,
- "extras": true,
- "bookingInfo": true,
- "pickups": true
}
}
Successful response - Rezdy received succesfully product update notification
null
By employing availability update triggers, availability-related booking errors can be minimized, maximizing the number of successful bookings. Availability updates allow the supplier’s booking system to notify Rezdy when a change in event availability has occurred.
For each notification sent, Rezdy will queue an update event. The event is typically processed immediately unless blocked by another in-progress refresh on the supplier’s account. Upon the event processing, Rezdy will call the availability endpoint to retrieve the availability content and update the mapped availability on Rezdy.
There is a hit rate limit of 100 requests per minute applied globally for an API key.
While availability update notifications can be sent for every change, we recommend using one or both of the following strategies to minimize traffic and avoid a negative impact on your API performance:
Threshold: consider applying a threshold on when to begin triggering availability update notifications. Rather than sending a notification for every availability change, wait until total availability drops below a specific threshold (percentage or quantity), then start sending real-time notifications for each change. For example, do not trigger notifications until availability decreases to 20 remaining seats, then trigger an update for each availability change thereafter. Make sure to send a trigger when availability reaches zero.
Delay and group: consider applying a delay of 5 seconds (or longer) and group individual datetimes into a range. For example: if availability has changed for each of the next 365 days, rather than sending 365+ individual notifications, group the requests with a startDateTime and endDateTime.
apiKey required | string Rezdy's API key. This key has been generated upon RezdyConnect activation. If you do not have the Rezdy's API key yet, send us an e-mail to api-support@rezdy.com including your company name or alias. |
externalProductCode | string Product code stored in the external system |
from | string Updates all sessions with start time starting at or after this datetime. For a single session refresh, leave the |
fromLocal | string Updates all sessions with start time starting at or after this datetime. For a single session refresh, leave the |
productCode | string Rezdy product code |
to | string Updates all sessions with start time in UTC timezone starting before or at this datetime. For a single session refresh, leave this parameter empty or set it to the same datetime as |
toLocal | string Updates all sessions with start time starting before or at this datetime. For a single session refresh, leave this parameter empty or set it to the same datetime as |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
object (RequestStatus) Request processing status. |
Update a single session starting at 2019-05-29 12:00:00
{- "fromLocal": "2019-05-29 12:00:00",
- "externalProductCode": "MWWCRUISE"
}
Successful response - Rezdy received succesfully availability update notification
""