RezdyConnect

Download OpenAPI specification:Download

Introduction

What is RezdyConnect (RC)

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.

When to use RezdyConnect?

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 APIs

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.

RezdyConnect specification

Rezdy Webhooks

Webhooks allow 3rd party applications to be notified or updated when certain events happen on Rezdy, by sending data to configured URLs.

Webhooks specification

Overview

Supported features

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

Resources

Interested in learning more about RezdyConnect? Please contact us at

cmsales@rezdy.com

to discuss the connectivity options for ticketing systems and suppliers.

Developing your integration to RezdyConnect now? Email us at

partnerintegrations@rezdy.com

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:

api-support@rezdy.com

Requirements & SLAs

Compliance

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

SLAs

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

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.

    • Typically, any booking software integration is considered many-to-one if it will service multiple suppliers, even when the connection is deployed independently for each supplier.
  • One-to-one - A single supplier’s custom solution integrated into RezdyConnect for access to Rezdy Channel Manager.

    • If a single supplier connects many sites or uses multiple accounts in Rezdy Channel Manager, it may best be considered as a many-to-one connection.

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

Getting started

Integration Project

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

    • Access to Rezdy’s staging environment is provided after the kickoff meeting
  • RezdyConnect Settings Configuration

  • Develop to RezdyConnect API

  • Certification

  • Supplier Piloting

  • Go Live

Integration Steps

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.
  • Availability - Enables Rezdy to load availability from the supplier's system into Rezdy
  • Reservation - Reserve availability by creating order. Note: Required by many Agents/OTAs
  • Confirmation - Confirm Order
  • Cancellation - Cancel Order
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.
  • Products
  • Availability

Configure Security

Authentication is required for all interactions between the Booking Software partner and Rezdy. Rezdy supports two types of authentication:

  1. API Key - Query parameter based authentication

  2. OAuth2 - Token based authentication sent under the Authorization header

API Key

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

OAuth2

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

  • Using POST (application/json)

https://{the supplier's_token_endpoint}

Content-Type: application/json

{
    "client_id": "123",
    "client_secret": "secret123",
    "grant_type": "client_credentials"
}
  • Using POST_X_WWW_FORM_URLENCODED (application/x-www-form-urlencoded)

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.

Automate Supplier Account Activation (Booking Software Systems)

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]

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

    • Any parameter prefixed as rc_[parameterName] will be stored on Rezdy and used with every RezdyConnect call where it will be appended to the URL as a query parameter.
  • custom integration parameters

    • Please let Rezdy know if the supplier needs any additional parameters specific for the supplier's RC integration that would not be a query parameter. This information will be stored in supplier's RC (RezdyConnect) integration settings and used based on the integration implementation. E.g. an HTTP header with a specific value per supplier, username and password for basic Authorization, part of the endpoints URL is different for each supplier. For now we only support apiKey as auth method, please contact us if the supplier needs something different.

Parameter Encryption

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.

Examples

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&currency=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&currency=AUD&partnerSource=PARTNERSOURCECODE&rc_clientId=123&rc_clientSecret=1234&rc_tokenEndpoint=https://tokenendpoint.com&rc_oAuthHttpMethod=POST_X_WWW_FORM_URLENCODED

Configure RezdyConnect

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.

General settings

Setting Format Default Description
Product endpoint Absolute URL - Product import endpoint, if automated product setup is supported

Availability batch refresh settings

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.

Booking flow settings

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 e-mail 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

Oauth2 settings

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

Product Import

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

    • Synchronise products endpoint

    • Use Product Import screen - https://rc-onboarding.rezdy.com/product-import?companyId=[the supplier's_rezdy_company_id]

  • 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

Product import screen

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.

Product import screen

Manual products setup

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.

Using Rezdy UI

Product's RezdyConnect settings

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.

Scheduling modes (tickets date/times)

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

RezdyConnect booking process

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:

  1. Rezdy returns cached sessions to the agent/OTA

  2. The agent/OTA indicates the session selected by the consumer

  3. Rezdy calls the product's Availability endpoint to refresh the session availability and pricing

  4. If there are seats available, agent/OTA can proceed with the booking

  5. Booking is created on Rezdy

  6. Rezdy calls the product's Booking Reservation Endpoint

  7. 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.

  8. The customer's payment is processed

  9. If any error occurs, the booking will be deleted and Booking Cancellation Endpoint will be called

  10. 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

RezdyConnect booking strategies

Implement RezdyConnect endpoints

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.

Product code mapping

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.

Events triggering availability endpoint calls

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:

  1. Daily batch update - load the next 6+ months of availability for each product in monthly intervals.

  2. 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).

  3. 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

Daily batch update availability calls

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.

Response

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

Error codes

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:

