Download OpenAPI specification:Download
The Rezdy Supplier API allows querying availability, products, make and retrieve bookings, and much more for your own supplier account.
Since the API is based on REST principles, it's very easy to write and test applications. You can use your browser to access URLs, and you can use pretty much any HTTP client in any programming language to interact with the API. Features
APIs are designed for programmers, so if you don't speak any computer language, we have solutions that should be easier for you to use. Rezdy provides a range of plugins for you to integrate on your website, that don't involve using our API directly. To learn more, check the integration plugins available in your Rezdy account, or read this overview of our iframe plugins
If you'd like to build a new service around Rezdy's software, require additional APIs, or would like Rezdy to directly integrate with your company's software, get in touch with our team so we can review your project and discuss its feasibility.
Rezdy offers different API products for different types of businesses. Make sure to choose the right one for your needs.
Rezdy API for agents
REST API for Rezdy agents and OTAs (online travel agents), providing functionality to resell suppliers products, including pulling shared products, availability and pricing from Rezdy, and pushing bookings and cancellations to Rezdy.
Rezdy API for agents specification
Rezdy API for suppliers
REST API for suppliers using Rezdy Booking Software provides functionality to manage their Rezdy inventory and booking capabilities.
Rezdy API for suppliers specification
RezdyConnect (RC)
The RezdyConnect API powers the supply side of the Rezdy Channel Manager tool. The API is designed for suppliers using other ticketing systems, allowing them to import and resell their products through Rezdy’s connected channels. Rezdy pulls availability and pricing, and pushes bookings and cancellations to the supplier’s booking system.
Rezdy Webhooks
Webhooks allow 3rd party applications to be notified or updated when certain events happen on Rezdy, by sending data to configured URLs.
This specification is built upon OpenAPI Specification version 3.0.x.
The examples in the text as well as request and response payloads, use preset data in Rezdy staging environment, and demo accounts with special read-only API Keys:
API specification demo supplier
with API key 5f4b36ff169047a4a5682cba7e07fea4
API specification demo agent
with API key 69f708868ddc45eaa1f9b9fad1ddeba5
You can use the accounts to try any GET calls, however, POST, PUT and DELETE methods are blocked for this API key to preserve the data and will result in the following error
{
"requestStatus": {
"success": false,
"error": {
"errorCode": "6",
"errorMessage": "Client not authorised"
}
}
}
Rezdy API is versioned and you must include the version in the URL you're calling. Our API is actively updated within the same version, but these are non-breaking changes and therefore the version will not be updated. We will increase the version for any major breaking change.
Please check the changelog for details of changes.
We are currently on v1 of the Rezdy API. If, for example, you were accessing the Products endpoint, the URl should be structured as:
https://api.rezdy.com/v1/products
You can also use /latest/ to automatically use the latest available version:
https://api.rezdy.com/latest/products
We have Staging and Production environment. Use the Staging environment to test your integration to make sure it is ready before connecting to the Production environment. Calls to the Rezdy Staging environment include payment processing through payment gateways are done against third-party sandbox environments.
Production and Staging environments are currently completely disconnected, accounts and other data are not replicated, thus you need to create a new account and generate a new API key for each environment.
Environment | Application URL | API URL | API Documentation URL |
---|---|---|---|
Staging | https://app.rezdy-staging.com | https://api.rezdy-staging.com | https://developers.rezdy-staging.com |
Production | https://app.rezdy.com | https://api.rezdy.com | https://developers.rezdy.com |
We release new updates to the Staging environment approximately one week before they are released to production, so there may be differences. These differences will be represented in the documentation available for each environment as outlined above. Check the changelog for details.
For simple integrations, it is easier to test using the production environment, booking only Test products from our Rezdy Agent Certification
supplier.
On the Staging environment, you can activate our test supplier account with credit card number 4242424242424242 which will prevent the account from expiring due to the trial ending.
All requests must use HTTPS, the API is not available on non-SSL/TLS ports.
We do not allow Cross-Origin Resource Sharing (CORS), REST calls to Rezdy API should not be made directly from a browser.
All API calls require a valid API Key. It must be passed as a query parameter or HTTP header, with all requests, using the following format:
GET https://api.rezdy.com/v1/products?apiKey=XXXXXXXXXXXXXXXXXXXX
or
GET https://api.rezdy.com/v1/products
HTTP headers:
apiKey: XXXXXXXXXXXXXXXXXXXX
To obtain your API Key, please log in to your Rezdy Booking Software and send a request by going to the menu item Integrations > Rezdy API > Request API Key. If you do not see this menu item, please contact support@rezdy.com
Keep API key confidential and do not publish it to any publicly available repository in a version control system. Malicious bots are frequently scanning for such vulnerabilities.
The Rezdy API supports UTF-8 encoded JSON payload. You must include both Accept and Content-Type headers to your requests as follows:
Content-Type: application/json; charset=UTF-8
Accept: application/json
All responses will contain a "requestStatus" element. That element will tell you if your request was successful and may contain error or warning messages.
Successful request:
{
"requestStatus": {
"success": true,
"version": "v1"
}
}
Request with error:
{
"requestStatus": {
"success": false,
"error": {
"errorCode": "6",
"errorMessage": "Invalid API Key"
}
}
}
Requests that return multiple items are paginated to 100 items by default. You can control pagination by using the offset
(default:0
) and limit
(default: 100
) query parameters. The custom limit may not exceed 100, except for specific endpoints if mentioned in their description.
For example:
GET /products?offset=0&limit=100
GET /products?offset=100&limit=100
GET /products?offset=200&limit=100
There are 2 date formats in our API model.
The first one is ISO8601 format, and typically fields such as startTime, endTime, dateCreated, dateUpdated are formatted this way.
The other one is a supplier's localized date format, which is based on a supplier's timezone setup on Rezdy. Typically, used by fields startTimeLocal/endTimeLocal.
How to use them in API requests
These two types are mostly exposed in pairs in the payloads or query parameters as startTime & startTimeLocal or endTime & endTimeLocal. For better convenience, you can choose which format to use. General rules of thumb are:
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, as there is no need to do any timezone conversions when displaying data such as local tour start time to an end user.
If you use ISO8601 format, you have to convert times to the supplier’s timezone when you want to display dates and times for a tour. For example, if a supplier runs 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 in your API calls and they’re both valid and both represent the same timestamp.
You can retrieve the supplier’s timezone in GET /products
calls (Product.timezone
). Please be mindful of Daylight Savings Time when converting timestamps. You should always use the proper timezone (i.e. Australia/Sydney
) instead of the time offset (+10:00
) because the latter can vary during the year (i.e. Sydney is +10:00
in winter and +11:00
in summer)
API use is restricted to 100 calls per minute, per API Key. We may alter this limit based on usage patterns. If you reach your limit, you will receive an HTTP Status 406 response with message "Too Many Requests".
To provide the best experience to your customers and to avoid hitting the rate limits, you should implement some form of caching on your end rather than calling the Rezdy API for each request. For example, a typical browsing + booking process could follow this caching strategy:
Customer action on your website | Rezdy API Call | Caching recommendation |
---|---|---|
Browse product 1 | GET /products/{product1} | Cache for 24+ hours |
Check product 1 availability | GET /availability | Cache for 24 hours |
Browse product 2 | GET /products/{product2} | Cache for 24+ hours |
Check product 2 availability | GET /availability | Cache for 24 hours |
Add product 2 to shopping cart – Starts checkout | GET /availability | No Cache – confirms product is still available |
Completes checkout | POST /bookings | No Cache |
The following error codes can be returned in the requestStatus object
Error code Meaning | Details |
---|---|
1 UNKNOWN | Indicates an unknown error. |
2 NO_IMPLEMENTATION | Indicates that the target API has no implementation for the request. |
3 BIZ_RULE | Indicates that the message has passed a low-level validation check, but that the business rules for the request message were not met. |
4 AUTHENTICATION | Indicates that credentials are invalid |
5 AUTHENTICATION_TIMEOUT | Indicates that the security credentials in the message have expired |
6 AUTHORIZATION | Indicates that credentials are valid but not enough permissions to execute that call |
7 PROTOCOL_VIOLATION | Indicates that a request was sent within a message exchange that does not align to the message |
8 TRANSACTION_MODEL | Indicates that the target business system does not support the intended transaction-oriented operation |
9 AUTHENTICAL_MODEL | Indicates the type of authentication requested is not recognized |
10 MISSING_FIELD | Indicates that an element or attribute that is required in by the schema (or required by agreement between trading partners) is missing from the message |
11 AUTOMATED_PAYMENTS_PRICE_ TOO_LOW_TO_COVER_FEES |
Indicate that automated payment booking failed |
12 AUTOMATED_PAYMENTS_PRICE_ TOO_LOW_FOR_AGENT_COMMISSION |
Indicate that automated payment booking failed |
13 PAYMENT_CARD_TYPE_DECLINED | Indicate that the card type is invalid |
14 PAYMENT_CARD_TYPE_REJECTED | Indicate that the card type is invalid |
15 PAYMENT_ERROR | Indicate that payment information is invalid |
16 SINGLE_ORDER_LINE_ITEM_ ALLOWED |
Indicate that only a single item per order can be booked for this supplier |
17 PAYMENT_REQUIRED_SCA_ ACTION |
Indicates that the payment should be completed performing strong customer authentication (SCA) |
18 MINIMUM_QUANTITY_REQUIRED | Indicate that quantities are less than the minimal requirement |
19 MAXIMUM_QUANTITY_REACHED | Indicate that quantities are higher than the maximum requirement |
20 DOWNSTREAM_ERROR | Indicate downstream error |
21 NOT_ENOUGH_SEATS_AVAILABLE | Indicate that there are not enough seats available for this session |
22 SESSION_NOT_FOUND | indicate that session doesn't find in our system |
23 PRODUCT_NOT_FOUND | Indicate that product doesn't find in our system |
24 ORDER_NOT_FOUND | Indicate that order doesn't find in our system |
25 ORDER_LINE_ITEM_NOT_FOUND | Indicate that order line item doesn't find in our system |
26 MIN_BOOK_AHEAD_START_TIME | Indicate that the date of booking must be booked {n} duration before tour start |
27 MIN_BOOK_AHEAD_END_TIME | Indicate that the date of booking must be booked {n} duration before tour end |
28 INVALID_CUSTOMER_EMAIL | Indicate that the customer email address is not in a valid format |
29 BLOCKED_EMAIL | Indicate that the customer email address has been blocked |
30 DOWNSTREAM_TIMEOUT | Indicate that the source of the error is a timeout in communication with downstream services. You could retry this call later. |
31 INTERNAL_ERROR | Indicate that Rezdy failed to process a request because of an internal error |
32 INVALID_PRICE_OPTION | Indicate that the price option used for a booking does not exist on the product |
33 REZDYCONNECT_EXTERNAL_SYSTEM | Indicate that external RezdyConnect system did not return mandatory data to finish operation. |
34 OTHER_OPERATION_IN_PROGRESS | Indicate that currently there is a session update process running for received product code. You can retry this call shortly. |
API real-time and historical uptime/availability details are available here.
We use a highly available architecture and hosting resources with Amazon Web Services. Our standard releases are transparent, therefore causing no downtime, and are backwards-compatible unless it is a major version release (see versioning above). In case a maintenance period is required we will alert users via in-app messages and announcements on our support forum and our Rezdy Ops Twitter account.
Our API is in active development with regular new endpoints and features being added to support more use cases. There are, however, some current limitations:
Supplier (Tour Operator)
A business supplying products for resale to agents channels or Rezdy marketplace (B2B) or using Rezdy booking software to sell them to end customers (B2C).
A supplier can also act as an agent and resell other suppliers' products. In that case, refer to Rezdy API specification for Agents
Agent (Reseller)
A business reselling supplier products.
Product (Tour, Activity)
An experience that a supplier is selling on Rezdy.
Booking (Order)
Transaction of selling a product or multiple products belonging to the same Rezdy supplier. Booking and order might be used interchangeably, but refer to the same entity across the specification.
Booking item (Order item)
A booking consist of a single or multiple items. Each item is linked to a single product, a single or no session (depending on product booking mode), and can have different quantities and tour participants.
Reservation
An un-confirmed booking (A booking with orderStatus == PROCESSING
) that temporarily holds availability.
At the moment reservations are not available in agent API.
Session (Tour session)
A time slot when a product (tour or activity) is scheduled to run at. A session provides information such as start and end time, total capacity (seats
), remaining capacity (seatsAvailable
) and pricing (priceOptions
).
Customer
An entity representing information about an end customer who booked a product. A booking can have multiple items and each can have a list of participants based on the booked quantities, but only a single main customer per booking.
Participant
An entity representing information about additional tour participants. A booking item is associated with a list of participants.
The first participant always represents the main customer. For your convenience Rezdy automatically copies information from customer entity into the booking first participant in booking requests
Extra (Product extra)
An additional item or service that can be booked together with a product. Extras do not have their own availability.
Booking field
A booking questions or information provided during a booking process. Booking fields can be stored on order level (a booking field per booking) or participant level (a booking field per participant). Booking fields can be mandatory or optional and may require a certain format.
See Using Booking Fields for details.
Pickup
A list of pickup locations and additional pickup instructions that are associated with a product, that customers can choose from during booking.
See Providing customer with pickups for details.
Resource
An entity such as tour guide, car, boat, etc. that can be associated with sessions. A resource limits session availability and can be shared across multiple sessions.
Coupon (Voucher, Promocode)
A discount that suppliers can offer for customers to apply for their product bookings.
At the moment coupons are not available in agent API.
Manual payment
A booking payment that requires manual reconciliation between agent and supplier outside of Rezdy.
See Bookig workflow for details.
Automated payment
A full booking payment that is required at the time of booking, and is automatically split and paid to supplier and agent.
See Bookig workflow for details.
Marketplace
The two-sided B2B platform provided by Rezdy where suppliers and resellers can search, connect and trade with one another. Only marketplace rate products are available on Rezdy marketplace and only automated payments can be used for marketplace bookings.
Marketplace rate
Marketplace rate allows suppliers to select products available for Rezdy marketplace and set up their commission amount.
Negotiated rate
Negotiated rate allows agents and suppliers to agree on a specific commission amount to be used for selected products for their bookings.
Category
Product categorisation, which allows agents or suppliers to assign Rezdy products to logical groups.
Manifest
A functionality around tour participant manifest, such as check-in, no show flags.
You need to follow these steps to be able to use the Supplier API:
You have to request to obtain an initial API Key from our support team. Requests to generate an API key may take up to "48" hours to process. Once generated, the key will automatically appear on the Rezdy API page on the Integrations menu for immediate use. You can request your API key by logging into Rezdy and clicking:
A typical use case for supplier integration with Rezdy API, is to facilitate Rezdy API data to build a booking site for your Rezdy products. These examples show the API requests and responses for a typical booking flow. It helps you understand the process to replicate the Rezdy booking form through the API.
That typically consists of the following steps:
Note: You can also act as an agent and book products of other suppliers, however the payloads are slightly different, therefore in such case follow Rezdy API for agents specification.
Agents do not own any product. You must use the GET /products endpoint to load products that suppliers have shared. Product details include general pricing, description and photos. There are many attributes available on the service, allowing you to filter products by location, supplier, category, rate type, etc.
When a customer browses to a specific product page on your website, you should show the product details including general pricing, description and photos using GET /products call.
To optimise the performance it is better to call search products and cache the retrieved products for at least 24 hours, depending on how often you tend to update your products content. Any search filters functionality should be implemented client side.
Example request:
GET https://api.rezdy-staging.com/v1/products?apiKey=5f4b36ff169047a4a5682cba7e07fea4
Example response:
{
"requestStatus": {
"success": true,
"version": "v1"
},
"products": [
{
"productType": "ACTIVITY",
"name": "Double dive with sharks",
"shortDescription": "Double dive with grey nurse or leopard sharks, depending on the season.",
"description": "Double dive with grey nurse or leopard sharks, depending on the season. Boat dive with a snack provided during the break between the dives. The dive site is suitable for open water divers.",
"productCode": "PWQF1Y",
"internalCode": "DIVING",
"supplierId": 13398,
"supplierAlias": "apispecificationdemosupplierdonotedit",
"supplierName": "API specification demo supplier (DO NOT EDIT)",
"timezone": "Australia/Sydney",
"advertisedPrice": 200.0,
"priceOptions": [
{
"price": 250.0,
"label": "Adult",
"id": 929159,
"seatsUsed": 1,
"productCode": "PWQF1Y"
},
{
"price": 200.0,
"label": "Student",
"id": 929160,
"seatsUsed": 1,
"productCode": "PWQF1Y"
}
],
"currency": "AUD",
"unitLabel": "Participant",
"unitLabelPlural": "Participants",
"quantityRequired": true,
"quantityRequiredMin": 1,
"quantityRequiredMax": 50,
"images": [
{
"id": 22650,
"itemUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN8351.jpg",
"thumbnailUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN8351_tb.jpg",
"mediumSizeUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN8351_med.jpg",
"largeSizeUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN8351_lg.jpg"
},
{
"id": 22651,
"itemUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN8378.jpg",
"thumbnailUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN8378_tb.jpg",
"mediumSizeUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN8378_med.jpg",
"largeSizeUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN8378_lg.jpg"
},
{
"id": 22652,
"itemUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN1387.jpg",
"thumbnailUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN1387_tb.jpg",
"mediumSizeUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN1387_med.jpg",
"largeSizeUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN1387_lg.jpg"
},
{
"id": 22653,
"itemUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN1402.jpg",
"thumbnailUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN1402_tb.jpg",
"mediumSizeUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN1402_med.jpg",
"largeSizeUrl": "https://img.rezdy-staging.com/PRODUCT_IMAGE/13398/DSCN1402_lg.jpg"
}
],
"bookingMode": "INVENTORY",
"charter": false,
"terms": "",
"extras": [
{
"name": "Underwater camera rental",
"description": "An underwater camera rental for the dive. Choice of GoPro or Nikon Coolpix AW130. Select the number of cameras up to the number of participants, that you would like to rent for this booking.",
"price": 15.0,
"extraPriceType": "ANY"
}
],
"bookingFields": [
{
"label": "First Name",
"requiredPerParticipant": false,
"requiredPerBooking": true,
"visiblePerParticipant": true,
"visiblePerBooking": true,
"fieldType": "String"
},
{
"label": "Last Name",
"requiredPerParticipant": false,
"requiredPerBooking": true,
"visiblePerParticipant": true,
"visiblePerBooking": true,
"fieldType": "String"
},
{
"label": "Mobile",
"requiredPerParticipant": false,
"requiredPerBooking": true,
"visiblePerParticipant": false,
"visiblePerBooking": true,
"fieldType": "Phone"
},
{
"label": "Email",
"requiredPerParticipant": false,
"requiredPerBooking": true,
"visiblePerParticipant": false,
"visiblePerBooking": true,
"fieldType": "String"
},
{
"label": "Special Requirements",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": false,
"visiblePerBooking": true,
"fieldType": "String"
},
{
"label": "Certification level",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": true,
"visiblePerBooking": false,
"fieldType": "String"
},
{
"label": "Certification number",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": true,
"visiblePerBooking": false,
"fieldType": "String"
},
{
"label": "Certification agency",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": true,
"visiblePerBooking": false,
"listOptions": "PADI\r\nSSI\r\nSDI",
"fieldType": "List"
}
],
"latitude": -28.6113488,
"longitude": 153.629085,
"confirmMode": "AUTOCONFIRM",
"confirmModeMinParticipants": 0,
"commissionIncludesExtras": false,
"cancellationPolicyDays": 7,
"dateCreated": "2021-08-30T23:49:55Z",
"minimumNoticeMinutes": 1440,
"durationMinutes": 180,
"dateUpdated": "2021-09-13T04:13:35Z",
"pickupId": 475,
"locationAddress": {
"addressLine": "Julien rocks",
"postCode": "",
"city": "Byron Bay",
"state": "",
"countryCode": "au",
"latitude": -28.6113488,
"longitude": 153.629085
},
"languages": [
"en_au"
],
"tags": [
"TYPE:Activity"
],
"waitListingEnabled": false,
"isApiBookingSupported": true
}
]
}
The response includes a few important attributes that you will need to make a booking:
When a customer wants to check availability for a specific product, you can call the GET /availability endpoint to load availability.
Example Request
GET https://api.rezdy-staging.com/v1/availability?apiKey=5f4b36ff169047a4a5682cba7e07fea4&productCode=PWQF1Y&startTimeLocal=2025-10-01 00:00:00&endTimeLocal=2025-10-03 00:00:00
This loads all the available sessions for product with code PF6B25 for the whole month of November 2014 in the supplier’s local timezone.
It is possible to load availability for multiple products in a single request. Simply add multiple productCode attributes to the request:
GET https://api.rezdy-staging.com/v1/availability?apiKey=5f4b36ff169047a4a5682cba7e07fea4&productCode=P00TNX&productCode=PWQF1Y&startTimeLocal=2025-10-01 00:00:00&endTimeLocal=2025-10-03 00:00:00
We recommend using startTimeLocal and endTimeLocal attributes, instead of startTime and endTime. These older attributes required you to send the timezone as part of your request.
GET https://api.rezdy-staging.com/v1/availability?apiKey=5f4b36ff169047a4a5682cba7e07fea4&productCode=P00TNX&productCode=PWQF1Y&startTime=2025-10-01T00:00:00%2B11:00&endTime=2025-10-03T00:00:00%2B11:00
Example Response
{
"requestStatus": {
"success": true,
"version": "v1"
},
"sessions": [
{
"id": 2788078,
"productCode": "PWQF1Y",
"startTime": "2021-09-30T23:00:00Z",
"endTime": "2021-10-01T02:00:00Z",
"startTimeLocal": "2021-10-01 09:00:00",
"endTimeLocal": "2021-10-01 12:00:00",
"allDay": false,
"seats": 50,
"seatsAvailable": 48,
"priceOptions": [
{
"price": 250.0,
"label": "Adult",
"id": 929159,
"seatsUsed": 1,
"productCode": "PWQF1Y"
},
{
"price": 200.0,
"label": "Student",
"id": 929160,
"seatsUsed": 1,
"productCode": "PWQF1Y"
}
]
},
{
"id": 2788381,
"productCode": "PWQF1Y",
"startTime": "2021-10-01T23:00:00Z",
"endTime": "2021-10-02T02:00:00Z",
"startTimeLocal": "2021-10-02 09:00:00",
"endTimeLocal": "2021-10-02 12:00:00",
"allDay": false,
"seats": 50,
"seatsAvailable": 50,
"priceOptions": [
{
"price": 250.0,
"label": "Adult",
"id": 929159,
"seatsUsed": 1,
"productCode": "PWQF1Y"
},
{
"price": 200.0,
"label": "Student",
"id": 929160,
"seatsUsed": 1,
"productCode": "PWQF1Y"
}
]
}
]
}
Important information here is:
Now when you built and cached products and availability with price, the next step is a checkout flow.
When a customer selects a specific time and checks out, you should verify real-time availability of the chosen session. Similarly, as the step above, except startTimeLocal and endTimeLocal will be set as the customer's chosen time. In the example we assume customer selecting a tour starting at 9:00 am local time on the 1st of October.
GET https://api.rezdy-staging.com/v1/availability?apiKey=5f4b36ff169047a4a5682cba7e07fea4&productCode=PWQF1Y&startTimeLocal=2025-10-01 09:00:00&endTimeLocal=2025-10-01 09:00:00
If the seats are still available, you can create a booking in Rezdy by calling the POST /bookings endpoint.
The following request creates a simple booking for 1 Adult for the product we previously loaded. It’s a $250 booking for November 3rd at 9:00AM in Sydney, with a manually processed payment recorded. That means you charged the customer outside Rezdy, on your own website/gateway. You record that payment in the booking for a record keeping purpose only, but Rezdy will not process any payment in this case.
Example Request
POST https://api.rezdy-staging.com/v1/bookings?apiKey=5f4b36ff169047a4a5682cba7e07fea4
{
"customer": {
"firstName": "Rick",
"lastName": "Sanchez",
"phone": "+61484123456"
},
"items": [
{
"productCode": "PWQF1Y",
"startTimeLocal": "2025-10-01 09:00:00",
"quantities": [
{
"optionLabel": "Adult",
"value": 1
}
]
}
],
"payments": [
{
"amount": 250,
"type": "CASH",
"recipient": "SUPPLIER",
"label": "Paid in cash to API specification demo company"
}
]
}
PUT /bookings endpoint allows you to amend or provide additional information to an existing booking.
The example below updates the comments, customer pickup location and participant booking fields.
Example Request
PUT: https://api.rezdy-staging.com/v1/bookings/R0A1D6U?apiKey=5f4b36ff169047a4a5682cba7e07fea4
{
"comments": "Here come comments that are visible to you, but not to customers",
"orderNumber": "R0A1D6U",
"status": "CONFIRMED",
"supplierId": 13398,
"supplierName": "API specification demo supplier (DO NOT EDIT)",
"supplierAlias": "apispecificationdemosupplierdonotedit",
"customer": {
"id": 29857,
"firstName": "Rick",
"lastName": "Sanchez",
"name": "Rick Sanchez",
"phone": "+61484123456"
},
"items": [
{
"pickupLocation": {
"locationName": "Divers hotel"
},
"productName": "Double dive with sharks",
"productCode": "PWQF1Y",
"startTime": "2025-09-30T23:00:00Z",
"endTime": "2025-10-01T02:00:00Z",
"startTimeLocal": "2025-10-01 09:00:00",
"endTimeLocal": "2025-10-01 12:00:00",
"quantities": [
{
"optionLabel": "Adult",
"optionPrice": 250.0,
"value": 1
}
],
"totalQuantity": 1,
"amount": 250.0,
"extras": [],
"participants": [
{
"fields": [
{
"label": "First Name",
"value": "Rick"
},
{
"label": "Last Name",
"value": "Sanchez"
},
{
"label": "Certification level",
"value": "Open Water"
},
{
"label": "Certification number",
"value": "123456798"
},
{
"label": "Certification agency",
"value": "PADI"
}
]
}
],
"subtotal": 250.0
}
],
"totalAmount": 250.0,
"totalCurrency": "AUD",
"totalPaid": 250.0,
"totalDue": 0.0,
"dateCreated": "2021-09-17T01:03:34Z",
"dateConfirmed": "2021-09-17T01:03:34.298Z",
"datePaid": "2021-09-17T01:03:34.298Z",
"payments": [
{
"type": "CASH",
"amount": 250.0,
"currency": "AUD",
"date": "2021-09-17T01:03:34.303Z",
"label": "Paid in cash to API specification demo company",
"recipient": "SUPPLIER"
}
],
"fields": [
{
"label": "Barcode",
"value": "R0A1D6U"
}
],
"source": "API",
"vouchers": [],
"barcodeType": "QR_CODE"
}
To cancel a booking use DELETE /bookings endpoint as in example below with an empty request body.
Example Request
DELETE https://api.rezdy-staging.com/v1/bookings/R0A1D6U?apiKey=5f4b36ff169047a4a5682cba7e07fea4
Two steps booking flow is useful for minimising availability errors during a customer checkout, thereby achieving a better customer experience.
Typical flow with 2 steps booking process follow these steps:
PROCESSING
status) upon a customer cart checkout. This will create an order, which holds reserved product's session's availability for at least 60 minutes or until cancelled. CONFIRMED
). Alternatively, cancel the reservation to free the availability when checkout process was abandoned or failed. If it's not done manually, Rezdy will do so after 60 minutes.Example requests to do a 2 steps booking are similar to a standard create and update booking, the only difference is how we set a field status
Create a reservation - a booking in the PROCESSING
status:
POST https://api.rezdy.com/v1/bookings/?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{
"status": "PROCESSING",
"customer": {
...
}
Confirm a reservation - update the booking RKM1ULT
to CONFIRMED
status:
PUT https://api.rezdy.com/v1/bookings/RKM1ULT/?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{
"status": "CONFIRMED",
"customer": {
...
}
Note: If a product confirmMode
is not set as AUTOCONFIRM
the resulting order status might not be CONFIRMED
. An order can end up with a PENDING_SUPPLIER
status. Another case is, if the used payment option requires customer to process a payment in a third party provider, such as PayPal. In such case the status will be PENDING_CUSTOMER
Alternatively, to free up the reserved availability, update a booking RKM1ULT
to CANCELLED
or ABANDONED_CART
status, the later option will cause the order to be hidden from UI screens:
PUT https://api.rezdy.com/v1/bookings/RKM1ULT/?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{
"status": "CANCELLED",
"customer": {
...
}
RezdyPay payment gateway uses Stripe as an underlying payment provider to process payments though Rezdy platform account, setting your Stripe account as a charge destination using Stripe Charge API. Therefore, you will need to implement an extra call directly to Stripe, before calling Rezdy Booking API.
Use the following 2 calls booking flow:
1. Request a Stripe card token, by sending the customer’s credit card details directly from the customer's browser to Stripe.
You must use a client-side library (Checkout, Elements, or mobile libraries) to perform this process, client-side. You must NOT use the Stripe API. Use Rezdy’s Stripe publishable key (see below) in your request, for the token to be generated on Rezdy’s account. The card is not charged at this stage.
Rezdy’s Stripe publishable keys are:
Staging environment: pk_test_51KW8A8ItvA6u4On8YM6AE95ytcqBr0LeRBEEFw4f5MDQPTDBWVt2TAWXhfynCn7NUVwaGc2eP431DNCkmfMaB0AF00firEVJ58
Production environment: pk_live_51H4gSPHO6p5n6bFnuGRLb84FCiptIUAwmgYaBubvp5A09HujFx54ExvLkXOufEcqrHsaCWvnmZfO33efkIFVbpIv00PkoJDRDA
Staging environment keys are usable on api.rezdy-staging.com. Production environment key must be used on api.rezdy.com.
2. Call POST /bookings service, but do not include any booking payments data. You must instead send a creditCard.cardToken parameter that is Stripe’s generated token (id field from Stripe’s API response). Rezdy will confirm the booking, consume the token by processing the payment and record payment on the booking object.
{
...
"creditCard": {
"cardToken": "tok_1234zczx9xyzbkBzxcNoabcdef"
}
...
}
There are 3 modes how a product tours can be scheduled in Rezdy, they are called booking modes. It's necessary to take into account the differences between them, for displaying a product availability and making a booking using public API.
These 3 booking modes are:
NO_DATE
Do not ask for any date (I.e. open tickets valid 6 months from purchase date) DATE_ENQUIRY
Require a date but the customer can choose any. There's no availability check. INVENTORY
Require pre-populated availability (date+time)In case of the NO_DATE products, there is no need to specify booking date and time in a booking request. (However there won't be an error if the startTime or startTimeLocal is specified in a booking request, it just won't be used)
We generate a fake session for the NO_DATE products into GET /availability
response, the session startTimeLocal will be midnight and there will be always 999 seats available:
"startTimeLocal": "2016-07-01 00:00:00",
"seats": 999,
For the DATE_ENQUIRY products, the booking date and time is required, however there can be any booking date specified. For a booking time, it's a bit more tricky. Those products can be configured to accept any time
or just predefined
times. How to recognize, if any time
is accepted?
We generate a session for DATE_ENQUIRY products into GET /availability
response. If the product accept the any time
booking, the session startTimeLocal will be a midnight - 00:00:00 time. Otherwise there will be a session for each predefined time.
Availability response - the DATE_ENQUIRY product, which accepts any time booking:
"startTimeLocal": "2016-06-01 00:00:00",
"seats": 999,
Availability response - the DATE_ENQUIRY product with predefined list of booking times (7:00 and 9:00 a.m.):
{
"startTimeLocal": "2016-05-31 07:00:00",
"seats": 999,
...
},
{
"startTimeLocal": "2016-05-31 09:00:00",
"seats": 999,
...
}
This mode is used by most of the products. It means the availability is defined by scheduled sessions. The booking date and time have to match a session startTime.
GET /availability
response of INVENTORY mode products, will contain the list of scheduled sessions with a start time and seats available as the supplier scheduled:
"startTimeLocal": "2016-07-01 09:00:00",
"seats": 20,
Once a pickup is configured for a certain product, the product detail will contain a field pickupId. The Id value is not required for further use in other API calls (it's for the future purpose), for now on it just means the pickups are configured for this product.
For example:
https://api.rezdy-staging.com/v1/products/marketplace?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5&search=PWQF1Y
RESPONSE:
{
"requestStatus": {
"success": true,
"version": "v1"
},
"products": [
{
"productCode": "PWQF1Y",
"pickupId": 475,
...
To retrieve configured pickup for the product, with a list of all pickup location, call the service method below:
https://api.rezdy-staging.com/v1/products/PWQF1Y/pickups?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
RESPONSE:
{
"requestStatus": {
"success": true,
"version": "v1"
},
"pickupLocations": [
{
"locationName": "Divers hotel",
"address": "Cape Byron, Byron Bay NSW, Australia",
"latitude": -28.6473671,
"longitude": 153.601977,
"minutesPrior": 30,
"additionalInstructions": "Please be ready 15 minute before the pickup time in the hotel lobby area."
},
{
"locationName": "Seaside hostel",
"address": "Main Beach, Byron Bay NSW, Australia",
"latitude": -28.6412831,
"longitude": 153.6166691,
"minutesPrior": 20,
"additionalInstructions": "Please be ready 15 minute before the pickup time in front of the hostel."
}
]
}
To specify a pickup location for a booking, you just need to send one locationName field value of one of the locations from pickupLocations list.
POST https://api.rezdy-staging.com/v1/bookings?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
REQUEST:
{
"items":
[
{
"productCode": "PWQF1Y",
"startTimeLocal": "2025-08-11 14:00:00",
"quantities":
[
{
"optionLabel": "Adult",
"value": "1"
}
],
"pickupLocation":
{
"locationName": "Divers hotel"
}
}
]
...
}
System will store the pickup location, calculate pickup time and return the pickup instructions.
RESPONSE:
{
"requestStatus": {
"success": true,
"version": "v1"
},
"booking": {
"orderNumber": "R3MPR7Z",
...
"items": [
{
"productName": "DEMO - One day SCUBA diving",
"productCode": "PKVT0E",
"startTime": "2016-07-11T04:00:00Z",
....
"pickupLocation": {
"locationName": "Maroubra Beach",
"address": "Maroubra Beach, New South Wales, Australia",
"pickupTime": "2016-07-11 13:05:00",
"pickupInstructions": "In front of the Maroubra seal surfing club building.\r\nPlease be ready 15 minutes before pickup time."
}
}
],
....
It is also possible to specify a custom pickup location (should be discussed with the product supplier if this option is feasible):
REQUEST:
{
"items":
[
{
"productCode": "PWQF1Y",
"startTimeLocal": "2025-08-11 14:00:00",
"quantities":
[
{
"optionLabel": "Adult",
"value": "1"
}
],
"pickupLocation":
{
"locationName": "Hotel by the sea"
}
}
]
...
}
In this case system stores the pickup location (naturally, it can't calculate the other fields like pickup time or address) and returns the custom pickup location instructions (if specified by the supplier).
RESPONSE:
{
"requestStatus": {
"success": true,
"version": "v1"
},
"booking": {
"orderNumber": "R3MPR7Z",
...
"items": [
{
"productName": "DEMO - One day SCUBA diving",
"productCode": "PKVT0E",
"startTime": "2016-07-11T04:00:00Z",
....
"pickupLocation": {
"locationName": "Hotel by the sea",
"pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
],
....
Please note that we are now enforcing validations on Booking Fields that are being sent through our API. Not only the mandatory fields, but also the format matching their type.
Every booking field has a certain type (see bookingFields.fieldType
) and their value has to be formatted accordingly.
An exception is a string, when the booking field value is a free text.
The bookingFields.fieldType is one of:
The following booking field types need to have specific values.
This field must contain a boolean value. Accepted values are 1, 0, TRUE, FALSE, YES, NO (case insensitive matching)
{
"label": "I agree to receive marketing emails",
"value": "true"
}
This field must be a ISO-8601 date only format yyyy-MM-dd e.g. 1991-01-01
{
"label": "Date of Birth",
"value": "1991-01-01"
}
This field must be in an international format +41 44 668 18 00, or E164 format +41446681800
{
"label": "Mobile",
"value": "+61484123456"
}
List types need to match one of the predefined values, common list types are the following:
This field must be in ISO 3166-1 alpha-2 codes format e.g. Australia -> au, United States -> us (case insensitive matching)
{
"label": "Country",
"value": "AU"
}
Valid genders that are accepted through our API will be: MALE and FEMALE. (case insensitive matching)
{
"label": "Gender",
"value": "MALE"
}
Valid titles that are accepted through our API will be: MR, MS, MRS, MISS. (case insensitive matching)
{
"label": "Title",
"value": "MISS"
}
You are able to suppress Rezdy's notifications to customers when creating or cancelling a booking. You can then send emails & SMS from your own system instead.
To disable them, send the flag "sendNotifications" = "false"
in the booking object in POST /bookings
e.g.:
{
"customer": {},
"items": [],
"sendNotifications": false
}
The flag is only used per request and is not stored.
To suppress notifications when cancelling a booking, you must set it as query parameter in the cancellation request:
DELETE /bookings/{orderNumber}?sendNotifications=false
It is not possible to disable Rezdy's notifications to suppliers and agents. Only the customer notifications can be disabled.
Note: Rezdy emails may include QR codes (if enabled by supplier), which suppliers can use to check-in participants using our mobile apps, see (QR Code Scanner ). If you decide to use your own emails, the booking QR code should be included in the e-mails. The QR code is the Rezdy orderNumber.
The Rezdy API does not expose internal product Ids. You can only use Rezdy-generated product codes, which always start with P, e.g. PVGNQX. However, booking forms use internal product Ids in booking page URLs and widgets, e.g. https://demo-booking-form.rezdy.com/124318/amazing-day-tour
If you need to load product data from the API and then link to the booking form for checkout, you can use the product codes. These 2 URLs will load the same page:
https://demo-booking-form.rezdy.com/124318/amazing-day-tour
https://demo-booking-form.rezdy.com/view/PVGNQX
You can therefore use API product codes for booking form product pages, by using this url:
https://{alias}.rezdy.com/view/{productCode}
Added new error codes
In order to support automated commissions payout via Stripe recipient only account, RezdyPay on staging environment has switched to a new US-based Stripe test account, and the Stripe publishable key for staging environment has changed. The key for production environment remains the same.
Staging environment: pk_test_51KW8A8ItvA6u4On8YM6AE95ytcqBr0LeRBEEFw4f5MDQPTDBWVt2TAWXhfynCn7NUVwaGc2eP431DNCkmfMaB0AF00firEVJ58
Rezdy API specification split into agent and supplier portal.
RezdyPay payment gateway has been upgraded and Rezdy uses a new Stripe platform account, to process automated payment bookings, or manual payment bookings with credit card charged though RezdyPay. As a result, new publishable keys need to be used to create a Stripe token.
Staging environment: pk_test_5nODbTMiGQCMOHg0Nt5LzQUV00CcWuIksX
Production environment: pk_live_51H4gSPHO6p5n6bFnuGRLb84FCiptIUAwmgYaBubvp5A09HujFx54ExvLkXOufEcqrHsaCWvnmZfO33efkIFVbpIv00PkoJDRDA
More details are in RezdyPay payments processing article
isApiBookingSupported
field has been added to Product response model.It provides a convenient way to find out if a product booking is supported via API. Some product types or pricing types or their combinations are not supported in API. If you are planning to implement a booking flow via API, you should filter out the products, if the value of this field is set as false
.
fields
attribute of the Booking model.{
"orderNumber": "R12345",
...
"fields": [
{
"label": "Barcode",
"value": "6000125341"
}
]
}
barcodeOutputType
field. Current values support are:PARTICIPANT
: Barcodes will be generated per participant when the product has been bookedORDER
: Barcodes will be generated only for the order when the product has been bookedbarcodeType
which specifies the format in which the booking barcodes are in. Rezdy supports "TEXT", "QR_CODE", "CODE_39", "CODE_128", "EAN_8", "EAN_13", "ITF"
.apiKey: abcd123
We are introducing a new Staging environment and deprecating our Test environment api.rezdy-test.com. We encourage usage of the new Staging environment which will be more stable than the old test environment and will soon support data replication from our Production environment.
See Environments section in API overview for details
You should now use the same Stripe publishable key for all currencies, when generating tokens for automated payments. We will accept old keys until at least until 30 November 2018, but please migrate to the new keys below:
TEST: pk_test_wGcSehTxQDTLoMRVl6Gv45zy
PROD: pk_live_zKs28ywqmpH5K6Vz9moNGwiM
Added services to create and update products:
More details in this article.
Added information about visible – optional product booking fields: "visiblePerParticipant": true|false, "visiblePerBooking": true|false to BookingFields model
Booking update, for manual payment bookings. Currently, these fields can be updated using the API:
More details in this article.
Added new Resources endpoint with services:
New service methods in Manifest endpoint:
Added duration fields to Product data model
Support of orderStatus field in supplier’s Booking request
##2014-12-01
Searches a product that matches a search string.
Load all products matching a search string. If the search string is empty, all your products will be returned.
Use this service when acting as a supplier, to load your own products.
If you're acting as an agent, use the /products/marketplace service
search | string search String to search for. It will be searched in product name, product code and internal code. |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Product) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "products": [
- {
- "productType": "ACTIVITY",
- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "productCode": "string",
- "internalCode": "string",
- "supplierId": 0,
- "supplierAlias": "string",
- "supplierName": "string",
- "timezone": "string",
- "advertisedPrice": 0.1,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
], - "currency": "AED",
- "unitLabel": "string",
- "unitLabelPlural": "string",
- "quantityRequired": true,
- "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "images": [
- {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
], - "videos": [
- {
- "id": "string",
- "platform": "string",
- "url": "string"
}
], - "bookingMode": "NO_DATE",
- "charter": true,
- "terms": "string",
- "generalTerms": "string",
- "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY",
- "quantity": 0,
- "image": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
], - "bookingFields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
], - "xeroAccount": "string",
- "confirmMode": "MANUAL",
- "confirmModeMinParticipants": 0,
- "agentPaymentType": "PAYOUTS",
- "maxCommissionPercent": 0.1,
- "maxCommissionNetRate": 0.1,
- "commissionIncludesExtras": true,
- "cancellationPolicyDays": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "minimumNoticeMinutes": 0,
- "durationMinutes": 0,
- "dateUpdated": "2019-08-24T14:15:22Z",
- "pickupId": 0,
- "locationAddress": {
- "addressLine": "string",
- "addressLine2": "string",
- "postCode": "string",
- "city": "string",
- "state": "string",
- "countryCode": "string",
- "latitude": 0.1,
- "longitude": 0.1
}, - "additionalInformation": "string",
- "languages": [
- "string"
], - "tags": [
- "string"
], - "taxes": [
- {
- "supplierId": 0,
- "label": "string",
- "taxFeeType": "TAX",
- "taxType": "PERCENT",
- "taxPercent": 0.1,
- "taxAmount": 0.1,
- "priceInclusive": true,
- "compound": true
}
], - "productSeoTags": [
- {
- "id": 0,
- "metaType": "META_NAME",
- "attrKey": "string",
- "attrValue": "string",
- "productCode": "string"
}
], - "waitListingEnabled": true,
- "qrCodeType": "INTERNAL",
- "barcodeOutputType": "PARTICIPANT",
- "bookingUrl": "string",
- "apiBookingSupported": true,
- "multiProductBookingSupported": true
}
]
}
name required | string Product name |
shortDescription required | string Product description is between 15 and 240 characters. |
description required | string Long product description, is between 100 and 15000 characters. |
advertisedPrice | number <float> General price indication for this product. It represents a display price only, therefore it does not affect a real booking price, which is calculated based on the price options. |
terms | string Specific terms and conditions for this product. |
required | Array of objects (BookingFieldCreate) List of booking fields required for this product. |
productType required | string Enum: "ACTIVITY" "DAYTOUR" "MULTIDAYTOUR" "PRIVATE_TOUR" "TICKET" "RENTAL" "CHARTER" "EVENT" "GIFT_CARD" "TRANSFER" "LESSON" "MERCHANDISE" "CUSTOM" Type of this product. |
internalCode | string Supplier-defined product code, used internally by the supplier. |
required | Array of objects (PriceOptionCreate) List of price options belonging to this product. |
unitLabel required | string What a quantity for this product is. It can be people (I.e. participant, passenger, diver) or objects (Kayak, Helicopter, etc.) |
unitLabelPlural required | string Plural version of unitLabel. |
quantityRequired | boolean Does this product require a quantity to be booked? True for most products. Can be false if the supplier can only provide one quantity at any single time (I.e. private charters) or a price of a booking is fixed regardless of quantity |
quantityRequiredMin | integer <int32> Represent the min booking quantity for the product. It can be setup for a supplier product. For a successful booking of the product, the total number of participants (regardless of pricing options), per booking item in the booking request, have to be greater or equal than this value. |
quantityRequiredMax | integer <int32> Represent the max booking quantity for the product. It can be setup for a supplier product. For a successful booking of the product, the total number of participants (regardless of pricing options), per booking item in the booking request, have to be lesser or equal than this value. |
bookingMode required | string Enum: "NO_DATE" "DATE_ENQUIRY" "INVENTORY" Booking mode. Determines if this product needs availability or can be booked for any date. |
charter | boolean A charter product means each session can only have a single booking, whatever the number of seats booked. |
xeroAccount | string Supplier Xero account for this product. |
confirmMode required | string Enum: "MANUAL" "AUTOCONFIRM" "MANUAL_THEN_AUTO" "AUTO_THEN_MANUAL" Confirmation mode. Determines if bookings are automatically confirmed or it they are pending. |
confirmModeMinParticipants | integer <int32> If confirmMode is MANUAL_THEN_AUTO or AUTO_THEN_MANUAL, determines the minimum number of participants per booking to trigger the change. |
minimumNoticeMinutes | integer <int64> Minimum book ahead interval for he product in minutes. |
durationMinutes required | integer <int64> Duration of the product in minutes. |
pickupId | integer <int64> If pickups are configured for this product, the field will contain the id of the pickup location list created by the supplier. |
object (Address) Address of a company, customer or product location. | |
additionalInformation | string Additional information for the product, that should be sent after a booking is completed (i.e. by email) to the customer. Useful for integration, when manual control of the entire customer booking experience is wanted, and the automatic confirmation e-mail from Rezdy had been suppressed. |
languages | Array of strings unique List of product languages. The format of the language is ISO 639 two-letter code with BCP 47 language variants, separated by underscore e.g. en_au. |
Array of objects (Extra) unique List of extras IDs. | |
barcodeOutputType | string Enum: "PARTICIPANT" "ORDER" Specifies how to output the barcodes when this product is booked. Valid types are: |
required | object (RequestStatus) |
object (Product) Product object. Holds general details and settings of a specific tour, activity or event. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "product": {
- "productType": "ACTIVITY",
- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "productCode": "string",
- "internalCode": "string",
- "supplierId": 0,
- "supplierAlias": "string",
- "supplierName": "string",
- "timezone": "string",
- "advertisedPrice": 0.1,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
], - "currency": "AED",
- "unitLabel": "string",
- "unitLabelPlural": "string",
- "quantityRequired": true,
- "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "images": [
- {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
], - "videos": [
- {
- "id": "string",
- "platform": "string",
- "url": "string"
}
], - "bookingMode": "NO_DATE",
- "charter": true,
- "terms": "string",
- "generalTerms": "string",
- "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY",
- "quantity": 0,
- "image": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
], - "bookingFields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
], - "xeroAccount": "string",
- "confirmMode": "MANUAL",
- "confirmModeMinParticipants": 0,
- "agentPaymentType": "PAYOUTS",
- "maxCommissionPercent": 0.1,
- "maxCommissionNetRate": 0.1,
- "commissionIncludesExtras": true,
- "cancellationPolicyDays": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "minimumNoticeMinutes": 0,
- "durationMinutes": 0,
- "dateUpdated": "2019-08-24T14:15:22Z",
- "pickupId": 0,
- "locationAddress": {
- "addressLine": "string",
- "addressLine2": "string",
- "postCode": "string",
- "city": "string",
- "state": "string",
- "countryCode": "string",
- "latitude": 0.1,
- "longitude": 0.1
}, - "additionalInformation": "string",
- "languages": [
- "string"
], - "tags": [
- "string"
], - "taxes": [
- {
- "supplierId": 0,
- "label": "string",
- "taxFeeType": "TAX",
- "taxType": "PERCENT",
- "taxPercent": 0.1,
- "taxAmount": 0.1,
- "priceInclusive": true,
- "compound": true
}
], - "productSeoTags": [
- {
- "id": 0,
- "metaType": "META_NAME",
- "attrKey": "string",
- "attrValue": "string",
- "productCode": "string"
}
], - "waitListingEnabled": true,
- "qrCodeType": "INTERNAL",
- "barcodeOutputType": "PARTICIPANT",
- "bookingUrl": "string",
- "apiBookingSupported": true,
- "multiProductBookingSupported": true
}
}
Load an existing product by Product Code
productCode required | string Example: P12345 Product Code to search for |
required | object (RequestStatus) |
object (Product) Product object. Holds general details and settings of a specific tour, activity or event. |
Product PWQF1Y
details https://api.rezdy-staging.com/v1/products/PWQF1Y?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "product": {
- "productType": "ACTIVITY",
- "name": "Double dive with sharks",
- "shortDescription": "Double dive with grey nurse or leopard sharks, depending on the season.",
- "description": "Double dive with grey nurse or leopard sharks, depending on the season. Boat dive with a snack provided during the break between the dives. The dive site is suitable for open water divers.",
- "productCode": "PWQF1Y",
- "internalCode": "DIVING",
- "supplierId": 13398,
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "timezone": "Australia/Sydney",
- "advertisedPrice": 200,
- "priceOptions": [
- {
- "price": 250,
- "label": "Adult",
- "id": 929159,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}, - {
- "price": 200,
- "label": "Student",
- "id": 929160,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}
], - "currency": "AUD",
- "unitLabel": "Participant",
- "unitLabelPlural": "Participants",
- "quantityRequired": true,
- "quantityRequiredMin": 1,
- "quantityRequiredMax": 50,
- "images": [
- {
- "id": 22650,
}, - {
- "id": 22651,
}, - {
- "id": 22652,
}, - {
- "id": 22653,
}
], - "videos": [ ],
- "bookingMode": "INVENTORY",
- "charter": false,
- "terms": "",
- "extras": [
- {
- "name": "Underwater camera rental",
- "description": "An underwater camera rental for the dive. Choice of GoPro or Nikon Coolpix AW130. Select the number of cameras up to the number of participants, that you would like to rent for this booking.",
- "price": 15,
- "extraPriceType": "ANY"
}
], - "bookingFields": [
- {
- "label": "First Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Last Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Mobile",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "Phone"
}, - {
- "label": "Email",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Special Requirements",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Certification level",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "fieldType": "String"
}, - {
- "label": "Certification number",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "fieldType": "String"
}, - {
- "label": "Certification agency",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "listOptions": "PADI\r\nSSI\r\nSDI",
- "fieldType": "List"
}
], - "latitude": -28.6113488,
- "longitude": 153.629085,
- "confirmMode": "AUTOCONFIRM",
- "confirmModeMinParticipants": 0,
- "agentPaymentType": "FULL_AGENT",
- "maxCommissionPercent": 10,
- "commissionIncludesExtras": true,
- "dateCreated": "2021-08-30T23:49:55Z",
- "minimumNoticeMinutes": 1440,
- "durationMinutes": 180,
- "dateUpdated": "2021-09-13T04:13:35Z",
- "pickupId": 475,
- "locationAddress": {
- "addressLine": "Julien rocks",
- "postCode": "",
- "city": "Byron Bay",
- "state": "",
- "countryCode": "au",
- "latitude": -28.6113488,
- "longitude": 153.629085
}, - "languages": [
- "en_au"
], - "tags": [
- "TYPE:Activity"
], - "waitListingEnabled": false,
- "isApiBookingSupported": true
}
}
Updates a product.
When updating price options, the full list of existing price options must be supplied in the update. Otherwise the system will remove any missing price options in the request from the product.
For instance, if a product has 2 price options Adult and Child but the update request only contains Adult, the Child price option will be removed from the product.
Adding a price option works the same way. If the update request contains an extra price option, it will be added to the product.
When price option values are updated via API, this will override all existing price in availability (session) to reflect the product price.
If a different price in calendar/session is required to the product price, please make the changes to the product directly in your Rezdy account and select do not change session price
in the page that follows after saving your changes.,
productCode required | string product's product code to be updated |
name | string Product name |
shortDescription required | string Product description is between 15 and 240 characters. |
description required | string Long product description, is between 100 and 15000 characters. |
advertisedPrice | number <float> General price indication for this product. It represents a display price only, therefore it does not affect a real booking price, which is calculated based on the price options. |
terms | string Specific terms and conditions for this product. |
confirmMode required | string Enum: "MANUAL" "AUTOCONFIRM" "MANUAL_THEN_AUTO" "AUTO_THEN_MANUAL" Confirmation mode. Determines if bookings are automatically confirmed or it they are pending. |
confirmModeMinParticipants | integer <int32> If confirmMode is MANUAL_THEN_AUTO or AUTO_THEN_MANUAL, determines the minimum number of participants per booking to trigger the change. |
minimumNoticeMinutes | integer <int64> Minimum book ahead interval for he product in minutes. |
durationMinutes | integer <int64> Duration of the product in minutes. |
pickupId | integer <int64> Pickup ID for this product. |
required | Array of objects (BookingFieldCreate) List of booking fields required for this product. |
Array of objects (PriceOptionCreate) List of price options for this product. | |
internalCode | string Supplier-defined product code, used internally by the supplier. |
barcodeOutputType | string Enum: "PARTICIPANT" "ORDER" Specifies how to output the barcodes when this product is booked. Valid types are: |
required | object (RequestStatus) |
object (Product) Product object. Holds general details and settings of a specific tour, activity or event. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "product": {
- "productType": "ACTIVITY",
- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "productCode": "string",
- "internalCode": "string",
- "supplierId": 0,
- "supplierAlias": "string",
- "supplierName": "string",
- "timezone": "string",
- "advertisedPrice": 0.1,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
], - "currency": "AED",
- "unitLabel": "string",
- "unitLabelPlural": "string",
- "quantityRequired": true,
- "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "images": [
- {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
], - "videos": [
- {
- "id": "string",
- "platform": "string",
- "url": "string"
}
], - "bookingMode": "NO_DATE",
- "charter": true,
- "terms": "string",
- "generalTerms": "string",
- "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY",
- "quantity": 0,
- "image": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
], - "bookingFields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
], - "xeroAccount": "string",
- "confirmMode": "MANUAL",
- "confirmModeMinParticipants": 0,
- "agentPaymentType": "PAYOUTS",
- "maxCommissionPercent": 0.1,
- "maxCommissionNetRate": 0.1,
- "commissionIncludesExtras": true,
- "cancellationPolicyDays": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "minimumNoticeMinutes": 0,
- "durationMinutes": 0,
- "dateUpdated": "2019-08-24T14:15:22Z",
- "pickupId": 0,
- "locationAddress": {
- "addressLine": "string",
- "addressLine2": "string",
- "postCode": "string",
- "city": "string",
- "state": "string",
- "countryCode": "string",
- "latitude": 0.1,
- "longitude": 0.1
}, - "additionalInformation": "string",
- "languages": [
- "string"
], - "tags": [
- "string"
], - "taxes": [
- {
- "supplierId": 0,
- "label": "string",
- "taxFeeType": "TAX",
- "taxType": "PERCENT",
- "taxPercent": 0.1,
- "taxAmount": 0.1,
- "priceInclusive": true,
- "compound": true
}
], - "productSeoTags": [
- {
- "id": 0,
- "metaType": "META_NAME",
- "attrKey": "string",
- "attrValue": "string",
- "productCode": "string"
}
], - "waitListingEnabled": true,
- "qrCodeType": "INTERNAL",
- "barcodeOutputType": "PARTICIPANT",
- "bookingUrl": "string",
- "apiBookingSupported": true,
- "multiProductBookingSupported": true
}
}
Deletes a product.
productCode required | string product's product code to be deleted |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
First, a product has to be created usingPOST /products
, the response contain a product object upon a successful creation. Use the product code to for the add/delete images URLs.
Use a standard file upload request (multipart form data) with a file attachment, parameter name is file
as the call payload, and also a mandatory filename. If you have multiple images, you need to make one separate call for each image.
A successful response contains generated image URLs including different image dimension and the image Id. Use the image Id to delete the image, if you want to remove it from the product.
File has to be specified either in the attachment, part of the form-data parameter 'file', or in the attachment, as a form-data parameter 'filename', which is common format for PHP frameworks, which are sending an array of attachments.
Request:
POST https://api.rezdy.com/latest/products/P12345/images?apiKey=123456789XYZ
content-type=[multipart/form-data; boundary=----WebKitFormBoundarymDtt4W0lhmAsKFkZ]
------WebKitFormBoundarymDtt4W0lhmAsKFkZ
Content-Disposition: form-data; name="file"; filename="myImage.png"
Content-Type: image/png
...
IMAGE BINARY DATA
...
------WebKitFormBoundarymDtt4W0lhmAsKFkZ--
productCode required | string product to add the image to |
file required | object Image file to be uploaded |
filename | string Optional image name override |
required | object (RequestStatus) |
object (Image) Image links. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "img": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
Removes product Image. Filename is mandatory. It has to be specified either in the attachment, part of the form-data parameter 'file', or in the attachment, as a form-data parameter 'filename', which is common format for PHP frameworks, which are sending an array of attachments.
productCode required | string product's product code for the image to be uploaded to |
mediaId required | integer <int64> image's id to be uploaded |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Gets a list of pickup locations configured for this product.
productCode required | string Example: P12345 productCode Product Code to search for |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (PickupLocation) |
Product's PWQF1Y
(Double dive with sharks) pickups: https://api.rezdy-staging.com/v1/products/PWQF1Y/pickups?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "pickupLocations": [
- {
- "locationName": "Divers hotel",
- "address": "Cape Byron, Byron Bay NSW, Australia",
- "latitude": -28.6473671,
- "longitude": 153.601977,
- "minutesPrior": 30,
- "additionalInstructions": "Please be ready 15 minute before the pickup time in the hotel lobby area."
}, - {
- "locationName": "Seaside hostel",
- "address": "Main Beach, Byron Bay NSW, Australia",
- "latitude": -28.6412831,
- "longitude": 153.6166691,
- "minutesPrior": 20,
- "additionalInstructions": "Please be ready 15 minute before the pickup time in front of the hostel."
}
]
}
This service returns availability information for a specific date range. The service response contains a list of sessions, including their availability and pricing details.
Pricing in the session can be different than the pricing of the products, in a case of a dynamic pricing when a supplier overrides a price for a specific session or a ticket type.
In case of multiple products sharing this session, a session will contain price overrides for all of the shared products. Therefore it is necessary to filer only the price options matching the chosen product code on the client side, when displaying available price options to a customer.
productCode required | Array of strings unique Example: productCode=P12345 Product code in format P12345. You can request multiple products |
startTime | string Example: startTime=2014-03-01T00:00:00Z Start time in |
endTime | string Example: endTime=2014-03-01T00:00:00Z End time in |
startTimeLocal | string Start time in supplier's local timezone, format is |
endTimeLocal | string End time in supplier's local timezone, format is |
minAvailability | integer <int32> only load availability for that quantity |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Session) |
Get 2 days of product PWQF1Y
availability: https://api.rezdy-staging.com/v1/availability?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5&productCode=PWQF1Y&startTimeLocal=2025-10-01 00:00:00&endTimeLocal=2025-10-03 00:00:00
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "sessions": [
- {
- "id": 2788078,
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "allDay": false,
- "seats": 50,
- "seatsAvailable": 50,
- "priceOptions": [
- {
- "price": 250,
- "label": "Adult",
- "id": 929159,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}, - {
- "price": 200,
- "label": "Student",
- "id": 929160,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}
]
}, - {
- "id": 2788381,
- "productCode": "PWQF1Y",
- "startTime": "2025-10-01T23:00:00Z",
- "endTime": "2025-10-02T02:00:00Z",
- "startTimeLocal": "2025-10-02 09:00:00",
- "endTimeLocal": "2025-10-02 12:00:00",
- "allDay": false,
- "seats": 50,
- "seatsAvailable": 50,
- "priceOptions": [
- {
- "price": 250,
- "label": "Adult",
- "id": 929159,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}, - {
- "price": 200,
- "label": "Student",
- "id": 929160,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}
]
}
]
}
Create a new session - creates availability for a specific startTime. Sessions can be created only for INVENTORY mode
products.
The endTime, if not specified, will be calculated based on selected product default duration, and the current product
price options will be used (if not specified). Does not support resources yet
Response is the newly created Session
productCode required | string Rezdy unique productCode linked to this session |
startTime | string <date-time> Start Time of this session. This time should be used when showing customers the booking date/time. It should be sent in BookingItem.startTime when making new bookings |
endTime | string <date-time> End time of this session. Used to show the customer how long that tour will last |
startTimeLocal | string Start Time of this session in supplier's local timezone. This time should be used when showing customers the booking date/time. It should be sent in BookingItem.startTimeLocal when making new bookings |
endTimeLocal | string End time of this session in supplier's local timezone. Used to show the customer how long that tour will last |
seats required | integer <int32> Total number of seats for this session. Does not change after a booking is made |
Array of objects (PriceOption) List of price options attached to this session. Most of the time they'll match the product's price options, but they can be used to change the price of specific dates/times (I.e. high/low season, weekday/weekend, etc.) | |
allDay | boolean If true, this session lasts all day and no time should be shown to customers. Technically the session will be from midnight to midnight. |
required | object (RequestStatus) |
object (Session) A Session holds availability for a unique product / start time combination and also the rates for the session booking. |
create a session
{- "productCode": "PWQF1Y",
- "startTimeLocal": "2026-11-01 14:00:00",
- "seats": 10,
- "priceOptions": [
- {
- "price": 199,
- "label": "Adult"
}
]
}
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "session": {
- "id": 0,
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "allDay": true,
- "seats": 0,
- "seatsAvailable": 0,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
]
}
}
Batch Update availability for a specific product and time period.
This will update availability for all the sessions that start in that time range.
Product code is optional, all sessions for all products will be updated if it is empty.
You can use this service to blackout periods (I.e. set availability to 0 for a full day).
Maximum range is one week.
This can only update sessions from products with InventoryMode = SESSION_SEATS.
{
startTime: 2014-11-11T00:00:00Z,
endTime: 2014-11-11T23:59:59Z,
productCode: P123456,
seatsAvailable: 0
}
OR
{
startTime: 2014-11-11T00:00:00Z,
endTime: 2014-11-11T23:59:59Z,
productCode: P123456,
seats: 30
}
OR
{
startTime: 2014-11-11T00:00:00Z,
endTime: 2014-11-11T23:59:59Z,
productCode: P123456,
priceOptions: [
{
price: 90,
label: Adult
}
]
}
If you send seatsAvailable
, sessions will be updated for the current availability to become this number.
If you send seats
, the total seats capacity of sessions will be updated, regardless of how many are already booked.
If you send both, only seatsAvailable
will be used.
If you send priceOptions, they will override the default price options of the existing session.
seats | integer <int32> Update the total number of seats for this session. The total seats does not change after a booking is made. The total number of seats can not be less than 0. |
Array of objects (PriceOption) List of price options, which will override the product level price. Price options have to be a subset of the product price options, thus you can not create new price options, use product update service to do so. | |
seatsAvailable | integer <int32> Update the current availability for this session. The session total number of seats after updating the seats available can not be less than 0. |
allDay | boolean If true, this session lasts all day and no time should be shown to customers. Technically the session will be from midnight to midnight. |
productCode required | string Rezdy unique productCode linked to this session |
startTime | string <date-time> Batch update start interval |
endTime | string <date-time> Batch update end interval |
startTimeLocal | string Batch update start interval in supplier's local timezone. |
endTimeLocal | string Batch update end interval in supplier's local timezone. |
required | object (RequestStatus) |
Array of objects (Session) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "sessions": [
- {
- "id": 0,
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "allDay": true,
- "seats": 0,
- "seatsAvailable": 0,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
]
}
]
}
Update availability a session starting at a specific local date time
startTimeLocal required | string Session to update local start time |
productCode required | string Product session |
seats | integer <int32> Update the total number of seats for this session. The total seats does not change after a booking is made. The total number of seats can not be less than 0. |
Array of objects (PriceOption) List of price options, which will override the product level price. Price options have to be a subset of the product price options, thus you can not create new price options, use product update service to do so. | |
seatsAvailable | integer <int32> Update the current availability for this session. The session total number of seats after updating the seats available can not be less than 0. |
allDay | boolean If true, this session lasts all day and no time should be shown to customers. Technically the session will be from midnight to midnight. |
required | object (RequestStatus) |
object (Session) A Session holds availability for a unique product / start time combination and also the rates for the session booking. |
update seats available
{- "seatsAvailable": 5
}
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "session": {
- "id": 0,
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "allDay": true,
- "seats": 0,
- "seatsAvailable": 0,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
]
}
}
Delete a single session starting at a specific local date time
startTimeLocal required | string Session to delete local start time |
productCode required | string Product session |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Search bookings in your account
orderStatus | string Enum: "PROCESSING" "NEW" "ON_HOLD" "PENDING_SUPPLIER" "PENDING_CUSTOMER" "CONFIRMED" "CANCELLED" "ABANDONED_CART" Order status to filter results |
search | string String to search for. It will be searched in Order number, Customer name, Agent code and payment transaction codes (I.e. voucher Code). |
productCode | Array of strings unique Example: productCode=P12345 Product code, to only load bookings for a specific product. Multiple values allowed: &productCode=P11111&productCode=P22222 |
minTourStartTime | string Example: minTourStartTime=2014-03-01T00:00:00Z Only load bookings with a booked time that starts on or after this time. This is not the booking creation date, it is the booked date. |
maxTourStartTime | string Example: maxTourStartTime=2014-03-01T00:00:00Z Only load bookings with a booked time that starts before or on this time. This is not the booking creation date, it is the booked date. |
updatedSince | string Example: updatedSince=2014-03-01T00:00:00Z Only load bookings updated after this time. |
minDateCreated | string Example: minDateCreated=2014-03-01T00:00:00Z Only load bookings created on or after this date, whether they have been updated or not. |
maxDateCreated | string Example: maxDateCreated=2014-03-01T00:00:00Z Only load bookings created on or before this date, whether they have been updated or not. |
resellerReference | string Only load bookings with specified resellerReference |
limit | integer <int32> How many results are returned per request. Maximum is 100, which also a default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. |
required | object (RequestStatus) |
Array of objects (Booking) |
Search confirmed bookings: https://api.rezdy-staging.com/v1/bookings?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5&orderStatus=CONFIRMED
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "bookings": [
- {
- "orderNumber": "RX1N6HC",
- "status": "CONFIRMED",
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "resellerId": 13399,
- "resellerName": "API specification demo agent (DO NOT EDIT)",
- "resellerAlias": "apispecificationdemoagentdonotedit",
- "customer": {
- "id": 29650,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-04T23:00:00Z",
- "endTime": "2025-09-05T02:00:00Z",
- "startTimeLocal": "2025-09-05 09:00:00",
- "endTimeLocal": "2025-09-05 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 1
}
], - "totalQuantity": 1,
- "amount": 250,
- "extras": [ ],
- "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level"
}, - {
- "label": "Certification number"
}, - {
- "label": "Certification agency"
}
]
}
], - "subtotal": 250,
- "pickupLocation": {
- "locationName": "Hotel by the sea",
- "pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 250,
- "totalCurrency": "AUD",
- "totalPaid": 250,
- "totalDue": 0,
- "dateCreated": "2025-09-03T00:00:04Z",
- "dateConfirmed": "2025-09-03T00:00:04Z",
- "datePaid": "2025-09-03T00:00:04Z",
- "payments": [
- {
- "type": "CASH",
- "amount": 250,
- "currency": "AUD",
- "date": "2025-09-03T00:00:04Z",
- "label": "Paid in cash to API specification demo company",
- "recipient": "RESELLER"
}
], - "fields": [
- {
- "label": "Barcode",
- "value": "RX1N6HC"
}
], - "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "API",
- "sourceChannel": "APISPECIFICATIONDEMOAGENTDONOTEDIT",
- "commission": 25,
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
]
}
Create a new booking. Many of payload fields are not required and will be calculated if not specified. Please check the example request payloads for different booking scenarios.
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by the system, therefore, even if it is specified in the booking request, it will be overwritten. |
status | string Enum: "PROCESSING" "NEW" "ON_HOLD" "PENDING_SUPPLIER" "PENDING_CUSTOMER" "CONFIRMED" "CANCELLED" "ABANDONED_CART" Status of this booking |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
object (Customer) The customer is the person making the booking, and most of the time paying for it. | |
Array of objects (BookingItemCreate) List of items in this booking. A booking can contain multiple products. Each BookingItem is a separate product with its own set of quantities and participant details. | |
totalAmount | number <float> Total booking amount |
datePaid | string <date-time> Date this booking was fully paid |
dateReconciled | string <date-time> Date this booking was reconciled with the agent |
comments | string Special requirements entered by the customer. Visible to both customer and supplier. |
internalNotes | string Comments only visible internally by the supplier |
Array of objects (BookingPayment) List of payments recorded for this booking | |
object (CreditCard) Credit card details. Used to send payment details for a booking | |
Array of objects (BookingField) List of custom fields that are required "once per booking" by all the products in this booking | |
source | string Enum: "ONLINE" "INTERNAL" "PARTNERS" "COMMUNITY" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "API" "GOOGLE" Source of this booking viewed from the supplier |
sourceReferrer | string Referrer code |
resellerSource | string Enum: "ONLINE" "INTERNAL" "PARTNERS" "COMMUNITY" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "API" "GOOGLE" Source of this booking viewed from the agent |
sourceChannel | string Agent code defined by the supplier |
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. |
surcharge | number <float> Credit card surcharge calculated for this booking |
vouchers | Array of strings List of vouchers (Gift cards) that have been redeemed to pay for this booking |
coupon | string Promo code that has been applied to this booking |
paymentOption | string Enum: "CREDITCARD" "PAYPAL" "BANKTRANSFER" "CASH" "INVOICE" "EXTERNAL" "ALIPAY" Payment option selected by the customer when making an online booking |
sendNotifications | boolean Default: true Flag to control if a booking confirmation email should be send to the customer after this booking is created. |
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. Maxiumum number of characters is 30 |
barcodeType | string Enum: "TEXT" "CODE_39" "CODE_128" "QR_CODE" "EAN_8" "EAN_13" "ITF" Declares the redemption code format customers will receive if the booking was created with barcodes. |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Example of creating a booking with API features including pickup, extras, order and participant level booking fields, comments, discount coupon, participant level barcodes
{- "comments": "Here come comments that are visible to you, but not to customers",
- "customer": {
- "firstName": "Rick",
- "lastName": "Sanchez",
- "phone": "+61484123456",
- "email": "ricksanchez@test.com"
}, - "items": [
- {
- "productCode": "PWQF1Y",
- "startTimeLocal": "2025-10-01 09:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "value": 2
}
], - "extras": [
- {
- "name": "Underwater camera rental",
- "quantity": 1
}
], - "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level",
- "value": "Open Water"
}, - {
- "label": "Certification number",
- "value": "123456798"
}, - {
- "label": "Certification agency",
- "value": "PADI"
}, - {
- "label": "Barcode",
- "value": "123"
}
]
}, - {
- "fields": [
- {
- "label": "First Name",
- "value": "Morty"
}, - {
- "label": "Last Name",
- "value": "Smith"
}, - {
- "label": "Certification level",
- "value": "Rescue Diver"
}, - {
- "label": "Certification number",
- "value": "111222333"
}, - {
- "label": "Certification agency",
- "value": "SDI"
}, - {
- "label": "Barcode",
- "value": "456"
}
]
}
]
}
], - "fields": [
- {
- "label": "Special Requirements",
- "value": "Gluten free lunch for Morty"
}
], - "pickupLocation": {
- "locationName": "Divers hotel"
}, - "payments": [
- {
- "amount": 515,
- "type": "CASH",
- "label": "Paid in cash to API specification demo"
}
]
}
Example of creating a booking with API features including pickup, extras, order and participant level booking fields, comments, discount coupon, participant level barcodes
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "booking": {
- "orderNumber": "RSQ6K2F",
- "status": "CONFIRMED",
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "customer": {
- "id": 29769,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "email": "ricksanchez@test.com",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 2
}
], - "totalQuantity": 2,
- "amount": 500,
- "extras": [
- {
- "name": "Underwater camera rental",
- "price": 15,
- "extraPriceType": "ANY",
- "quantity": 1
}
], - "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Barcode",
- "value": "RSQ6K2F*79309"
}, - {
- "label": "Certification level",
- "value": "Open Water"
}, - {
- "label": "Certification number",
- "value": "123456798"
}, - {
- "label": "Certification agency",
- "value": "PADI"
}, - {
- "label": "Barcode",
- "value": "123"
}
]
}, - {
- "fields": [
- {
- "label": "First Name",
- "value": "Morty"
}, - {
- "label": "Last Name",
- "value": "Smith"
}, - {
- "label": "Barcode",
- "value": "RSQ6K2F*79308"
}, - {
- "label": "Certification level",
- "value": "Rescue Diver"
}, - {
- "label": "Certification number",
- "value": "111222333"
}, - {
- "label": "Certification agency",
- "value": "SDI"
}, - {
- "label": "Barcode",
- "value": "456"
}
]
}
], - "subtotal": 515,
- "pickupLocation": {
- "pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 515,
- "totalCurrency": "AUD",
- "totalPaid": 515,
- "totalDue": 0,
- "dateCreated": "2021-09-20T04:56:34Z",
- "dateConfirmed": "2021-09-20T04:56:33.562Z",
- "datePaid": "2021-09-20T04:56:33.562Z",
- "comments": "Here come comments that are visible to you, but not to customers",
- "payments": [
- {
- "type": "CASH",
- "amount": 515,
- "currency": "AUD",
- "date": "2021-09-20T04:56:33.566Z",
- "label": "Paid in cash to API specification demo",
- "recipient": "SUPPLIER"
}
], - "fields": [
- {
- "label": "Barcode",
- "value": "RSQ6K2F"
}, - {
- "label": "Special Requirements",
- "value": "Gluten free lunch for Morty"
}
], - "source": "API",
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
}
Get a quote for a booking. Use this service to validate your Booking object before making the actual booking.
Business rules will be validated, and all amounts and totals will be populated.
It is not a Booking: It does not have any status or booking number. A Quote does not reserve any seat.
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by the system, therefore, even if it is specified in the booking request, it will be overwritten. |
status | string Enum: "PROCESSING" "NEW" "ON_HOLD" "PENDING_SUPPLIER" "PENDING_CUSTOMER" "CONFIRMED" "CANCELLED" "ABANDONED_CART" Status of this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
object (Customer) The customer is the person making the booking, and most of the time paying for it. | |
Array of objects (BookingItemCreate) List of items in this booking. A booking can contain multiple products. Each BookingItem is a separate product with its own set of quantities and participant details. | |
internalNotes | string Comments only visible internally by the supplier |
Array of objects (BookingField) List of custom fields that are required "once per booking" by all the products in 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. Maxiumum number of characters is 30 |
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. |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Example of quote a manual payment booking with minimalistic payload
{- "customer": {
- "firstName": "Rick",
- "lastName": "Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productCode": "PWQF1Y",
- "startTimeLocal": "2025-10-01 09:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "value": 1
}
]
}
], - "pickupLocation": {
- "locationName": "Divers hotel"
}, - "payments": [
- {
- "amount": 250,
- "type": "CASH",
- "label": "Paid in cash to API specification demo company"
}
]
}
Quote booking
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "booking": {
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "resellerId": 13399,
- "resellerName": "API specification demo agent (DO NOT EDIT)",
- "resellerAlias": "apispecificationdemoagentdonotedit",
- "customer": {
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 1
}
], - "totalQuantity": 1,
- "amount": 250,
- "extras": [ ],
- "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level"
}, - {
- "label": "Certification number"
}, - {
- "label": "Certification agency"
}
]
}
], - "subtotal": 250,
- "pickupLocation": {
- "pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 250,
- "totalCurrency": "AUD",
- "totalPaid": 250,
- "totalDue": 0,
- "payments": [
- {
- "type": "CASH",
- "amount": 250,
- "label": "Paid in cash to API specification demo agent",
- "recipient": "RESELLER"
}
], - "fields": [
- {
- "label": "Barcode"
}
], - "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "API",
- "commission": 25,
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
}
Load an existing booking by Order Number
orderNumber required | string Example: R123456 Order number to search |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Get booking RKM1ULT
: https://api.rezdy-staging.com/v1/bookings/RKM1ULT?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "booking": {
- "orderNumber": "RKM1ULT",
- "status": "CONFIRMED",
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "resellerId": 13399,
- "resellerName": "API specification demo agent (DO NOT EDIT)",
- "resellerAlias": "apispecificationdemoagentdonotedit",
- "customer": {
- "id": 29692,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 1
}
], - "totalQuantity": 1,
- "amount": 250,
- "extras": [ ],
- "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level"
}, - {
- "label": "Certification number"
}, - {
- "label": "Certification agency"
}
]
}
], - "subtotal": 250,
- "pickupLocation": {
- "pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 250,
- "totalCurrency": "AUD",
- "totalPaid": 250,
- "totalDue": 0,
- "dateCreated": "2025-09-09T02:14:12Z",
- "dateConfirmed": "2025-09-09T02:14:12Z",
- "datePaid": "2025-09-09T02:14:12Z",
- "payments": [
- {
- "type": "CASH",
- "amount": 250,
- "currency": "AUD",
- "date": "2025-09-09T02:14:12Z",
- "label": "Paid in cash to API specification demo agent",
- "recipient": "RESELLER"
}
], - "fields": [
- {
- "label": "Barcode",
- "value": "RKM1ULT"
}
], - "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "API",
- "sourceChannel": "APISPECIFICATIONDEMOAGENTDONOTEDIT",
- "commission": 25,
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
}
When implementing booking update take into consideration below:
The service method does not support a partial update, full booking object, as it was retrieved from the booking create or search services, has to be send back to the request payload. Otherwise, the properties or relations which are currently supported (see below) and they are not sent, will be deleted. Order of the items in arrays have to be preserved for the following fields 'items', 'participants'.
Currently supported fields are:
For the sample requests provided in the right panel, consider the booking object below being retrieved from a POST order or GET order methods:
{
"requestStatus": {
"success": true,
"version": "v1"
},
"booking": {
"orderNumber": "RSKCJ1K",
"status": "CONFIRMED",
"supplierId": 61,
"supplierName": "SUPPLIER_PREMIUM_AU",
"customer": {
"id": 2,
"firstName": "Dusan",
"lastName": "Zahoransky",
"name": "Dusan Zahoransky",
"email": "sample@test.com"
},
"items": [
{
"productName": "activity i session seats pp adult 100f",
"productCode": "P123456",
"startTime": "2017-01-19T09:00:00Z",
"endTime": "2017-01-19T11:00:00Z",
"startTimeLocal": "2017-01-19 20:00:00",
"endTimeLocal": "2017-01-19 22:00:00",
"quantities": [
{
"optionLabel": "Adult",
"optionPrice": 100,
"value": 1
}
],
"totalQuantity": 1,
"amount": 100,
"extras": [
],
"participants": [
{
"fields": [
{
"label": "First Name",
"value": "Janko",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": false,
"visiblePerBooking": false
},
{
"label": "Last Name",
"value": "Hrasko",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": false,
"visiblePerBooking": false
}
]
}
],
"subtotal": 100,
"vouchers": [
]
}
],
"totalAmount": 100,
"totalCurrency": "AUD",
"totalPaid": 0,
"totalDue": 100,
"dateCreated": "2017-01-19T03:36:18.462Z",
"dateConfirmed": "2017-01-19T03:36:18.462Z",
"payments": [
],
"fields": [
{
"label": "Special Requirements",
"value": "No meat meal option",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": false,
"visiblePerBooking": false
}
],
"source": "API",
"vouchers": [
]
}
}
orderNumber required | string order number of the booking |
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by the system, therefore, even if it is specified in the booking request, it will be overwritten. |
status | string Enum: "PROCESSING" "NEW" "ON_HOLD" "PENDING_SUPPLIER" "PENDING_CUSTOMER" "CONFIRMED" "CANCELLED" "ABANDONED_CART" Status of this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
object (Customer) The customer is the person making the booking, and most of the time paying for it. | |
Array of objects (BookingItemCreate) List of items in this booking. A booking can contain multiple products. Each BookingItem is a separate product with its own set of quantities and participant details. | |
internalNotes | string Comments only visible internally by the supplier |
Array of objects (BookingField) List of custom fields that are required "once per booking" by all the products in 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. Maxiumum number of characters is 30 |
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. |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Update internal info
"TODO"
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "booking": {
- "orderNumber": "string",
- "status": "PROCESSING",
- "supplierId": 0,
- "supplierName": "string",
- "supplierAlias": "string",
- "createdBy": {
- "code": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string"
}, - "resellerId": 0,
- "resellerName": "string",
- "resellerAlias": "string",
- "resellerUser": {
- "code": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string"
}, - "customer": {
- "id": 0,
- "firstName": "string",
- "middleName": "string",
- "lastName": "string",
- "name": "string",
- "email": "string",
- "companyName": "string",
- "phone": "string",
- "mobile": "string",
- "fax": "string",
- "skype": "string",
- "dob": "2019-08-24T14:15:22Z",
- "preferredLanguage": "string",
- "newsletter": true,
- "marketing": true,
- "aboutUs": "string",
- "title": "MR",
- "gender": "MALE",
- "addressLine": "string",
- "addressLine2": "string",
- "postCode": "string",
- "city": "string",
- "state": "string",
- "countryCode": "string"
}, - "items": [
- {
- "productName": "string",
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "quantities": [
- {
- "optionId": 0,
- "optionLabel": "string",
- "optionPrice": 0.1,
- "value": 0
}
], - "totalQuantity": 0,
- "amount": 0.1,
- "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY",
- "quantity": 0,
- "image": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
], - "participants": [
- {
- "fields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
]
}
], - "transferFrom": "string",
- "transferTo": "string",
- "transferReturn": true,
- "subtotal": 0.1,
- "pickupLocation": {
- "locationName": "string",
- "address": "string",
- "latitude": 0.1,
- "longitude": 0.1,
- "minutesPrior": 0,
- "additionalInstructions": "string",
- "pickupTime": "string",
- "pickupInstructions": "string"
}, - "vouchers": [
- {
- "code": "string",
- "status": "ISSUED",
- "internalReference": "string",
- "internalNotes": "string",
- "issueDate": "2019-08-24T14:15:22Z",
- "expiryDate": "2019-08-24T14:15:22Z",
- "value": 0.1,
- "valueType": "VALUE_LIMITPRODUCT",
- "sourceOrder": "string"
}
], - "totalItemTax": 0.1
}
], - "totalAmount": 0.1,
- "totalCurrency": "AED",
- "totalPaid": 0.1,
- "totalDue": 0.1,
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "dateConfirmed": "2019-08-24T14:15:22Z",
- "datePaid": "2019-08-24T14:15:22Z",
- "dateReconciled": "2019-08-24T14:15:22Z",
- "comments": "string",
- "internalNotes": "string",
- "payments": [
- {
- "type": "PAYPAL",
- "amount": 0.1,
- "currency": "AED",
- "date": "2019-08-24T14:15:22Z",
- "label": "string",
- "recipient": "SUPPLIER"
}
], - "creditCard": {
- "cardName": "string",
- "cardType": "VISA",
- "expiryMonth": "string",
- "expiryYear": "string",
- "cardNumber": "string",
- "cardSecurityNumber": "string",
- "cardToken": "string",
- "cardCountry": "string"
}, - "fields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
], - "source": "ONLINE",
- "sourceReferrer": "string",
- "resellerSource": "ONLINE",
- "sourceChannel": "string",
- "resellerComments": "string",
- "surcharge": 0.1,
- "commission": 0.1,
- "vouchers": [
- "string"
], - "coupon": "string",
- "paymentOption": "CREDITCARD",
- "sendNotifications": true,
- "resellerReference": "string",
- "barcodeType": "TEXT"
}
}
Cancel an existing booking and send notifications about the cancellation. In case of an Automated Payment booking, will also refund payment.
orderNumber required | string Example: R123456 Order number to cancel |
sendNotifications | boolean Flag to control if a booking confirmation email should be send to the customer after this booking is canceled. Default (if not specified) is true. |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Get booking RKM1ULT
: https://api.rezdy-staging.com/v1/bookings/RKM1ULT?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "warning": {
- "warningMessage": "This order is already cancelled"
}, - "version": "v1"
}, - "booking": {
- "orderNumber": "RKQ0687",
- "status": "CANCELLED",
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "resellerId": 13399,
- "resellerName": "API specification demo agent (DO NOT EDIT)",
- "resellerAlias": "apispecificationdemoagentdonotedit",
- "customer": {
- "id": 29665,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 1
}
], - "totalQuantity": 1,
- "amount": 250,
- "extras": [ ],
- "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level",
- "value": "Open Water"
}, - {
- "label": "Certification number",
- "value": "123456798"
}, - {
- "label": "Certification agency",
- "value": "PADI"
}
]
}
], - "subtotal": 250,
- "pickupLocation": {
- "locationName": "Divers hotel",
- "address": "Cape Byron, Byron Bay NSW, Australia",
- "pickupTime": "2025-10-01 08:30:00",
- "pickupInstructions": "Please be ready 15 minute before the pickup time in the hotel lobby area.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 250,
- "totalCurrency": "AUD",
- "totalPaid": 250,
- "totalDue": 0,
- "dateCreated": "2025-09-07T00:21:22Z",
- "dateUpdated": "2025-09-09T03:57:02Z",
- "dateConfirmed": "2025-09-07T00:21:22Z",
- "datePaid": "2025-09-07T00:21:22Z",
- "payments": [
- {
- "type": "CASH",
- "amount": 250,
- "currency": "AUD",
- "date": "2025-09-07T00:21:22Z",
- "label": "Paid in cash to API specification demo agent",
- "recipient": "RESELLER"
}
], - "fields": [
- {
- "label": "Barcode",
- "value": "RKQ0687"
}
], - "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "API",
- "sourceChannel": "APISPECIFICATIONDEMOAGENTDONOTEDIT",
- "resellerComments": "Here come agent comments that are visible to both booking agent and supplier",
- "commission": 25,
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
}
Load all categories matching a search string. If the search string is empty, all categories will be returned. This will only return categories that belong to the company identified from the request's apiKey.
search | string String to search for. It will be searched in category name |
visible | boolean Return only public categories if it is set to true, only private if it is set to false, or both if it not set. |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Category) |
Search categories: https://api.rezdy-staging.com/v1/categories?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "categories": [
- {
- "id": 9091,
- "name": "Demo supplier products",
- "description": "",
- "visible": true,
- "image": {
- "id": 22654,
}, - "categorySeoTags": [
- {
- "attrKey": "noindex",
- "attrValue": "0",
- "id": 365,
- "metaType": "NOINDEX",
- "categoryId": 9091
}
]
}
]
}
Load an existing category by Id
categoryId required | integer <int64> Category ID |
required | object (RequestStatus) |
object (Category) A Category is used to group products |
Get category 9091
: https://api.rezdy-staging.com/v1/categories/9091?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "category": {
- "id": 9091,
- "name": "Demo supplier products",
- "description": "",
- "visible": true,
- "image": {
- "id": 22654,
}, - "categorySeoTags": [
- {
- "attrKey": "noindex",
- "attrValue": "0",
- "id": 365,
- "metaType": "NOINDEX",
- "categoryId": 9091
}
]
}
}
Load all products within a category.
categoryId required | integer <int64> The category id. |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Product) |
List category 9091
products: https://api.rezdy-staging.com/v1/categories/9091/products?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "products": [
- {
- "productType": "TICKET",
- "name": "National Park pass",
- "shortDescription": "National park multiday pass",
- "description": "National park multiday entry pass, which can be used any time within 2 years from the purchase date for a single entry.",
- "productCode": "P00TNX",
- "internalCode": "TICKET",
- "supplierId": 13398,
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "timezone": "Australia/Sydney",
- "advertisedPrice": 15,
- "priceOptions": [
- {
- "price": 30,
- "label": "Adult",
- "id": 929162,
- "seatsUsed": 1,
- "productCode": "P00TNX"
}, - {
- "price": 15,
- "label": "Child",
- "id": 929161,
- "seatsUsed": 1,
- "productCode": "P00TNX"
}
], - "currency": "AUD",
- "unitLabel": "Participant",
- "unitLabelPlural": "Participants",
- "quantityRequired": true,
- "quantityRequiredMin": 1,
- "images": [
- {
- "id": 22654,
}, - {
- "id": 22655,
}, - {
- "id": 22656,
}, - {
- "id": 22658,
}
], - "bookingMode": "NO_DATE",
- "charter": false,
- "terms": "",
- "bookingFields": [
- {
- "label": "First Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Last Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Mobile",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "Phone"
}, - {
- "label": "Email",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Country",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "List"
}, - {
- "label": "Special Requirements",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}
], - "latitude": 28.2062873,
- "longitude": 85.62292959999999,
- "confirmMode": "AUTOCONFIRM",
- "confirmModeMinParticipants": 0,
- "commissionIncludesExtras": false,
- "cancellationPolicyDays": 7,
- "dateCreated": "2025-08-31T00:17:05Z",
- "minimumNoticeMinutes": 0,
- "durationMinutes": 1440,
- "dateUpdated": "2025-08-31T01:02:28Z",
- "locationAddress": {
- "addressLine": "Langtang valley",
- "postCode": "",
- "city": "",
- "state": "",
- "countryCode": "np",
- "latitude": 28.2062873,
- "longitude": 85.62292959999999
}, - "languages": [
- "en_au"
], - "waitListingEnabled": false,
- "barcodeOutputType": "ORDER",
- "isApiBookingSupported": true
}, - {
- "productType": "ACTIVITY",
- "name": "Double dive with sharks",
- "shortDescription": "Double dive with grey nurse or leopard sharks, depending on the season.",
- "description": "Double dive with grey nurse or leopard sharks, depending on the season. Boat dive with a snack provided during the break between the dives. The dive site is suitable for open water divers.",
- "productCode": "PWQF1Y",
- "internalCode": "DIVING",
- "supplierId": 13398,
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "timezone": "Australia/Sydney",
- "advertisedPrice": 200,
- "priceOptions": [
- {
- "price": 250,
- "label": "Adult",
- "id": 929159,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}, - {
- "price": 200,
- "label": "Student",
- "id": 929160,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}
], - "currency": "AUD",
- "unitLabel": "Participant",
- "unitLabelPlural": "Participants",
- "quantityRequired": true,
- "quantityRequiredMin": 1,
- "quantityRequiredMax": 50,
- "images": [
- {
- "id": 22650,
}, - {
- "id": 22651,
}, - {
- "id": 22652,
}, - {
- "id": 22653,
}
], - "bookingMode": "INVENTORY",
- "charter": false,
- "terms": "",
- "bookingFields": [
- {
- "label": "First Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Last Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Mobile",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "Phone"
}, - {
- "label": "Email",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Special Requirements",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Certification level",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "fieldType": "String"
}, - {
- "label": "Certification number",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "fieldType": "String"
}, - {
- "label": "Certification agency",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "listOptions": "PADI\r\nSSI\r\nSDI",
- "fieldType": "List"
}
], - "latitude": -28.6113488,
- "longitude": 153.629085,
- "confirmMode": "AUTOCONFIRM",
- "confirmModeMinParticipants": 0,
- "commissionIncludesExtras": false,
- "cancellationPolicyDays": 7,
- "dateCreated": "2025-08-30T23:49:55Z",
- "minimumNoticeMinutes": 1440,
- "durationMinutes": 180,
- "dateUpdated": "2025-08-31T00:12:33Z",
- "pickupId": 475,
- "locationAddress": {
- "addressLine": "Julien rocks",
- "postCode": "",
- "city": "Byron Bay",
- "state": "",
- "countryCode": "au",
- "latitude": -28.6113488,
- "longitude": 153.629085
}, - "languages": [
- "en_au"
], - "waitListingEnabled": false,
- "barcodeOutputType": "ORDER",
- "isApiBookingSupported": true
}
]
}
Adds a product to an existing category
categoryId required | integer <int64> |
productCode required | string |
required | object (RequestStatus) |
object (Rate) A Rate is used to group products with its corresponding shared rate |
Add product P00TNX
to category 9091
responds with category products, or 406 status if product already is in this category: PUT https://api.rezdy-staging.com/v1/categories/9091/products/P00TNX?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "rate": {
- "rateId": 9091,
- "name": "Demo supplier products",
- "productRates": [
- {
- "productCode": "PWQF1Y"
}, - {
- "productCode": "P00TNX"
}
]
}
}
Removes a product from an existing category
categoryId required | integer <int64> |
productCode required | string |
required | object (RequestStatus) |
object (Rate) A Rate is used to group products with its corresponding shared rate |
Remove product P00TNX
from category 9091
, responds with remaining category products: DELETE https://api.rezdy-staging.com/v1/categories/9091/products/P00TNX?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "rate": {
- "rateId": 9091,
- "name": "Demo supplier products",
- "productRates": [
- {
- "productCode": "PWQF1Y"
}
]
}
}
Search customers in your account
search | string String to search for. It will be searched in First & Last name, company name and email. |
limit | integer <int32> How many results are returned per request. Maximum is 100, which also a default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Customer) |
Search customers with name 'Rick Sanchez': https://api.rezdy-staging.com/v1/customers?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5&search=Rick Sanchez
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "customers": [
- {
- "id": 29647,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}
]
}
Create a new customer
id | integer <int64> Rezdy internal ID of the customer |
firstName | string First name |
middleName | string Middle name |
lastName | string Last Name |
name | string Full name - generated from first/middle/last names |
string | |
companyName | string Company name |
phone | string Preferred Phone number |
mobile | string Mobile phone number |
fax | string Fax number |
skype | string Skype alias |
dob | string <date-time> Date of birth |
preferredLanguage | string Preferred language. Should be a 2 letter ISO country code |
newsletter | boolean Subscribe to the newsletter |
marketing | boolean Agree to receive marketing emails |
aboutUs | string How did you hear about us? |
title | string Enum: "MR" "MS" "MRS" "MISS" Title |
gender | string Enum: "MALE" "FEMALE" Gender: MALE or FEMALE |
addressLine | string Address |
addressLine2 | string Extended Address |
postCode | string Postcode / ZIP |
city | string City/Town/Suburb |
state | string State/County/Region |
countryCode | string 2 letter ISO country code |
required | object (RequestStatus) |
object (Customer) The customer is the person making the booking, and most of the time paying for it. |
Create a new customer
{- "email": "morthysmith@test.com",
- "firstName": "Morty",
- "lastName": "Smith",
- "mobile": "+6148123456"
}
Create customer
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "customer": {
- "id": 29705,
- "firstName": "Morty",
- "lastName": "Smith",
- "name": "Morty Smith",
- "email": "morthysmith@test.com",
- "mobile": "+6148123456"
}
}
Load an existing customer by Id
customerId required | integer <int64> Id to search for |
required | object (RequestStatus) |
object (Customer) The customer is the person making the booking, and most of the time paying for it. |
Get customer: https://api.rezdy-staging.com/v1/customers/29705?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "customer": {
- "id": 29705,
- "firstName": "Morty",
- "lastName": "Smith",
- "name": "Morty Smith",
- "email": "morthysmith@test.com",
- "mobile": "+6148123456"
}
}
Delete a customer
customerId required | string Customer Id to delete |
required | object (RequestStatus) |
Delete customer: DELETE https://api.rezdy-staging.com/v1/customers/29705?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}
}
Load an existing Company by it's alias in Rezdy. Company alias is not a permanent identifier and can change over time.
companyAlias required | string Company alias to search for |
required | object (RequestStatus) |
object (Company) Company object. Holds general details and information about a specific company. |
Get company 'API specification demo supplier' by their alias: https://api.rezdy-staging.com/v1/companies/apispecificationdemosupplierdonotedit?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "companies": [
- {
- "alias": "apispecificationdemosupplierdonotedit",
- "companyName": "API specification demo supplier (DO NOT EDIT)",
- "firstName": "Dusan",
- "lastName": "Zahoransky",
- "address": {
- "addressLine": "123 CommonwWealth Street",
- "postCode": "2000",
- "city": "Sydney",
- "state": "NSW",
- "countryCode": "au",
- "latitude": -33.880562,
- "longitude": 151.2106793
}, - "destinationName": "Sydney",
- "destinationCountryCode": "au",
- "destinationPath": "South Pacific,Australia,New South Wales,Sydney",
- "currency": "AUD",
- "locale": "en_au",
- "timezone": "Australia/Sydney",
- "category": "Eco-Tours",
- "companyDescription": "Rezdy API demo supplier.",
- "phone": "+61484123456",
- "mobile": "+61484123456",
- "fax": "",
- "skype": "",
- "openingHours": "08:00 - 17:00",
- "facebookPage": "",
- "yelp": "",
- "instagram": "",
- "pinterest": "",
- "youtubeChannel": "",
- "tripAdvisor": "",
- "twitter": "",
- "website": "",
- "bookingSystem": "rezdy.com"
}
]
}
Load an existing Company by it's name in Rezdy. Company name must be given in full name.
companyName required | string Company name to search for |
required | object (RequestStatus) |
object (Company) Company object. Holds general details and information about a specific company. |
Get company 'API specification demo supplier (DO NOT EDIT)' by their name: https://api.rezdy-staging.com/v1/companies/name/API%20specification%20demo%20supplier?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "companies": [
- {
- "alias": "apispecificationdemosupplierdonotedit",
- "companyName": "API specification demo supplier (DO NOT EDIT)",
- "firstName": "Dusan",
- "lastName": "Zahoransky",
- "address": {
- "addressLine": "123 CommonwWealth Street",
- "postCode": "2000",
- "city": "Sydney",
- "state": "NSW",
- "countryCode": "au",
- "latitude": -33.880562,
- "longitude": 151.2106793
}, - "destinationName": "Sydney",
- "destinationCountryCode": "au",
- "destinationPath": "South Pacific,Australia,New South Wales,Sydney",
- "currency": "AUD",
- "locale": "en_au",
- "timezone": "Australia/Sydney",
- "category": "Eco-Tours",
- "companyDescription": "Rezdy API demo supplier.",
- "phone": "+61484123456",
- "mobile": "+61484123456",
- "fax": "",
- "skype": "",
- "openingHours": "08:00 - 17:00",
- "facebookPage": "",
- "yelp": "",
- "instagram": "",
- "pinterest": "",
- "youtubeChannel": "",
- "tripAdvisor": "",
- "twitter": "",
- "website": "",
- "bookingSystem": "rezdy.com"
}
]
}
This service returns availability information for a specific date range. The service response contains a list of sessions, including their availability and pricing details.
Pricing in the session can be different than the pricing of the products, in a case of a dynamic pricing when a supplier overrides a price for a specific session or a ticket type.
In case of multiple products sharing this session, a session will contain price overrides for all of the shared products. Therefore it is necessary to filer only the price options matching the chosen product code on the client side, when displaying available price options to a customer.
productCode required | Array of strings unique Example: productCode=P12345 Product code in format P12345. You can request multiple products |
startTime | string Example: startTime=2014-03-01T00:00:00Z Start time in |
endTime | string Example: endTime=2014-03-01T00:00:00Z End time in |
startTimeLocal | string Start time in supplier's local timezone, format is |
endTimeLocal | string End time in supplier's local timezone, format is |
minAvailability | integer <int32> only load availability for that quantity |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Session) |
Get 2 days of product PWQF1Y
availability: https://api.rezdy-staging.com/v1/availability?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5&productCode=PWQF1Y&startTimeLocal=2025-10-01 00:00:00&endTimeLocal=2025-10-03 00:00:00
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "sessions": [
- {
- "id": 2788078,
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "allDay": false,
- "seats": 50,
- "seatsAvailable": 50,
- "priceOptions": [
- {
- "price": 250,
- "label": "Adult",
- "id": 929159,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}, - {
- "price": 200,
- "label": "Student",
- "id": 929160,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}
]
}, - {
- "id": 2788381,
- "productCode": "PWQF1Y",
- "startTime": "2025-10-01T23:00:00Z",
- "endTime": "2025-10-02T02:00:00Z",
- "startTimeLocal": "2025-10-02 09:00:00",
- "endTimeLocal": "2025-10-02 12:00:00",
- "allDay": false,
- "seats": 50,
- "seatsAvailable": 50,
- "priceOptions": [
- {
- "price": 250,
- "label": "Adult",
- "id": 929159,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}, - {
- "price": 200,
- "label": "Student",
- "id": 929160,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}
]
}
]
}
Create a new session - creates availability for a specific startTime. Sessions can be created only for INVENTORY mode
products.
The endTime, if not specified, will be calculated based on selected product default duration, and the current product
price options will be used (if not specified). Does not support resources yet
Response is the newly created Session
productCode required | string Rezdy unique productCode linked to this session |
startTime | string <date-time> Start Time of this session. This time should be used when showing customers the booking date/time. It should be sent in BookingItem.startTime when making new bookings |
endTime | string <date-time> End time of this session. Used to show the customer how long that tour will last |
startTimeLocal | string Start Time of this session in supplier's local timezone. This time should be used when showing customers the booking date/time. It should be sent in BookingItem.startTimeLocal when making new bookings |
endTimeLocal | string End time of this session in supplier's local timezone. Used to show the customer how long that tour will last |
seats required | integer <int32> Total number of seats for this session. Does not change after a booking is made |
Array of objects (PriceOption) List of price options attached to this session. Most of the time they'll match the product's price options, but they can be used to change the price of specific dates/times (I.e. high/low season, weekday/weekend, etc.) | |
allDay | boolean If true, this session lasts all day and no time should be shown to customers. Technically the session will be from midnight to midnight. |
required | object (RequestStatus) |
object (Session) A Session holds availability for a unique product / start time combination and also the rates for the session booking. |
create a session
{- "productCode": "PWQF1Y",
- "startTimeLocal": "2026-11-01 14:00:00",
- "seats": 10,
- "priceOptions": [
- {
- "price": 199,
- "label": "Adult"
}
]
}
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "session": {
- "id": 0,
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "allDay": true,
- "seats": 0,
- "seatsAvailable": 0,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
]
}
}
Batch Update availability for a specific product and time period.
This will update availability for all the sessions that start in that time range.
Product code is optional, all sessions for all products will be updated if it is empty.
You can use this service to blackout periods (I.e. set availability to 0 for a full day).
Maximum range is one week.
This can only update sessions from products with InventoryMode = SESSION_SEATS.
{
startTime: 2014-11-11T00:00:00Z,
endTime: 2014-11-11T23:59:59Z,
productCode: P123456,
seatsAvailable: 0
}
OR
{
startTime: 2014-11-11T00:00:00Z,
endTime: 2014-11-11T23:59:59Z,
productCode: P123456,
seats: 30
}
OR
{
startTime: 2014-11-11T00:00:00Z,
endTime: 2014-11-11T23:59:59Z,
productCode: P123456,
priceOptions: [
{
price: 90,
label: Adult
}
]
}
If you send seatsAvailable
, sessions will be updated for the current availability to become this number.
If you send seats
, the total seats capacity of sessions will be updated, regardless of how many are already booked.
If you send both, only seatsAvailable
will be used.
If you send priceOptions, they will override the default price options of the existing session.
seats | integer <int32> Update the total number of seats for this session. The total seats does not change after a booking is made. The total number of seats can not be less than 0. |
Array of objects (PriceOption) List of price options, which will override the product level price. Price options have to be a subset of the product price options, thus you can not create new price options, use product update service to do so. | |
seatsAvailable | integer <int32> Update the current availability for this session. The session total number of seats after updating the seats available can not be less than 0. |
allDay | boolean If true, this session lasts all day and no time should be shown to customers. Technically the session will be from midnight to midnight. |
productCode required | string Rezdy unique productCode linked to this session |
startTime | string <date-time> Batch update start interval |
endTime | string <date-time> Batch update end interval |
startTimeLocal | string Batch update start interval in supplier's local timezone. |
endTimeLocal | string Batch update end interval in supplier's local timezone. |
required | object (RequestStatus) |
Array of objects (Session) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "sessions": [
- {
- "id": 0,
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "allDay": true,
- "seats": 0,
- "seatsAvailable": 0,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
]
}
]
}
Update availability a session starting at a specific local date time
startTimeLocal required | string Session to update local start time |
productCode required | string Product session |
seats | integer <int32> Update the total number of seats for this session. The total seats does not change after a booking is made. The total number of seats can not be less than 0. |
Array of objects (PriceOption) List of price options, which will override the product level price. Price options have to be a subset of the product price options, thus you can not create new price options, use product update service to do so. | |
seatsAvailable | integer <int32> Update the current availability for this session. The session total number of seats after updating the seats available can not be less than 0. |
allDay | boolean If true, this session lasts all day and no time should be shown to customers. Technically the session will be from midnight to midnight. |
required | object (RequestStatus) |
object (Session) A Session holds availability for a unique product / start time combination and also the rates for the session booking. |
update seats available
{- "seatsAvailable": 5
}
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "session": {
- "id": 0,
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "allDay": true,
- "seats": 0,
- "seatsAvailable": 0,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
]
}
}
Delete a single session starting at a specific local date time
startTimeLocal required | string Session to delete local start time |
productCode required | string Product session |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Searches a product that matches a search string.
Load all products matching a search string. If the search string is empty, all your products will be returned.
Use this service when acting as a supplier, to load your own products.
If you're acting as an agent, use the /products/marketplace service
search | string search String to search for. It will be searched in product name, product code and internal code. |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Product) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "products": [
- {
- "productType": "ACTIVITY",
- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "productCode": "string",
- "internalCode": "string",
- "supplierId": 0,
- "supplierAlias": "string",
- "supplierName": "string",
- "timezone": "string",
- "advertisedPrice": 0.1,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
], - "currency": "AED",
- "unitLabel": "string",
- "unitLabelPlural": "string",
- "quantityRequired": true,
- "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "images": [
- {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
], - "videos": [
- {
- "id": "string",
- "platform": "string",
- "url": "string"
}
], - "bookingMode": "NO_DATE",
- "charter": true,
- "terms": "string",
- "generalTerms": "string",
- "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY",
- "quantity": 0,
- "image": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
], - "bookingFields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
], - "xeroAccount": "string",
- "confirmMode": "MANUAL",
- "confirmModeMinParticipants": 0,
- "agentPaymentType": "PAYOUTS",
- "maxCommissionPercent": 0.1,
- "maxCommissionNetRate": 0.1,
- "commissionIncludesExtras": true,
- "cancellationPolicyDays": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "minimumNoticeMinutes": 0,
- "durationMinutes": 0,
- "dateUpdated": "2019-08-24T14:15:22Z",
- "pickupId": 0,
- "locationAddress": {
- "addressLine": "string",
- "addressLine2": "string",
- "postCode": "string",
- "city": "string",
- "state": "string",
- "countryCode": "string",
- "latitude": 0.1,
- "longitude": 0.1
}, - "additionalInformation": "string",
- "languages": [
- "string"
], - "tags": [
- "string"
], - "taxes": [
- {
- "supplierId": 0,
- "label": "string",
- "taxFeeType": "TAX",
- "taxType": "PERCENT",
- "taxPercent": 0.1,
- "taxAmount": 0.1,
- "priceInclusive": true,
- "compound": true
}
], - "productSeoTags": [
- {
- "id": 0,
- "metaType": "META_NAME",
- "attrKey": "string",
- "attrValue": "string",
- "productCode": "string"
}
], - "waitListingEnabled": true,
- "qrCodeType": "INTERNAL",
- "barcodeOutputType": "PARTICIPANT",
- "bookingUrl": "string",
- "apiBookingSupported": true,
- "multiProductBookingSupported": true
}
]
}
name required | string Product name |
shortDescription required | string Product description is between 15 and 240 characters. |
description required | string Long product description, is between 100 and 15000 characters. |
advertisedPrice | number <float> General price indication for this product. It represents a display price only, therefore it does not affect a real booking price, which is calculated based on the price options. |
terms | string Specific terms and conditions for this product. |
required | Array of objects (BookingFieldCreate) List of booking fields required for this product. |
productType required | string Enum: "ACTIVITY" "DAYTOUR" "MULTIDAYTOUR" "PRIVATE_TOUR" "TICKET" "RENTAL" "CHARTER" "EVENT" "GIFT_CARD" "TRANSFER" "LESSON" "MERCHANDISE" "CUSTOM" Type of this product. |
internalCode | string Supplier-defined product code, used internally by the supplier. |
required | Array of objects (PriceOptionCreate) List of price options belonging to this product. |
unitLabel required | string What a quantity for this product is. It can be people (I.e. participant, passenger, diver) or objects (Kayak, Helicopter, etc.) |
unitLabelPlural required | string Plural version of unitLabel. |
quantityRequired | boolean Does this product require a quantity to be booked? True for most products. Can be false if the supplier can only provide one quantity at any single time (I.e. private charters) or a price of a booking is fixed regardless of quantity |
quantityRequiredMin | integer <int32> Represent the min booking quantity for the product. It can be setup for a supplier product. For a successful booking of the product, the total number of participants (regardless of pricing options), per booking item in the booking request, have to be greater or equal than this value. |
quantityRequiredMax | integer <int32> Represent the max booking quantity for the product. It can be setup for a supplier product. For a successful booking of the product, the total number of participants (regardless of pricing options), per booking item in the booking request, have to be lesser or equal than this value. |
bookingMode required | string Enum: "NO_DATE" "DATE_ENQUIRY" "INVENTORY" Booking mode. Determines if this product needs availability or can be booked for any date. |
charter | boolean A charter product means each session can only have a single booking, whatever the number of seats booked. |
xeroAccount | string Supplier Xero account for this product. |
confirmMode required | string Enum: "MANUAL" "AUTOCONFIRM" "MANUAL_THEN_AUTO" "AUTO_THEN_MANUAL" Confirmation mode. Determines if bookings are automatically confirmed or it they are pending. |
confirmModeMinParticipants | integer <int32> If confirmMode is MANUAL_THEN_AUTO or AUTO_THEN_MANUAL, determines the minimum number of participants per booking to trigger the change. |
minimumNoticeMinutes | integer <int64> Minimum book ahead interval for he product in minutes. |
durationMinutes required | integer <int64> Duration of the product in minutes. |
pickupId | integer <int64> If pickups are configured for this product, the field will contain the id of the pickup location list created by the supplier. |
object (Address) Address of a company, customer or product location. | |
additionalInformation | string Additional information for the product, that should be sent after a booking is completed (i.e. by email) to the customer. Useful for integration, when manual control of the entire customer booking experience is wanted, and the automatic confirmation e-mail from Rezdy had been suppressed. |
languages | Array of strings unique List of product languages. The format of the language is ISO 639 two-letter code with BCP 47 language variants, separated by underscore e.g. en_au. |
Array of objects (Extra) unique List of extras IDs. | |
barcodeOutputType | string Enum: "PARTICIPANT" "ORDER" Specifies how to output the barcodes when this product is booked. Valid types are: |
required | object (RequestStatus) |
object (Product) Product object. Holds general details and settings of a specific tour, activity or event. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "product": {
- "productType": "ACTIVITY",
- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "productCode": "string",
- "internalCode": "string",
- "supplierId": 0,
- "supplierAlias": "string",
- "supplierName": "string",
- "timezone": "string",
- "advertisedPrice": 0.1,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
], - "currency": "AED",
- "unitLabel": "string",
- "unitLabelPlural": "string",
- "quantityRequired": true,
- "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "images": [
- {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
], - "videos": [
- {
- "id": "string",
- "platform": "string",
- "url": "string"
}
], - "bookingMode": "NO_DATE",
- "charter": true,
- "terms": "string",
- "generalTerms": "string",
- "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY",
- "quantity": 0,
- "image": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
], - "bookingFields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
], - "xeroAccount": "string",
- "confirmMode": "MANUAL",
- "confirmModeMinParticipants": 0,
- "agentPaymentType": "PAYOUTS",
- "maxCommissionPercent": 0.1,
- "maxCommissionNetRate": 0.1,
- "commissionIncludesExtras": true,
- "cancellationPolicyDays": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "minimumNoticeMinutes": 0,
- "durationMinutes": 0,
- "dateUpdated": "2019-08-24T14:15:22Z",
- "pickupId": 0,
- "locationAddress": {
- "addressLine": "string",
- "addressLine2": "string",
- "postCode": "string",
- "city": "string",
- "state": "string",
- "countryCode": "string",
- "latitude": 0.1,
- "longitude": 0.1
}, - "additionalInformation": "string",
- "languages": [
- "string"
], - "tags": [
- "string"
], - "taxes": [
- {
- "supplierId": 0,
- "label": "string",
- "taxFeeType": "TAX",
- "taxType": "PERCENT",
- "taxPercent": 0.1,
- "taxAmount": 0.1,
- "priceInclusive": true,
- "compound": true
}
], - "productSeoTags": [
- {
- "id": 0,
- "metaType": "META_NAME",
- "attrKey": "string",
- "attrValue": "string",
- "productCode": "string"
}
], - "waitListingEnabled": true,
- "qrCodeType": "INTERNAL",
- "barcodeOutputType": "PARTICIPANT",
- "bookingUrl": "string",
- "apiBookingSupported": true,
- "multiProductBookingSupported": true
}
}
Load an existing product by Product Code
productCode required | string Example: P12345 Product Code to search for |
required | object (RequestStatus) |
object (Product) Product object. Holds general details and settings of a specific tour, activity or event. |
Product PWQF1Y
details https://api.rezdy-staging.com/v1/products/PWQF1Y?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "product": {
- "productType": "ACTIVITY",
- "name": "Double dive with sharks",
- "shortDescription": "Double dive with grey nurse or leopard sharks, depending on the season.",
- "description": "Double dive with grey nurse or leopard sharks, depending on the season. Boat dive with a snack provided during the break between the dives. The dive site is suitable for open water divers.",
- "productCode": "PWQF1Y",
- "internalCode": "DIVING",
- "supplierId": 13398,
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "timezone": "Australia/Sydney",
- "advertisedPrice": 200,
- "priceOptions": [
- {
- "price": 250,
- "label": "Adult",
- "id": 929159,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}, - {
- "price": 200,
- "label": "Student",
- "id": 929160,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}
], - "currency": "AUD",
- "unitLabel": "Participant",
- "unitLabelPlural": "Participants",
- "quantityRequired": true,
- "quantityRequiredMin": 1,
- "quantityRequiredMax": 50,
- "images": [
- {
- "id": 22650,
}, - {
- "id": 22651,
}, - {
- "id": 22652,
}, - {
- "id": 22653,
}
], - "videos": [ ],
- "bookingMode": "INVENTORY",
- "charter": false,
- "terms": "",
- "extras": [
- {
- "name": "Underwater camera rental",
- "description": "An underwater camera rental for the dive. Choice of GoPro or Nikon Coolpix AW130. Select the number of cameras up to the number of participants, that you would like to rent for this booking.",
- "price": 15,
- "extraPriceType": "ANY"
}
], - "bookingFields": [
- {
- "label": "First Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Last Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Mobile",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "Phone"
}, - {
- "label": "Email",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Special Requirements",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Certification level",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "fieldType": "String"
}, - {
- "label": "Certification number",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "fieldType": "String"
}, - {
- "label": "Certification agency",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "listOptions": "PADI\r\nSSI\r\nSDI",
- "fieldType": "List"
}
], - "latitude": -28.6113488,
- "longitude": 153.629085,
- "confirmMode": "AUTOCONFIRM",
- "confirmModeMinParticipants": 0,
- "agentPaymentType": "FULL_AGENT",
- "maxCommissionPercent": 10,
- "commissionIncludesExtras": true,
- "dateCreated": "2021-08-30T23:49:55Z",
- "minimumNoticeMinutes": 1440,
- "durationMinutes": 180,
- "dateUpdated": "2021-09-13T04:13:35Z",
- "pickupId": 475,
- "locationAddress": {
- "addressLine": "Julien rocks",
- "postCode": "",
- "city": "Byron Bay",
- "state": "",
- "countryCode": "au",
- "latitude": -28.6113488,
- "longitude": 153.629085
}, - "languages": [
- "en_au"
], - "tags": [
- "TYPE:Activity"
], - "waitListingEnabled": false,
- "isApiBookingSupported": true
}
}
Updates a product.
When updating price options, the full list of existing price options must be supplied in the update. Otherwise the system will remove any missing price options in the request from the product.
For instance, if a product has 2 price options Adult and Child but the update request only contains Adult, the Child price option will be removed from the product.
Adding a price option works the same way. If the update request contains an extra price option, it will be added to the product.
When price option values are updated via API, this will override all existing price in availability (session) to reflect the product price.
If a different price in calendar/session is required to the product price, please make the changes to the product directly in your Rezdy account and select do not change session price
in the page that follows after saving your changes.,
productCode required | string product's product code to be updated |
name | string Product name |
shortDescription required | string Product description is between 15 and 240 characters. |
description required | string Long product description, is between 100 and 15000 characters. |
advertisedPrice | number <float> General price indication for this product. It represents a display price only, therefore it does not affect a real booking price, which is calculated based on the price options. |
terms | string Specific terms and conditions for this product. |
confirmMode required | string Enum: "MANUAL" "AUTOCONFIRM" "MANUAL_THEN_AUTO" "AUTO_THEN_MANUAL" Confirmation mode. Determines if bookings are automatically confirmed or it they are pending. |
confirmModeMinParticipants | integer <int32> If confirmMode is MANUAL_THEN_AUTO or AUTO_THEN_MANUAL, determines the minimum number of participants per booking to trigger the change. |
minimumNoticeMinutes | integer <int64> Minimum book ahead interval for he product in minutes. |
durationMinutes | integer <int64> Duration of the product in minutes. |
pickupId | integer <int64> Pickup ID for this product. |
required | Array of objects (BookingFieldCreate) List of booking fields required for this product. |
Array of objects (PriceOptionCreate) List of price options for this product. | |
internalCode | string Supplier-defined product code, used internally by the supplier. |
barcodeOutputType | string Enum: "PARTICIPANT" "ORDER" Specifies how to output the barcodes when this product is booked. Valid types are: |
required | object (RequestStatus) |
object (Product) Product object. Holds general details and settings of a specific tour, activity or event. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "product": {
- "productType": "ACTIVITY",
- "name": "string",
- "shortDescription": "string",
- "description": "string",
- "productCode": "string",
- "internalCode": "string",
- "supplierId": 0,
- "supplierAlias": "string",
- "supplierName": "string",
- "timezone": "string",
- "advertisedPrice": 0.1,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
], - "currency": "AED",
- "unitLabel": "string",
- "unitLabelPlural": "string",
- "quantityRequired": true,
- "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "images": [
- {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
], - "videos": [
- {
- "id": "string",
- "platform": "string",
- "url": "string"
}
], - "bookingMode": "NO_DATE",
- "charter": true,
- "terms": "string",
- "generalTerms": "string",
- "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY",
- "quantity": 0,
- "image": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
], - "bookingFields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
], - "xeroAccount": "string",
- "confirmMode": "MANUAL",
- "confirmModeMinParticipants": 0,
- "agentPaymentType": "PAYOUTS",
- "maxCommissionPercent": 0.1,
- "maxCommissionNetRate": 0.1,
- "commissionIncludesExtras": true,
- "cancellationPolicyDays": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "minimumNoticeMinutes": 0,
- "durationMinutes": 0,
- "dateUpdated": "2019-08-24T14:15:22Z",
- "pickupId": 0,
- "locationAddress": {
- "addressLine": "string",
- "addressLine2": "string",
- "postCode": "string",
- "city": "string",
- "state": "string",
- "countryCode": "string",
- "latitude": 0.1,
- "longitude": 0.1
}, - "additionalInformation": "string",
- "languages": [
- "string"
], - "tags": [
- "string"
], - "taxes": [
- {
- "supplierId": 0,
- "label": "string",
- "taxFeeType": "TAX",
- "taxType": "PERCENT",
- "taxPercent": 0.1,
- "taxAmount": 0.1,
- "priceInclusive": true,
- "compound": true
}
], - "productSeoTags": [
- {
- "id": 0,
- "metaType": "META_NAME",
- "attrKey": "string",
- "attrValue": "string",
- "productCode": "string"
}
], - "waitListingEnabled": true,
- "qrCodeType": "INTERNAL",
- "barcodeOutputType": "PARTICIPANT",
- "bookingUrl": "string",
- "apiBookingSupported": true,
- "multiProductBookingSupported": true
}
}
Deletes a product.
productCode required | string product's product code to be deleted |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
First, a product has to be created usingPOST /products
, the response contain a product object upon a successful creation. Use the product code to for the add/delete images URLs.
Use a standard file upload request (multipart form data) with a file attachment, parameter name is file
as the call payload, and also a mandatory filename. If you have multiple images, you need to make one separate call for each image.
A successful response contains generated image URLs including different image dimension and the image Id. Use the image Id to delete the image, if you want to remove it from the product.
File has to be specified either in the attachment, part of the form-data parameter 'file', or in the attachment, as a form-data parameter 'filename', which is common format for PHP frameworks, which are sending an array of attachments.
Request:
POST https://api.rezdy.com/latest/products/P12345/images?apiKey=123456789XYZ
content-type=[multipart/form-data; boundary=----WebKitFormBoundarymDtt4W0lhmAsKFkZ]
------WebKitFormBoundarymDtt4W0lhmAsKFkZ
Content-Disposition: form-data; name="file"; filename="myImage.png"
Content-Type: image/png
...
IMAGE BINARY DATA
...
------WebKitFormBoundarymDtt4W0lhmAsKFkZ--
productCode required | string product to add the image to |
file required | object Image file to be uploaded |
filename | string Optional image name override |
required | object (RequestStatus) |
object (Image) Image links. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "img": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
Removes product Image. Filename is mandatory. It has to be specified either in the attachment, part of the form-data parameter 'file', or in the attachment, as a form-data parameter 'filename', which is common format for PHP frameworks, which are sending an array of attachments.
productCode required | string product's product code for the image to be uploaded to |
mediaId required | integer <int64> image's id to be uploaded |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Gets a list of pickup locations configured for this product.
productCode required | string Example: P12345 productCode Product Code to search for |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (PickupLocation) |
Product's PWQF1Y
(Double dive with sharks) pickups: https://api.rezdy-staging.com/v1/products/PWQF1Y/pickups?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "pickupLocations": [
- {
- "locationName": "Divers hotel",
- "address": "Cape Byron, Byron Bay NSW, Australia",
- "latitude": -28.6473671,
- "longitude": 153.601977,
- "minutesPrior": 30,
- "additionalInstructions": "Please be ready 15 minute before the pickup time in the hotel lobby area."
}, - {
- "locationName": "Seaside hostel",
- "address": "Main Beach, Byron Bay NSW, Australia",
- "latitude": -28.6412831,
- "longitude": 153.6166691,
- "minutesPrior": 20,
- "additionalInstructions": "Please be ready 15 minute before the pickup time in front of the hostel."
}
]
}
Searches rates based on rate name and product code. If rateName and productCode are not specified, then it will return all rates belonging to the supplier
rateName | string Rate name |
productCode | string Product's product code |
required | object (RequestStatus) |
Array of objects (Rate) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "rates": [
- {
- "rateId": 0,
- "name": "string",
- "productRates": [
- {
- "productCode": "string",
- "commissionType": "NET_RATE",
- "percentageCommission": 0.1,
- "percentageIncludeExtras": true,
- "netRates": [
- {
- "priceOptionLabel": "string",
- "netPrice": 0.1
}
]
}
]
}
]
}
Retrieves a rate based on its ID
rateId required | integer <int64> Rate ID |
required | object (RequestStatus) |
object (Rate) A Rate is used to group products with its corresponding shared rate |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "rate": {
- "rateId": 0,
- "name": "string",
- "productRates": [
- {
- "productCode": "string",
- "commissionType": "NET_RATE",
- "percentageCommission": 0.1,
- "percentageIncludeExtras": true,
- "netRates": [
- {
- "priceOptionLabel": "string",
- "netPrice": 0.1
}
]
}
]
}
}
Adds a product to the specified rate
rateId required | integer <int64> Rate ID |
productCode required | string Product's product code |
productCode | string Product's product code |
commissionType | string Enum: "NET_RATE" "PERCENT" Commission type: PERCENTAGE, NET_RATE |
percentageCommission | number <float> Percentage value of the commission. This should be mandatory if Commission Type is PERCENTAGE |
percentageIncludeExtras | boolean Includes extras, This is mandatory if Commission Type is PERCENTAGE. If true, the product's extras will be included in the agent commission, otherwise the commission will be calculated based on the product price only. |
Array of objects (NetRate) List of Net rates with its associated price option label e.g. Adult $20, Child $10 etc. This is mandatory if Commission Type is NET_RATE |
required | object (RequestStatus) |
object (Rate) A Rate is used to group products with its corresponding shared rate |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "rate": {
- "rateId": 0,
- "name": "string",
- "productRates": [
- {
- "productCode": "string",
- "commissionType": "NET_RATE",
- "percentageCommission": 0.1,
- "percentageIncludeExtras": true,
- "netRates": [
- {
- "priceOptionLabel": "string",
- "netPrice": 0.1
}
]
}
]
}
}
Removes a product from the specified rate
rateId required | integer <int64> Rate ID |
productCode required | string Product's product code |
required | object (RequestStatus) |
object (Rate) A Rate is used to group products with its corresponding shared rate |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "rate": {
- "rateId": 0,
- "name": "string",
- "productRates": [
- {
- "productCode": "string",
- "commissionType": "NET_RATE",
- "percentageCommission": 0.1,
- "percentageIncludeExtras": true,
- "netRates": [
- {
- "priceOptionLabel": "string",
- "netPrice": 0.1
}
]
}
]
}
}
Searches pickup lists. To retrieve all pick up lists, omit the searchString parameter
searchString | string Search string of pickup list name or location name |
required | object (RequestStatus) |
Array of objects (PickupList) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "pickupListList": [
- {
- "id": 0,
- "name": "string",
- "additionalNotes": "string",
- "otherLocationInstructions": "string",
- "pickupLocations": [
- {
- "locationName": "string",
- "address": "string",
- "latitude": 0.1,
- "longitude": 0.1,
- "minutesPrior": 0,
- "additionalInstructions": "string",
- "pickupTime": "string",
- "pickupInstructions": "string"
}
]
}
]
}
Creates a new pickup list
id | integer <int64> ID of this pickup |
name | string Name of the pickup location list |
additionalNotes | string Global additional instructions for this pick up list |
otherLocationInstructions | string Instructions for other locations that are not available in the pickupLocations list. E.g. For customer pick up location requests, a sample instruction for this field would be: 'We will contact you to confirm your pickup location' |
Array of objects (PickupLocation) List of all associated pickup locations for this list |
required | object (RequestStatus) |
object (PickupList) PickupList object. Contains a list of pickup locations. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "pickupList": {
- "id": 0,
- "name": "string",
- "additionalNotes": "string",
- "otherLocationInstructions": "string",
- "pickupLocations": [
- {
- "locationName": "string",
- "address": "string",
- "latitude": 0.1,
- "longitude": 0.1,
- "minutesPrior": 0,
- "additionalInstructions": "string",
- "pickupTime": "string",
- "pickupInstructions": "string"
}
]
}
}
Retrieves a pickup list
pickupListId required | integer <int64> Pickup list ID |
required | object (RequestStatus) |
object (PickupList) PickupList object. Contains a list of pickup locations. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "pickupList": {
- "id": 0,
- "name": "string",
- "additionalNotes": "string",
- "otherLocationInstructions": "string",
- "pickupLocations": [
- {
- "locationName": "string",
- "address": "string",
- "latitude": 0.1,
- "longitude": 0.1,
- "minutesPrior": 0,
- "additionalInstructions": "string",
- "pickupTime": "string",
- "pickupInstructions": "string"
}
]
}
}
Updates a pickup list. This service should not be used for partial updates. A full pickup list object with the desired pick up locations should be passed as input
pickupListId required | integer <int64> Pickup list ID |
id | integer <int64> ID of this pickup |
name | string Name of the pickup location list |
additionalNotes | string Global additional instructions for this pick up list |
otherLocationInstructions | string Instructions for other locations that are not available in the pickupLocations list. E.g. For customer pick up location requests, a sample instruction for this field would be: 'We will contact you to confirm your pickup location' |
Array of objects (PickupLocation) List of all associated pickup locations for this list |
required | object (RequestStatus) |
object (PickupList) PickupList object. Contains a list of pickup locations. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "pickupList": {
- "id": 0,
- "name": "string",
- "additionalNotes": "string",
- "otherLocationInstructions": "string",
- "pickupLocations": [
- {
- "locationName": "string",
- "address": "string",
- "latitude": 0.1,
- "longitude": 0.1,
- "minutesPrior": 0,
- "additionalInstructions": "string",
- "pickupTime": "string",
- "pickupInstructions": "string"
}
]
}
}
Deletes a pickup list
pickupListId required | integer <int64> Pickup ID |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Searches extra. To retrieve all extras, omit the searchString parameter
searchString required | string Search string of extra name |
required | object (RequestStatus) |
Array of objects (ExtraRequest) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY"
}
]
}
Creates a new extra.
name | string Name of the extra |
description | string Description of the extra. |
price | number <float> Price for a single quantity of this extra |
extraPriceType | string Enum: "ANY" "FIXED" "QUANTITY" Price type for this extra. Defines what quantities are allowed and how their price is calculated |
required | object (RequestStatus) |
object (ExtraRequest) Partial optional service or item that can be purchased when booking a specific product |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "extra": {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY"
}
}
Retrieve an extra by Id
extraId required | integer <int64> Extra ID |
required | object (RequestStatus) |
object (ExtraRequest) Partial optional service or item that can be purchased when booking a specific product |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "extra": {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY"
}
}
Updates an extra. The extra ID can change when updating it, since there are business rules to protect the Order and Product consistency.
extraId required | integer <int64> Extra ID |
id | integer <int64> ID of the extra |
name | string Name of the extra |
description | string Description of the extra |
price | number <float> Price for a single quantity of this extra |
extraPriceType | string Enum: "ANY" "FIXED" "QUANTITY" Price type for this extra. Defines what quantities are allowed and how their price is calculated |
required | object (RequestStatus) |
object (ExtraRequest) Partial optional service or item that can be purchased when booking a specific product |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "extra": {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY"
}
}
Deletes an extra
extraId required | integer <int64> Extra ID |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Load all categories matching a search string. If the search string is empty, all categories will be returned. This will only return categories that belong to the company identified from the request's apiKey.
search | string String to search for. It will be searched in category name |
visible | boolean Return only public categories if it is set to true, only private if it is set to false, or both if it not set. |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Category) |
Search categories: https://api.rezdy-staging.com/v1/categories?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "categories": [
- {
- "id": 9091,
- "name": "Demo supplier products",
- "description": "",
- "visible": true,
- "image": {
- "id": 22654,
}, - "categorySeoTags": [
- {
- "attrKey": "noindex",
- "attrValue": "0",
- "id": 365,
- "metaType": "NOINDEX",
- "categoryId": 9091
}
]
}
]
}
Load an existing category by Id
categoryId required | integer <int64> Category ID |
required | object (RequestStatus) |
object (Category) A Category is used to group products |
Get category 9091
: https://api.rezdy-staging.com/v1/categories/9091?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "category": {
- "id": 9091,
- "name": "Demo supplier products",
- "description": "",
- "visible": true,
- "image": {
- "id": 22654,
}, - "categorySeoTags": [
- {
- "attrKey": "noindex",
- "attrValue": "0",
- "id": 365,
- "metaType": "NOINDEX",
- "categoryId": 9091
}
]
}
}
Load all products within a category.
categoryId required | integer <int64> The category id. |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Product) |
List category 9091
products: https://api.rezdy-staging.com/v1/categories/9091/products?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "products": [
- {
- "productType": "TICKET",
- "name": "National Park pass",
- "shortDescription": "National park multiday pass",
- "description": "National park multiday entry pass, which can be used any time within 2 years from the purchase date for a single entry.",
- "productCode": "P00TNX",
- "internalCode": "TICKET",
- "supplierId": 13398,
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "timezone": "Australia/Sydney",
- "advertisedPrice": 15,
- "priceOptions": [
- {
- "price": 30,
- "label": "Adult",
- "id": 929162,
- "seatsUsed": 1,
- "productCode": "P00TNX"
}, - {
- "price": 15,
- "label": "Child",
- "id": 929161,
- "seatsUsed": 1,
- "productCode": "P00TNX"
}
], - "currency": "AUD",
- "unitLabel": "Participant",
- "unitLabelPlural": "Participants",
- "quantityRequired": true,
- "quantityRequiredMin": 1,
- "images": [
- {
- "id": 22654,
}, - {
- "id": 22655,
}, - {
- "id": 22656,
}, - {
- "id": 22658,
}
], - "bookingMode": "NO_DATE",
- "charter": false,
- "terms": "",
- "bookingFields": [
- {
- "label": "First Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Last Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Mobile",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "Phone"
}, - {
- "label": "Email",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Country",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "List"
}, - {
- "label": "Special Requirements",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}
], - "latitude": 28.2062873,
- "longitude": 85.62292959999999,
- "confirmMode": "AUTOCONFIRM",
- "confirmModeMinParticipants": 0,
- "commissionIncludesExtras": false,
- "cancellationPolicyDays": 7,
- "dateCreated": "2025-08-31T00:17:05Z",
- "minimumNoticeMinutes": 0,
- "durationMinutes": 1440,
- "dateUpdated": "2025-08-31T01:02:28Z",
- "locationAddress": {
- "addressLine": "Langtang valley",
- "postCode": "",
- "city": "",
- "state": "",
- "countryCode": "np",
- "latitude": 28.2062873,
- "longitude": 85.62292959999999
}, - "languages": [
- "en_au"
], - "waitListingEnabled": false,
- "barcodeOutputType": "ORDER",
- "isApiBookingSupported": true
}, - {
- "productType": "ACTIVITY",
- "name": "Double dive with sharks",
- "shortDescription": "Double dive with grey nurse or leopard sharks, depending on the season.",
- "description": "Double dive with grey nurse or leopard sharks, depending on the season. Boat dive with a snack provided during the break between the dives. The dive site is suitable for open water divers.",
- "productCode": "PWQF1Y",
- "internalCode": "DIVING",
- "supplierId": 13398,
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "timezone": "Australia/Sydney",
- "advertisedPrice": 200,
- "priceOptions": [
- {
- "price": 250,
- "label": "Adult",
- "id": 929159,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}, - {
- "price": 200,
- "label": "Student",
- "id": 929160,
- "seatsUsed": 1,
- "productCode": "PWQF1Y"
}
], - "currency": "AUD",
- "unitLabel": "Participant",
- "unitLabelPlural": "Participants",
- "quantityRequired": true,
- "quantityRequiredMin": 1,
- "quantityRequiredMax": 50,
- "images": [
- {
- "id": 22650,
}, - {
- "id": 22651,
}, - {
- "id": 22652,
}, - {
- "id": 22653,
}
], - "bookingMode": "INVENTORY",
- "charter": false,
- "terms": "",
- "bookingFields": [
- {
- "label": "First Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Last Name",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Mobile",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "Phone"
}, - {
- "label": "Email",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Special Requirements",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": false,
- "visiblePerBooking": true,
- "fieldType": "String"
}, - {
- "label": "Certification level",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "fieldType": "String"
}, - {
- "label": "Certification number",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "fieldType": "String"
}, - {
- "label": "Certification agency",
- "requiredPerParticipant": false,
- "requiredPerBooking": false,
- "visiblePerParticipant": true,
- "visiblePerBooking": false,
- "listOptions": "PADI\r\nSSI\r\nSDI",
- "fieldType": "List"
}
], - "latitude": -28.6113488,
- "longitude": 153.629085,
- "confirmMode": "AUTOCONFIRM",
- "confirmModeMinParticipants": 0,
- "commissionIncludesExtras": false,
- "cancellationPolicyDays": 7,
- "dateCreated": "2025-08-30T23:49:55Z",
- "minimumNoticeMinutes": 1440,
- "durationMinutes": 180,
- "dateUpdated": "2025-08-31T00:12:33Z",
- "pickupId": 475,
- "locationAddress": {
- "addressLine": "Julien rocks",
- "postCode": "",
- "city": "Byron Bay",
- "state": "",
- "countryCode": "au",
- "latitude": -28.6113488,
- "longitude": 153.629085
}, - "languages": [
- "en_au"
], - "waitListingEnabled": false,
- "barcodeOutputType": "ORDER",
- "isApiBookingSupported": true
}
]
}
Adds a product to an existing category
categoryId required | integer <int64> |
productCode required | string |
required | object (RequestStatus) |
object (Rate) A Rate is used to group products with its corresponding shared rate |
Add product P00TNX
to category 9091
responds with category products, or 406 status if product already is in this category: PUT https://api.rezdy-staging.com/v1/categories/9091/products/P00TNX?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "rate": {
- "rateId": 9091,
- "name": "Demo supplier products",
- "productRates": [
- {
- "productCode": "PWQF1Y"
}, - {
- "productCode": "P00TNX"
}
]
}
}
Removes a product from an existing category
categoryId required | integer <int64> |
productCode required | string |
required | object (RequestStatus) |
object (Rate) A Rate is used to group products with its corresponding shared rate |
Remove product P00TNX
from category 9091
, responds with remaining category products: DELETE https://api.rezdy-staging.com/v1/categories/9091/products/P00TNX?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "rate": {
- "rateId": 9091,
- "name": "Demo supplier products",
- "productRates": [
- {
- "productCode": "PWQF1Y"
}
]
}
}
Search customers in your account
search | string String to search for. It will be searched in First & Last name, company name and email. |
limit | integer <int32> How many results are returned per request. Maximum is 100, which also a default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Customer) |
Search customers with name 'Rick Sanchez': https://api.rezdy-staging.com/v1/customers?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5&search=Rick Sanchez
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "customers": [
- {
- "id": 29647,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}
]
}
Create a new customer
id | integer <int64> Rezdy internal ID of the customer |
firstName | string First name |
middleName | string Middle name |
lastName | string Last Name |
name | string Full name - generated from first/middle/last names |
string | |
companyName | string Company name |
phone | string Preferred Phone number |
mobile | string Mobile phone number |
fax | string Fax number |
skype | string Skype alias |
dob | string <date-time> Date of birth |
preferredLanguage | string Preferred language. Should be a 2 letter ISO country code |
newsletter | boolean Subscribe to the newsletter |
marketing | boolean Agree to receive marketing emails |
aboutUs | string How did you hear about us? |
title | string Enum: "MR" "MS" "MRS" "MISS" Title |
gender | string Enum: "MALE" "FEMALE" Gender: MALE or FEMALE |
addressLine | string Address |
addressLine2 | string Extended Address |
postCode | string Postcode / ZIP |
city | string City/Town/Suburb |
state | string State/County/Region |
countryCode | string 2 letter ISO country code |
required | object (RequestStatus) |
object (Customer) The customer is the person making the booking, and most of the time paying for it. |
Create a new customer
{- "email": "morthysmith@test.com",
- "firstName": "Morty",
- "lastName": "Smith",
- "mobile": "+6148123456"
}
Create customer
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "customer": {
- "id": 29705,
- "firstName": "Morty",
- "lastName": "Smith",
- "name": "Morty Smith",
- "email": "morthysmith@test.com",
- "mobile": "+6148123456"
}
}
Load an existing customer by Id
customerId required | integer <int64> Id to search for |
required | object (RequestStatus) |
object (Customer) The customer is the person making the booking, and most of the time paying for it. |
Get customer: https://api.rezdy-staging.com/v1/customers/29705?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "customer": {
- "id": 29705,
- "firstName": "Morty",
- "lastName": "Smith",
- "name": "Morty Smith",
- "email": "morthysmith@test.com",
- "mobile": "+6148123456"
}
}
Delete a customer
customerId required | string Customer Id to delete |
required | object (RequestStatus) |
Delete customer: DELETE https://api.rezdy-staging.com/v1/customers/29705?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}
}
Search vouchers in your account
search | string String to search for. It will be searched in voucher codes |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Voucher) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "vouchers": [
- {
- "code": "string",
- "status": "ISSUED",
- "internalReference": "string",
- "internalNotes": "string",
- "issueDate": "2019-08-24T14:15:22Z",
- "expiryDate": "2019-08-24T14:15:22Z",
- "value": 0.1,
- "valueType": "VALUE_LIMITPRODUCT",
- "sourceOrder": "string"
}
]
}
Load an existing voucher by Voucher Code
voucherCode required | string Voucher code to search for. |
required | object (RequestStatus) |
object (Voucher) A Voucher is a gift card that can be used to pay for a booking. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "voucher": {
- "code": "string",
- "status": "ISSUED",
- "internalReference": "string",
- "internalNotes": "string",
- "issueDate": "2019-08-24T14:15:22Z",
- "expiryDate": "2019-08-24T14:15:22Z",
- "value": 0.1,
- "valueType": "VALUE_LIMITPRODUCT",
- "sourceOrder": "string"
}
}
Load an existing Company by it's alias in Rezdy. Company alias is not a permanent identifier and can change over time.
companyAlias required | string Company alias to search for |
required | object (RequestStatus) |
object (Company) Company object. Holds general details and information about a specific company. |
Get company 'API specification demo supplier' by their alias: https://api.rezdy-staging.com/v1/companies/apispecificationdemosupplierdonotedit?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "companies": [
- {
- "alias": "apispecificationdemosupplierdonotedit",
- "companyName": "API specification demo supplier (DO NOT EDIT)",
- "firstName": "Dusan",
- "lastName": "Zahoransky",
- "address": {
- "addressLine": "123 CommonwWealth Street",
- "postCode": "2000",
- "city": "Sydney",
- "state": "NSW",
- "countryCode": "au",
- "latitude": -33.880562,
- "longitude": 151.2106793
}, - "destinationName": "Sydney",
- "destinationCountryCode": "au",
- "destinationPath": "South Pacific,Australia,New South Wales,Sydney",
- "currency": "AUD",
- "locale": "en_au",
- "timezone": "Australia/Sydney",
- "category": "Eco-Tours",
- "companyDescription": "Rezdy API demo supplier.",
- "phone": "+61484123456",
- "mobile": "+61484123456",
- "fax": "",
- "skype": "",
- "openingHours": "08:00 - 17:00",
- "facebookPage": "",
- "yelp": "",
- "instagram": "",
- "pinterest": "",
- "youtubeChannel": "",
- "tripAdvisor": "",
- "twitter": "",
- "website": "",
- "bookingSystem": "rezdy.com"
}
]
}
Load an existing Company by it's name in Rezdy. Company name must be given in full name.
companyName required | string Company name to search for |
required | object (RequestStatus) |
object (Company) Company object. Holds general details and information about a specific company. |
Get company 'API specification demo supplier (DO NOT EDIT)' by their name: https://api.rezdy-staging.com/v1/companies/name/API%20specification%20demo%20supplier?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "companies": [
- {
- "alias": "apispecificationdemosupplierdonotedit",
- "companyName": "API specification demo supplier (DO NOT EDIT)",
- "firstName": "Dusan",
- "lastName": "Zahoransky",
- "address": {
- "addressLine": "123 CommonwWealth Street",
- "postCode": "2000",
- "city": "Sydney",
- "state": "NSW",
- "countryCode": "au",
- "latitude": -33.880562,
- "longitude": 151.2106793
}, - "destinationName": "Sydney",
- "destinationCountryCode": "au",
- "destinationPath": "South Pacific,Australia,New South Wales,Sydney",
- "currency": "AUD",
- "locale": "en_au",
- "timezone": "Australia/Sydney",
- "category": "Eco-Tours",
- "companyDescription": "Rezdy API demo supplier.",
- "phone": "+61484123456",
- "mobile": "+61484123456",
- "fax": "",
- "skype": "",
- "openingHours": "08:00 - 17:00",
- "facebookPage": "",
- "yelp": "",
- "instagram": "",
- "pinterest": "",
- "youtubeChannel": "",
- "tripAdvisor": "",
- "twitter": "",
- "website": "",
- "bookingSystem": "rezdy.com"
}
]
}
Search bookings in your account
orderStatus | string Enum: "PROCESSING" "NEW" "ON_HOLD" "PENDING_SUPPLIER" "PENDING_CUSTOMER" "CONFIRMED" "CANCELLED" "ABANDONED_CART" Order status to filter results |
search | string String to search for. It will be searched in Order number, Customer name, Agent code and payment transaction codes (I.e. voucher Code). |
productCode | Array of strings unique Example: productCode=P12345 Product code, to only load bookings for a specific product. Multiple values allowed: &productCode=P11111&productCode=P22222 |
minTourStartTime | string Example: minTourStartTime=2014-03-01T00:00:00Z Only load bookings with a booked time that starts on or after this time. This is not the booking creation date, it is the booked date. |
maxTourStartTime | string Example: maxTourStartTime=2014-03-01T00:00:00Z Only load bookings with a booked time that starts before or on this time. This is not the booking creation date, it is the booked date. |
updatedSince | string Example: updatedSince=2014-03-01T00:00:00Z Only load bookings updated after this time. |
minDateCreated | string Example: minDateCreated=2014-03-01T00:00:00Z Only load bookings created on or after this date, whether they have been updated or not. |
maxDateCreated | string Example: maxDateCreated=2014-03-01T00:00:00Z Only load bookings created on or before this date, whether they have been updated or not. |
resellerReference | string Only load bookings with specified resellerReference |
limit | integer <int32> How many results are returned per request. Maximum is 100, which also a default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. |
required | object (RequestStatus) |
Array of objects (Booking) |
Search confirmed bookings: https://api.rezdy-staging.com/v1/bookings?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5&orderStatus=CONFIRMED
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "bookings": [
- {
- "orderNumber": "RX1N6HC",
- "status": "CONFIRMED",
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "resellerId": 13399,
- "resellerName": "API specification demo agent (DO NOT EDIT)",
- "resellerAlias": "apispecificationdemoagentdonotedit",
- "customer": {
- "id": 29650,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-04T23:00:00Z",
- "endTime": "2025-09-05T02:00:00Z",
- "startTimeLocal": "2025-09-05 09:00:00",
- "endTimeLocal": "2025-09-05 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 1
}
], - "totalQuantity": 1,
- "amount": 250,
- "extras": [ ],
- "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level"
}, - {
- "label": "Certification number"
}, - {
- "label": "Certification agency"
}
]
}
], - "subtotal": 250,
- "pickupLocation": {
- "locationName": "Hotel by the sea",
- "pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 250,
- "totalCurrency": "AUD",
- "totalPaid": 250,
- "totalDue": 0,
- "dateCreated": "2025-09-03T00:00:04Z",
- "dateConfirmed": "2025-09-03T00:00:04Z",
- "datePaid": "2025-09-03T00:00:04Z",
- "payments": [
- {
- "type": "CASH",
- "amount": 250,
- "currency": "AUD",
- "date": "2025-09-03T00:00:04Z",
- "label": "Paid in cash to API specification demo company",
- "recipient": "RESELLER"
}
], - "fields": [
- {
- "label": "Barcode",
- "value": "RX1N6HC"
}
], - "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "API",
- "sourceChannel": "APISPECIFICATIONDEMOAGENTDONOTEDIT",
- "commission": 25,
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
]
}
Create a new booking. Many of payload fields are not required and will be calculated if not specified. Please check the example request payloads for different booking scenarios.
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by the system, therefore, even if it is specified in the booking request, it will be overwritten. |
status | string Enum: "PROCESSING" "NEW" "ON_HOLD" "PENDING_SUPPLIER" "PENDING_CUSTOMER" "CONFIRMED" "CANCELLED" "ABANDONED_CART" Status of this booking |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
object (Customer) The customer is the person making the booking, and most of the time paying for it. | |
Array of objects (BookingItemCreate) List of items in this booking. A booking can contain multiple products. Each BookingItem is a separate product with its own set of quantities and participant details. | |
totalAmount | number <float> Total booking amount |
datePaid | string <date-time> Date this booking was fully paid |
dateReconciled | string <date-time> Date this booking was reconciled with the agent |
comments | string Special requirements entered by the customer. Visible to both customer and supplier. |
internalNotes | string Comments only visible internally by the supplier |
Array of objects (BookingPayment) List of payments recorded for this booking | |
object (CreditCard) Credit card details. Used to send payment details for a booking | |
Array of objects (BookingField) List of custom fields that are required "once per booking" by all the products in this booking | |
source | string Enum: "ONLINE" "INTERNAL" "PARTNERS" "COMMUNITY" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "API" "GOOGLE" Source of this booking viewed from the supplier |
sourceReferrer | string Referrer code |
resellerSource | string Enum: "ONLINE" "INTERNAL" "PARTNERS" "COMMUNITY" "MARKETPLACE" "MARKETPLACE_PREF_RATE" "API" "GOOGLE" Source of this booking viewed from the agent |
sourceChannel | string Agent code defined by the supplier |
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. |
surcharge | number <float> Credit card surcharge calculated for this booking |
vouchers | Array of strings List of vouchers (Gift cards) that have been redeemed to pay for this booking |
coupon | string Promo code that has been applied to this booking |
paymentOption | string Enum: "CREDITCARD" "PAYPAL" "BANKTRANSFER" "CASH" "INVOICE" "EXTERNAL" "ALIPAY" Payment option selected by the customer when making an online booking |
sendNotifications | boolean Default: true Flag to control if a booking confirmation email should be send to the customer after this booking is created. |
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. Maxiumum number of characters is 30 |
barcodeType | string Enum: "TEXT" "CODE_39" "CODE_128" "QR_CODE" "EAN_8" "EAN_13" "ITF" Declares the redemption code format customers will receive if the booking was created with barcodes. |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Example of creating a booking with API features including pickup, extras, order and participant level booking fields, comments, discount coupon, participant level barcodes
{- "comments": "Here come comments that are visible to you, but not to customers",
- "customer": {
- "firstName": "Rick",
- "lastName": "Sanchez",
- "phone": "+61484123456",
- "email": "ricksanchez@test.com"
}, - "items": [
- {
- "productCode": "PWQF1Y",
- "startTimeLocal": "2025-10-01 09:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "value": 2
}
], - "extras": [
- {
- "name": "Underwater camera rental",
- "quantity": 1
}
], - "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level",
- "value": "Open Water"
}, - {
- "label": "Certification number",
- "value": "123456798"
}, - {
- "label": "Certification agency",
- "value": "PADI"
}, - {
- "label": "Barcode",
- "value": "123"
}
]
}, - {
- "fields": [
- {
- "label": "First Name",
- "value": "Morty"
}, - {
- "label": "Last Name",
- "value": "Smith"
}, - {
- "label": "Certification level",
- "value": "Rescue Diver"
}, - {
- "label": "Certification number",
- "value": "111222333"
}, - {
- "label": "Certification agency",
- "value": "SDI"
}, - {
- "label": "Barcode",
- "value": "456"
}
]
}
]
}
], - "fields": [
- {
- "label": "Special Requirements",
- "value": "Gluten free lunch for Morty"
}
], - "pickupLocation": {
- "locationName": "Divers hotel"
}, - "payments": [
- {
- "amount": 515,
- "type": "CASH",
- "label": "Paid in cash to API specification demo"
}
]
}
Example of creating a booking with API features including pickup, extras, order and participant level booking fields, comments, discount coupon, participant level barcodes
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "booking": {
- "orderNumber": "RSQ6K2F",
- "status": "CONFIRMED",
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "customer": {
- "id": 29769,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "email": "ricksanchez@test.com",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 2
}
], - "totalQuantity": 2,
- "amount": 500,
- "extras": [
- {
- "name": "Underwater camera rental",
- "price": 15,
- "extraPriceType": "ANY",
- "quantity": 1
}
], - "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Barcode",
- "value": "RSQ6K2F*79309"
}, - {
- "label": "Certification level",
- "value": "Open Water"
}, - {
- "label": "Certification number",
- "value": "123456798"
}, - {
- "label": "Certification agency",
- "value": "PADI"
}, - {
- "label": "Barcode",
- "value": "123"
}
]
}, - {
- "fields": [
- {
- "label": "First Name",
- "value": "Morty"
}, - {
- "label": "Last Name",
- "value": "Smith"
}, - {
- "label": "Barcode",
- "value": "RSQ6K2F*79308"
}, - {
- "label": "Certification level",
- "value": "Rescue Diver"
}, - {
- "label": "Certification number",
- "value": "111222333"
}, - {
- "label": "Certification agency",
- "value": "SDI"
}, - {
- "label": "Barcode",
- "value": "456"
}
]
}
], - "subtotal": 515,
- "pickupLocation": {
- "pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 515,
- "totalCurrency": "AUD",
- "totalPaid": 515,
- "totalDue": 0,
- "dateCreated": "2021-09-20T04:56:34Z",
- "dateConfirmed": "2021-09-20T04:56:33.562Z",
- "datePaid": "2021-09-20T04:56:33.562Z",
- "comments": "Here come comments that are visible to you, but not to customers",
- "payments": [
- {
- "type": "CASH",
- "amount": 515,
- "currency": "AUD",
- "date": "2021-09-20T04:56:33.566Z",
- "label": "Paid in cash to API specification demo",
- "recipient": "SUPPLIER"
}
], - "fields": [
- {
- "label": "Barcode",
- "value": "RSQ6K2F"
}, - {
- "label": "Special Requirements",
- "value": "Gluten free lunch for Morty"
}
], - "source": "API",
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
}
Get a quote for a booking. Use this service to validate your Booking object before making the actual booking.
Business rules will be validated, and all amounts and totals will be populated.
It is not a Booking: It does not have any status or booking number. A Quote does not reserve any seat.
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by the system, therefore, even if it is specified in the booking request, it will be overwritten. |
status | string Enum: "PROCESSING" "NEW" "ON_HOLD" "PENDING_SUPPLIER" "PENDING_CUSTOMER" "CONFIRMED" "CANCELLED" "ABANDONED_CART" Status of this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
object (Customer) The customer is the person making the booking, and most of the time paying for it. | |
Array of objects (BookingItemCreate) List of items in this booking. A booking can contain multiple products. Each BookingItem is a separate product with its own set of quantities and participant details. | |
internalNotes | string Comments only visible internally by the supplier |
Array of objects (BookingField) List of custom fields that are required "once per booking" by all the products in 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. Maxiumum number of characters is 30 |
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. |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Example of quote a manual payment booking with minimalistic payload
{- "customer": {
- "firstName": "Rick",
- "lastName": "Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productCode": "PWQF1Y",
- "startTimeLocal": "2025-10-01 09:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "value": 1
}
]
}
], - "pickupLocation": {
- "locationName": "Divers hotel"
}, - "payments": [
- {
- "amount": 250,
- "type": "CASH",
- "label": "Paid in cash to API specification demo company"
}
]
}
Quote booking
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "booking": {
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "resellerId": 13399,
- "resellerName": "API specification demo agent (DO NOT EDIT)",
- "resellerAlias": "apispecificationdemoagentdonotedit",
- "customer": {
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 1
}
], - "totalQuantity": 1,
- "amount": 250,
- "extras": [ ],
- "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level"
}, - {
- "label": "Certification number"
}, - {
- "label": "Certification agency"
}
]
}
], - "subtotal": 250,
- "pickupLocation": {
- "pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 250,
- "totalCurrency": "AUD",
- "totalPaid": 250,
- "totalDue": 0,
- "payments": [
- {
- "type": "CASH",
- "amount": 250,
- "label": "Paid in cash to API specification demo agent",
- "recipient": "RESELLER"
}
], - "fields": [
- {
- "label": "Barcode"
}
], - "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "API",
- "commission": 25,
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
}
Load an existing booking by Order Number
orderNumber required | string Example: R123456 Order number to search |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Get booking RKM1ULT
: https://api.rezdy-staging.com/v1/bookings/RKM1ULT?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "version": "v1"
}, - "booking": {
- "orderNumber": "RKM1ULT",
- "status": "CONFIRMED",
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "resellerId": 13399,
- "resellerName": "API specification demo agent (DO NOT EDIT)",
- "resellerAlias": "apispecificationdemoagentdonotedit",
- "customer": {
- "id": 29692,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 1
}
], - "totalQuantity": 1,
- "amount": 250,
- "extras": [ ],
- "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level"
}, - {
- "label": "Certification number"
}, - {
- "label": "Certification agency"
}
]
}
], - "subtotal": 250,
- "pickupLocation": {
- "pickupInstructions": "Call us on +61123456 to arrange a pickup from a custom pickup request not listed among the pickup locations.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 250,
- "totalCurrency": "AUD",
- "totalPaid": 250,
- "totalDue": 0,
- "dateCreated": "2025-09-09T02:14:12Z",
- "dateConfirmed": "2025-09-09T02:14:12Z",
- "datePaid": "2025-09-09T02:14:12Z",
- "payments": [
- {
- "type": "CASH",
- "amount": 250,
- "currency": "AUD",
- "date": "2025-09-09T02:14:12Z",
- "label": "Paid in cash to API specification demo agent",
- "recipient": "RESELLER"
}
], - "fields": [
- {
- "label": "Barcode",
- "value": "RKM1ULT"
}
], - "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "API",
- "sourceChannel": "APISPECIFICATIONDEMOAGENTDONOTEDIT",
- "commission": 25,
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
}
When implementing booking update take into consideration below:
The service method does not support a partial update, full booking object, as it was retrieved from the booking create or search services, has to be send back to the request payload. Otherwise, the properties or relations which are currently supported (see below) and they are not sent, will be deleted. Order of the items in arrays have to be preserved for the following fields 'items', 'participants'.
Currently supported fields are:
For the sample requests provided in the right panel, consider the booking object below being retrieved from a POST order or GET order methods:
{
"requestStatus": {
"success": true,
"version": "v1"
},
"booking": {
"orderNumber": "RSKCJ1K",
"status": "CONFIRMED",
"supplierId": 61,
"supplierName": "SUPPLIER_PREMIUM_AU",
"customer": {
"id": 2,
"firstName": "Dusan",
"lastName": "Zahoransky",
"name": "Dusan Zahoransky",
"email": "sample@test.com"
},
"items": [
{
"productName": "activity i session seats pp adult 100f",
"productCode": "P123456",
"startTime": "2017-01-19T09:00:00Z",
"endTime": "2017-01-19T11:00:00Z",
"startTimeLocal": "2017-01-19 20:00:00",
"endTimeLocal": "2017-01-19 22:00:00",
"quantities": [
{
"optionLabel": "Adult",
"optionPrice": 100,
"value": 1
}
],
"totalQuantity": 1,
"amount": 100,
"extras": [
],
"participants": [
{
"fields": [
{
"label": "First Name",
"value": "Janko",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": false,
"visiblePerBooking": false
},
{
"label": "Last Name",
"value": "Hrasko",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": false,
"visiblePerBooking": false
}
]
}
],
"subtotal": 100,
"vouchers": [
]
}
],
"totalAmount": 100,
"totalCurrency": "AUD",
"totalPaid": 0,
"totalDue": 100,
"dateCreated": "2017-01-19T03:36:18.462Z",
"dateConfirmed": "2017-01-19T03:36:18.462Z",
"payments": [
],
"fields": [
{
"label": "Special Requirements",
"value": "No meat meal option",
"requiredPerParticipant": false,
"requiredPerBooking": false,
"visiblePerParticipant": false,
"visiblePerBooking": false
}
],
"source": "API",
"vouchers": [
]
}
}
orderNumber required | string order number of the booking |
orderNumber | string Order number. This is the number you should give to customers and print on booking confirmations. Order number is generated by the system, therefore, even if it is specified in the booking request, it will be overwritten. |
status | string Enum: "PROCESSING" "NEW" "ON_HOLD" "PENDING_SUPPLIER" "PENDING_CUSTOMER" "CONFIRMED" "CANCELLED" "ABANDONED_CART" Status of this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
resellerId | integer <int64> Rezdy internal ID of the agent company attached to this booking |
object (User) Internal Rezdy user details. This is a Rezdy application user who belongs to a Rezdy agent or supplier company. | |
object (Customer) The customer is the person making the booking, and most of the time paying for it. | |
Array of objects (BookingItemCreate) List of items in this booking. A booking can contain multiple products. Each BookingItem is a separate product with its own set of quantities and participant details. | |
internalNotes | string Comments only visible internally by the supplier |
Array of objects (BookingField) List of custom fields that are required "once per booking" by all the products in 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. Maxiumum number of characters is 30 |
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. |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Update internal info
"TODO"
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "booking": {
- "orderNumber": "string",
- "status": "PROCESSING",
- "supplierId": 0,
- "supplierName": "string",
- "supplierAlias": "string",
- "createdBy": {
- "code": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string"
}, - "resellerId": 0,
- "resellerName": "string",
- "resellerAlias": "string",
- "resellerUser": {
- "code": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string"
}, - "customer": {
- "id": 0,
- "firstName": "string",
- "middleName": "string",
- "lastName": "string",
- "name": "string",
- "email": "string",
- "companyName": "string",
- "phone": "string",
- "mobile": "string",
- "fax": "string",
- "skype": "string",
- "dob": "2019-08-24T14:15:22Z",
- "preferredLanguage": "string",
- "newsletter": true,
- "marketing": true,
- "aboutUs": "string",
- "title": "MR",
- "gender": "MALE",
- "addressLine": "string",
- "addressLine2": "string",
- "postCode": "string",
- "city": "string",
- "state": "string",
- "countryCode": "string"
}, - "items": [
- {
- "productName": "string",
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "quantities": [
- {
- "optionId": 0,
- "optionLabel": "string",
- "optionPrice": 0.1,
- "value": 0
}
], - "totalQuantity": 0,
- "amount": 0.1,
- "extras": [
- {
- "id": 0,
- "name": "string",
- "description": "string",
- "price": 0.1,
- "extraPriceType": "ANY",
- "quantity": 0,
- "image": {
- "id": 0,
- "itemUrl": "string",
- "thumbnailUrl": "string",
- "mediumSizeUrl": "string",
- "largeSizeUrl": "string"
}
}
], - "participants": [
- {
- "fields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
]
}
], - "transferFrom": "string",
- "transferTo": "string",
- "transferReturn": true,
- "subtotal": 0.1,
- "pickupLocation": {
- "locationName": "string",
- "address": "string",
- "latitude": 0.1,
- "longitude": 0.1,
- "minutesPrior": 0,
- "additionalInstructions": "string",
- "pickupTime": "string",
- "pickupInstructions": "string"
}, - "vouchers": [
- {
- "code": "string",
- "status": "ISSUED",
- "internalReference": "string",
- "internalNotes": "string",
- "issueDate": "2019-08-24T14:15:22Z",
- "expiryDate": "2019-08-24T14:15:22Z",
- "value": 0.1,
- "valueType": "VALUE_LIMITPRODUCT",
- "sourceOrder": "string"
}
], - "totalItemTax": 0.1
}
], - "totalAmount": 0.1,
- "totalCurrency": "AED",
- "totalPaid": 0.1,
- "totalDue": 0.1,
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "dateConfirmed": "2019-08-24T14:15:22Z",
- "datePaid": "2019-08-24T14:15:22Z",
- "dateReconciled": "2019-08-24T14:15:22Z",
- "comments": "string",
- "internalNotes": "string",
- "payments": [
- {
- "type": "PAYPAL",
- "amount": 0.1,
- "currency": "AED",
- "date": "2019-08-24T14:15:22Z",
- "label": "string",
- "recipient": "SUPPLIER"
}
], - "creditCard": {
- "cardName": "string",
- "cardType": "VISA",
- "expiryMonth": "string",
- "expiryYear": "string",
- "cardNumber": "string",
- "cardSecurityNumber": "string",
- "cardToken": "string",
- "cardCountry": "string"
}, - "fields": [
- {
- "label": "string",
- "value": "string",
- "requiredPerParticipant": true,
- "requiredPerBooking": true,
- "visiblePerParticipant": true,
- "visiblePerBooking": true,
- "listOptions": "string",
- "fieldType": "String"
}
], - "source": "ONLINE",
- "sourceReferrer": "string",
- "resellerSource": "ONLINE",
- "sourceChannel": "string",
- "resellerComments": "string",
- "surcharge": 0.1,
- "commission": 0.1,
- "vouchers": [
- "string"
], - "coupon": "string",
- "paymentOption": "CREDITCARD",
- "sendNotifications": true,
- "resellerReference": "string",
- "barcodeType": "TEXT"
}
}
Cancel an existing booking and send notifications about the cancellation. In case of an Automated Payment booking, will also refund payment.
orderNumber required | string Example: R123456 Order number to cancel |
sendNotifications | boolean Flag to control if a booking confirmation email should be send to the customer after this booking is canceled. Default (if not specified) is true. |
required | object (RequestStatus) |
object (Booking) Booking object. Lists all the possible fields for all product types and scenarios. Most of them are not required when sending a new booking. |
Get booking RKM1ULT
: https://api.rezdy-staging.com/v1/bookings/RKM1ULT?apiKey=69f708868ddc45eaa1f9b9fad1ddeba5
{- "requestStatus": {
- "success": true,
- "warning": {
- "warningMessage": "This order is already cancelled"
}, - "version": "v1"
}, - "booking": {
- "orderNumber": "RKQ0687",
- "status": "CANCELLED",
- "supplierId": 13398,
- "supplierName": "API specification demo supplier (DO NOT EDIT)",
- "supplierAlias": "apispecificationdemosupplierdonotedit",
- "resellerId": 13399,
- "resellerName": "API specification demo agent (DO NOT EDIT)",
- "resellerAlias": "apispecificationdemoagentdonotedit",
- "customer": {
- "id": 29665,
- "firstName": "Rick",
- "lastName": "Sanchez",
- "name": "Rick Sanchez",
- "phone": "+61484123456"
}, - "items": [
- {
- "productName": "Double dive with sharks",
- "productCode": "PWQF1Y",
- "startTime": "2025-09-30T23:00:00Z",
- "endTime": "2025-10-01T02:00:00Z",
- "startTimeLocal": "2025-10-01 09:00:00",
- "endTimeLocal": "2025-10-01 12:00:00",
- "quantities": [
- {
- "optionLabel": "Adult",
- "optionPrice": 250,
- "value": 1
}
], - "totalQuantity": 1,
- "amount": 250,
- "extras": [ ],
- "participants": [
- {
- "fields": [
- {
- "label": "First Name",
- "value": "Rick"
}, - {
- "label": "Last Name",
- "value": "Sanchez"
}, - {
- "label": "Certification level",
- "value": "Open Water"
}, - {
- "label": "Certification number",
- "value": "123456798"
}, - {
- "label": "Certification agency",
- "value": "PADI"
}
]
}
], - "subtotal": 250,
- "pickupLocation": {
- "locationName": "Divers hotel",
- "address": "Cape Byron, Byron Bay NSW, Australia",
- "pickupTime": "2025-10-01 08:30:00",
- "pickupInstructions": "Please be ready 15 minute before the pickup time in the hotel lobby area.\r\nPlease be ready 15 minute before the pickup time."
}
}
], - "totalAmount": 250,
- "totalCurrency": "AUD",
- "totalPaid": 250,
- "totalDue": 0,
- "dateCreated": "2025-09-07T00:21:22Z",
- "dateUpdated": "2025-09-09T03:57:02Z",
- "dateConfirmed": "2025-09-07T00:21:22Z",
- "datePaid": "2025-09-07T00:21:22Z",
- "payments": [
- {
- "type": "CASH",
- "amount": 250,
- "currency": "AUD",
- "date": "2025-09-07T00:21:22Z",
- "label": "Paid in cash to API specification demo agent",
- "recipient": "RESELLER"
}
], - "fields": [
- {
- "label": "Barcode",
- "value": "RKQ0687"
}
], - "source": "MARKETPLACE_PREF_RATE",
- "resellerSource": "API",
- "sourceChannel": "APISPECIFICATIONDEMOAGENTDONOTEDIT",
- "resellerComments": "Here come agent comments that are visible to both booking agent and supplier",
- "commission": 25,
- "vouchers": [ ],
- "barcodeType": "QR_CODE"
}
}
Retrieve all supplier resources. Pagination using limit and offset is applied to the result list.
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Resource) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "resources": [
- {
- "id": 0,
- "name": "string",
- "type": "RESOURCE",
- "seats": 0
}
]
}
Retrieve resources assigned to the session. Session has to be specified either by sessionId or by product code and start time (or start time local).
sessionId | integer <int64> Session ID |
productCode | string Product code in format P12345. |
startTime | string Session start time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z |
startTimeLocal | string Session start time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00 |
limit | integer <int32> How many results are returned per request. Maximum is 100, which also a default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Resource) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "resources": [
- {
- "id": 0,
- "name": "string",
- "type": "RESOURCE",
- "seats": 0
}
]
}
Add the resource to the session.
resourceId required | integer <int64> Resource ID |
sessionId required | integer <int64> Session ID |
resourceOrder | integer <int32> Order of the resource in the session. Optional, if not specified, will by calculated by the system to fill the first gap if gap is found, or the highest number among existing resources. |
required | object (RequestStatus) |
object (Resource) Supplier resource - e.g. raft, bus, tour guide, venue which has a limited capacity. The resources can be shared between different supplier's products. If the resource does not have any spare availability, the booking of any of the product sessions, where the resource is used will not be possible. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "resource": {
- "id": 0,
- "name": "string",
- "type": "RESOURCE",
- "seats": 0
}
}
Removes the resource from the session.
resourceId required | integer <int64> Resource ID |
sessionId required | integer <int64> Session ID |
required | object (RequestStatus) |
object (Resource) Supplier resource - e.g. raft, bus, tour guide, venue which has a limited capacity. The resources can be shared between different supplier's products. If the resource does not have any spare availability, the booking of any of the product sessions, where the resource is used will not be possible. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "resource": {
- "id": 0,
- "name": "string",
- "type": "RESOURCE",
- "seats": 0
}
}
Retrieves all sessions for the specified resource within the start/end datetime range. Pagination using limit and offset is applied to the result list.
resourceId required | integer <int64> Resource ID |
startTime | string Session start time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z |
endTime | string Session end time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z |
startTimeLocal | string Session start time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00 |
endTimeLocal | string Session end time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00 |
limit | integer <int32> limit how many results are returned per request. Maximum is 100, which is also the default, when not specified. |
offset | integer <int32> Default: 0 Offset of the first result to return. Default to 0. |
required | object (RequestStatus) |
Array of objects (Session) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "sessions": [
- {
- "id": 0,
- "productCode": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "startTimeLocal": "string",
- "endTimeLocal": "string",
- "allDay": true,
- "seats": 0,
- "seatsAvailable": 0,
- "priceOptions": [
- {
- "price": 0.1,
- "label": "string",
- "id": 0,
- "seatsUsed": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "priceGroupType": "EACH",
- "productCode": "string"
}
]
}
]
}
Retrieves the Check-in status. Checks if everyone in the whole session was checked in. The session is identified by product code and start time (or start time local).
Only available for the supplier API.
orderNumber | string Order number : optional, is specified, only the status of the order item session from the specified order will be retrieved. |
productCode required | string Product code in format P12345. |
startTime | string Session start time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z. It is required to have either startTime or startTimeLocal defined. |
startTimeLocal | string Session start time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00. It is required to have either startTime or startTimeLocal defined. |
required | object (RequestStatus) |
object (Checkin) Check-in information. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "checkin": {
- "isCheckedIn": true
}
}
Place Check-in a / No show flag for the specified order item. The order item is identified by order number, product code and start time (or start time local).
Only available for the supplier API.
orderNumber | string Order number |
productCode required | string Product code in format P12345. |
startTime | string Session start time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z. It is required to have either startTime or startTimeLocal defined. |
startTimeLocal | string Session start time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00. It is required to have either startTime or startTimeLocal defined. |
checkin | boolean Specifies a Check-in (true) or No show (false) flag to use |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Retrieves the Check-in status. Checks if everyone in the whole session was checked in. The session is identified by product code and start time (or start time local).
Only available for the supplier API.
orderNumber required | string Order number |
productCode required | string Product code in format P12345. |
startTime | string Session start time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z. It is required to have either startTime or startTimeLocal defined. |
startTimeLocal | string Session start time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00. It is required to have either startTime or startTimeLocal defined. |
checkin | boolean Specifies a Check-in (true) or No show (false) flag to use |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Retrieves the Check-in status. Checks if everyone in the whole session was checked in. The session is identified by product code and start time (or start time local).
Only available for the supplier API.
productCode required | string Product code in format P12345. |
startTime | string Session start time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z. It is required to have either startTime or startTimeLocal defined. |
startTimeLocal | string Session start time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00. It is required to have either startTime or startTimeLocal defined. |
required | object (RequestStatus) |
object (Checkin) Check-in information. |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}, - "checkin": {
- "isCheckedIn": true
}
}
Store Check-in / No show flag for everyone in a specified session. The session is identified by product code and start time (or start time local).
Only available for the supplier API.
productCode required | string productCode Product code in format P12345. |
startTime | string Session start time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z. It is required to have either startTime or startTimeLocal defined. |
startTimeLocal | string Session start time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00. It is required to have either startTime or startTimeLocal defined. |
checkin | boolean Specifies a Check-in (true) or No show (false) flag to use |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}
Remove Check-in / No show flag from everyone in the whole session. The session is identified by product code and start time (or start time local).
Only available for the supplier API.
productCode required | string Product code in format P12345. |
startTime | string Session start time in ISO 8601 format, e.g. 2014-03-01T00:00:00Z. It is required to have either startTime or startTimeLocal defined. |
startTimeLocal | string Session start time in supplier's local timezone, format is yyyy-MM-dd HH:mm:ss, e.g. 2014-03-01 00:00:00. It is required to have either startTime or startTimeLocal defined. |
required | object (RequestStatus) |
{- "requestStatus": {
- "success": true,
- "error": {
- "errorCode": "string",
- "errorMessage": "string",
- "seatsAvailable": 0,
- "fields": [
- {
- "label": "string",
- "reason": "string"
}
], - "quantityRequiredMin": 0,
- "quantityRequiredMax": 0,
- "priceOptions": [
- {
- "label": "string",
- "min": 0,
- "max": 0
}
]
}, - "warning": {
- "warningMessage": "string"
}, - "version": "string"
}
}