"requestStatus": {
  "error": {
   "errorCode" : "RC_INVALID_DATA",
   "errorMessage" : "Invalid data provided",
   "fields" : [
    {
        "label" : "Email",
        "reason" : "Invalid Reseller Email"
    }
    ]
  }
}
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 :

"requestStatus": {
  "error": {
   "errorCode" : "RC_NO_AVAILABILITY",
   "errorMessage" : "No of tickets requested is more than the available seats present",
   "seatsAvailable" : 10
  }
}
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:

"requestStatus": {
  "error": {
   "errorCode" : "RC_AUTH_ERROR",
   "errorMessage" : "Missing Authentication headers"
  }
}
RC_ENDPOINT_UNAVAILABLE Yes 503 Temporal error. Endpoint is currently not available

Example :

"requestStatus": {
  "error": {
   "errorCode" : "RC_ENDPOINT_UNAVAILABLE",
   "errorMessage" : "Booking Endpoint can not process the request at the moment"
  }
}
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 :

"requestStatus": {
  "error": {
   "errorCode" : "RC_MINIMUM_QUANTITY_REQUIRED",
   "errorMessage" : "Booking of product XYZ requires at least 3 participants.",
   "quantityRequiredMin" : 3
  }
}
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 :

"requestStatus": {
  "error": {
   "errorCode" : "RC_MAXIMUM_QUANTITY_REACHED",
   "errorMessage" : "Booking of product XYZ reached beyond the limit of 10 participants.",
   "quantityRequiredMax" : 10
  }
}
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:

"requestStatus": {
  "error": {
   "errorCode" : "RC_INVALID_ORDER",
   "errorMessage" : "Order with reservation reference XYZ does not exist"
  }
}
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 :

"requestStatus": {
  "error": {
   "errorCode" : "RC_INVALID_PRODUCT",
   "errorMessage" : "Product XYZ does not exist in the system"
  }
}
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 :

"requestStatus": {
  "error": {
   "errorCode" : "RC_INVALID_PRICE_OPTION",
   "errorMessage" : "Invalid price options, product XYZ does not have provided price options.",
   "priceOptions" : [
    {
        "label" : "Student"
    },
    {
        "label" : "Group 1-10",
        "min" : 1,
        "max" : 10
    }
    ]
  }
}
RC_MAX_RATE_LIMIT_REACHED No 429 Too many requests sent in a particular interval of time. Please retry later.

Example :

"requestStatus": {
  "error": {
   "errorCode" : "RC_MAX_RATE_LIMIT_REACHED",
   "errorMessage" : "Too many requests sent in a particular interval of time.",
   "limit" : 100
  }
}
RC_INTERNAL_ERROR Yes 500 Internal error whilst processing the request where none of the above scenarios applies

Example :

"requestStatus": {
  "error": {
   "errorCode" : "RC_INTERNAL_ERROR",
   "errorMessage" : "Connection timeout while performing the request"
    }
}

Real time Sync

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.

Change log

Released changes:

2023-11-07

  • Product import supports importing booking URL. It is documented under the product endpoint, see a bookingUrl field.

2023-02-01

  • Added new RezdyConnect codes along with more detailed description of each by providing examples.

2021-11-11

  • Product import supports importing taxes and fees. The taxes and fees model is documented under the product endpoint, see a taxes field.

2021-09-27

  • Added more detailed description of productType, bookingMode, confirmMode, extraPriceType fields.

2021-09-27

  • Removed OCTo related sections from this specification

2020-11-18

2020-09-24

2020-08-31

2020-08-24

2019-12-25

2019-12-13

  • Added support for OAuth2 authentication

  • Added a section for automated account activation, which is used by Booking software partner integrations

2019-06-28

2019-06-20

Product

Synchronise products

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.

Pagination

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:

  1. Once you do an initial import of products on Rezdy, you can create the mapping on your end using Rezdy generated productCodes.

  2. Use the internalCode field to specify your product identifier. The field will then be sent with every RezdyConnect request as the externalProductCode query parameter.

List of all available products

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

Selected products only

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}

Product scheduling

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:

Start time with limited availability

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:

product endpoint response:

"bookingMode": "INVENTORY",

In this case bookingMode could be omitted as it's a default value

Start time with unlimited availability

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:

  1. For a product that can be booked only for specific dates or days of the week, the availability is controlled by sessions on a specific date. Availability will have a similar product endpoint payload as above, but the availability endpoint for this product should return sessions with 999 seats or above.

Product endpoint response:

"bookingMode": "INVENTORY",

Availability endpoint response:

"seats": 10,

"seatsAvailable": 5,
  1. A product that can be booked for any date. There is no need to support the availability endpoint for these products, Rezdy will not use it. Note: Suppliers can not block specific dates such as holidays or dates the activity may not be operating.

Product endpoint response:

"bookingMode": "DATE_ENQUIRY",

No start time with unlimited availability

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.

Product endpoint response:

"bookingMode": "NO_DATE",

Barcode types

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).

Product endpoint response:

"barcodeType": "CODE_128",

Barcode output types

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).

Product endpoint response:

"barcodeOutputType": "PARTICIPANT",

Booking Field Types

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.

Predefined booking fields

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

Boolean

This field must contain a boolean value. Accepted values are "true", "false" (case insensitive matching)

{
"label": "I agree to receive marketing emails",
"value": "true"
}

Date

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

Phone

This field must be in an international format +41 44 668 18 00, or E164 format +41446681800

{
"label": "Mobile",
"value": "+61484123456"
}

List

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:

Country

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

Gender

Valid genders that are accepted through our API are: MALE and FEMALE. (case insensitive matching)

{
"label": "Gender",
"value": "MALE"
}

Title

Valid titles that are accepted through our API are: MR, MS, MRS, MISS. (case insensitive matching)

{
"label": "Title",
"value": "MISS"
}

Custom booking fields

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"
   },  
query Parameters
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.

Responses

Response Schema: application/json
required
Array of objects (ProductsResponseProducts)
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response samples

Content type
application/json
Example

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": [],
      • "pickupLocations": [
        • {
          • "address": "123 Address Street",
          • "latitude": 26.820553,
          • "longitude": 30.802498,
          • "locationName": "New hotel",
          • "minutesPrior": 60,
          • "pickupInstructions": "Meet in front of hotel"
          }
        ],
      • "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
          }
        ],
      }
    ]
}

Availability

Synchronise availability

  • 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.
    

Dates format

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

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.

ISO8601 format

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}

A single session refresh example

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

One month refresh example

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
query Parameters
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.

Responses

Response Schema: application/json
object (RequestStatus)

Request processing status.

required
Array of objects (AvailabilityResponseSessions)
Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response samples

Content type
application/json
Example

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"
          }
        ]
      }
    ]
}

Reservation

Reservation

Requirements

  • 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.

Barcodes

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}

Example

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
query Parameters
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.

Request Body schema: application/json
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.

Responses

Response Schema: application/json
required
Array of objects (BookingResponseBookings)
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Request samples

Content type
application/json
Example

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

Response samples

Content type
application/json
Example

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"
      }
    ]
}

Booking

Booking confirmation

Requirements

  • 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.

Barcodes

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}

Example

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
query Parameters
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.

Request Body schema: application/json
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.

Responses

Response Schema: application/json
required
Array of objects (BookingResponseBookings)
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Request samples

Content type
application/json
Example

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

Response samples

Content type
application/json
Example

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"
      }
    ]
}

Cancellation

Booking cancellation

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}

query Parameters
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.

Request Body schema: application/json
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.

Responses

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Request samples

Content type
application/json

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

Response samples

Content type
application/json

Your system's cancellation response

{ }

Product update notification

Product update notification

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.

RECOMMENDATIONS

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.

query Parameters
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.

Request Body schema: application/json
externalProductCode
string

Product code stored in the external system

object (ProductUpdateRequestImportFeatures)
productCode
string

Rezdy product code

Responses

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Request samples

Content type
application/json
Example

Product update refresh request

{
  • "externalProductCode": "MWWCRUISE",
  • "productCode": "P12345",
  • "importFeatures": {
    • "description": true,
    • "price": true,
    • "images": true,
    • "extras": true,
    • "bookingInfo": true,
    • "pickups": true
    }
}

Response samples

Content type
application/json

Successful response - Rezdy received succesfully product update notification

null

Availability update notification

Availability update notification

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.

RECOMMENDATIONS

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.

query Parameters
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.

Request Body schema: application/json
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 to parameter empty or set it to the same datetime. The datetime in UTC timezone, ISO 8601 format. Either from, or fromLocal has to be specified.

fromLocal
string

Updates all sessions with start time starting at or after this datetime. For a single session refresh, leave the toLocal parameter empty or set it to the same datetime. The datetime is in a local time based on the timezone configure on your Rezdy profile, format is yyyy-MM-dd HH:mm:ss. Either from, or fromLocal has to be specified.

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 from. The datetime in UTC timezone, ISO 8601 format.

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 fromLocal. The datetime is in a local time based on the timezone configure on your Rezdy profile, format is yyyy-MM-dd HH:mm:ss.

Responses

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Response Schema: application/json
object (RequestStatus)

Request processing status.

Request samples

Content type
application/json
Example

Update a single session starting at 2019-05-29 12:00:00

{
  • "fromLocal": "2019-05-29 12:00:00",
  • "externalProductCode": "MWWCRUISE"
}

Response samples

Content type
application/json

Successful response - Rezdy received succesfully availability update notification

""