Warning: Do not use the Core API to request ARI data to update your own database. Our Push API was built for this purpose.
The Core API is the main OpenGDS API, used for requesting data such as availability, rates, inventory and supplements from OpenGDS, and sending new reservations to OpenGDS. Requests to the OpenGDS API can be made client-side (for example from JavaScripts) or server-side (for example from PHP scripts). Security dependent requests must use the Private key
and can only be made server-side (IP addresses of your servers need to be whitelisted).
Note: This guide represents the basic Core API functions, if you need other possibilities, send your case to api@opengds.com.
Server-side PHP example of a POST API request:
<?php
$ch = curl_init('https://api.opengds.com/core/v1/acc-reservation/create?apikey=...&hl=en&hc=USD');
curl_setopt_array($ch, [
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'rate_id' => 4010,
...
]
]);
$result = curl_exec($ch);
var_dump(json_decode($result, true));
...
Client-side jQuery AJAX example of a POST API request:
$.ajax({
method: 'POST',
url: 'https://api.opengds.com/core/v1/acc-reservation/create?apikey=...&hl=en&hc=USD',
data: {
rate_id: 4010,
...
}
}).done(function(result) {
console.log(result);
...
}).fail(function(jqXHR) {
if (jqXHR.responseJSON) {
alert(jqXHR.responseJSON.message);
}
});
Info: OpenGDS expects requests to be of Content-Type: application/json, application/x-www-form-urlencoded or multipart/form-data. Use UTF-8 character encoding.
OpenGDS returns a UTF-8 JSON response, Content-Type: application/json; charset=UTF-8.
Endpoints are composed in the following way: https://api.opengds.com/core/-version-/-category-/-action-
.
You can find each endpoint in the related section of the specific request.
Global request query parameters:
Request parameter | Necessity | Description |
---|---|---|
apikey | Mandatory | The API-key, used to identify your user group in communication with OpenGDS. You can also pass this key through the apikey HTTP header.
|
privkey | Optional | The Private key, used for security dependent requests. It is recommended to pass this key through the privkey HTTP header.This key only works for whitelisted IP addresses and may only be used for server-side scripting. It is also recommended not to save this key in any logs. |
hl | Optional | Host language, the language in which translations are returned. Format: Two-letter lowercase language code according to ISO-639. The language may also be represented as locale "ll-CC", where ll is a two-letter lowercase language code according to ISO-639 and CC is a two-letter uppercase country code according to ISO-3166. Default: If available the browser language, otherwise "en-US" is used. |
hc | Optional | Host currency, the currency in which rates are returned. Format: Three-letter uppercase currency code according to ISO-4217. Default: The currency of the API-key user group. |
Errors are returned in the following way:
{
"name": "Bad Request",
"message": "This promocode cannot be found.",
"code": 0,
"status": 400
}
JSON element | Presence | Description |
---|---|---|
name | Always | The name of the error. Format: string |
message | Always | The error message. Format: string |
code | Always | The general error code. Format: integer |
status | Always | The HTTP status code. Format: integer |
Scope | Accommodations |
Description | Receive rate, property and accommodation info, to build a rate selection page for the guest. |
Endpoint | https://api.opengds.com/core/v1/acc-rate/list |
Method | GET |
Request parameter | Necessity | Description |
---|---|---|
page_size | Optional | Number of rates per page (request). Format: integer Default: 50 Maximum: 50 |
page | Optional | The page to return. Format: integer Default: 1 |
theme_id | Optional | Filter rates on theme ID. Format: integer |
property_id | Optional | Filter rates on property ID. Format: JSON array as string Examples: Property ID 4002 => 4002 or [4002] Property ID 4002 and 4003 => [4002,4003] |
property_interface_id | Optional | Filter rates on property interface ID. Format: string |
property_filter | Optional | Refine the resulting properties with filters. Click here to see the complete list of filters.
Surroundings 300 => Beachfront 301 => By the water 303 => In the city 302 => Wooded area Facilities 100 => Airport shuttle 101 => Cycling 102 => Electric vehicle charging station 103 => Facilities for disabled guests 104 => Fitness center 105 => Free WiFi 116 => Front Desk Open 24/7 115 => Golf course 106 => Massage 114 => Non-smoking rooms 107 => Parking 108 => Pet friendly 109 => Restaurant 110 => Room service 111 => Sauna 112 => Swimming pool 117 => Tennis court 113 => Wellness centre Accessibility 203 => Auditory guidance 201 => Visual aids (Braille) 202 => Visual aids (tactile signs) 200 => Wheelchair accessible Format: JSON array as string Examples: [101] [103,108,110] |
location | Optional | Filter rates on the location of the property. Format: string |
country_code | Optional | Filter rates on the country code of the property. Format: Two-letter uppercase country code according to ISO 3166-1 alpha-2. |
latitude | Optional | Return properties within the radius around a point given by latitude and longitude .Format: number, decimal degrees. Minimum: -90 Maximum: 90 |
longitude | Optional | Return properties within the radius around a point given by latitude and longitude .Format: number, decimal degrees. Minimum: -180 Maximum: 180 |
radius | Optional | The search radius in meters(m), when using latitude and longitude .Format: integer Default: 5000 Minimum: 1000 Maximum: 100000 |
rate_id | Optional | Filter rates on rate ID. Format: integer |
rate_interface_id | Optional | Filter rates on rate interface ID. Format: JSON array as string Examples: Interface ID "6535253" => 6535253 or ["6535253"] Interface ID "6535253" and "739457" => ["6535253","739457"] |
rate_filter | Optional | Refine the resulting rates with filters. Click here to see the complete list of filters.
Meals 101 => All meals included 102 => All-inclusive 103 => Breakfast & dinner included 100 => Breakfast Included 104 => Non-inclusive Format: JSON array as string Examples: [102] [101,103] |
accom_filter | Optional | Refine the resulting rates with filters. Only rates with one or multiple accommodations matching the filter will be returned. For the resulting rates, all accommodations connected to the rate will be returned. Click here to see the complete list of filters.
Bed Preference 301 => Double bed 302 => Triple setup 300 => Twin beds Facilities 103 => Air conditioning 107 => Balcony 105 => Bathtub 117 => Cable TV 111 => Coffee machine 110 => Coffee/Tea maker 123 => Concierge service 109 => Electric kettle 119 => Hair dryer 114 => High-speed WiFi 100 => Hot tub/Jacuzzi 124 => Housekeeping daily service 120 => Iron or steamer 101 => Kitchen/Kitchenette 104 => Laptop-friendly workspace 115 => Minibar 102 => Private bathroom 122 => Room service 116 => Safe 118 => Satellite TV 113 => Sauna 108 => Soundproof 112 => Steam shower 106 => Terrace 121 => Wake-up service Accessibility 206 => Adapted bath 205 => Bathroom emergency cord 201 => Entirely on the ground floor 204 => Lowered sink 203 => Raised toilet 207 => Roll-in shower 209 => Shower chair 202 => Toilet with grab rails 208 => Walk-in shower 200 => Wheelchair accessible Format: JSON array as string Examples: [204] [107,206,208,300] |
arrival | Optional | Filter rates on availability with this arrival day. Format: YYYY-MM-DD (with leading zeros) |
depart | Optional | Filter rates on availability with this departure day, when using arrival .Format: YYYY-MM-DD (with leading zeros) Default: The first possible departure day, taking into account the Minimum Length of Stay and Closed to Departure. |
occupancy | Optional | Use this occupancy to filter rates on availability, when using arrival .Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] Default: 2 adults |
promocode | Optional | Filter rates on promocode. Format: string |
with_filters | Optional | Return the filters associated with properties, accommodations and rates. See property_filter , rate_filter and accom_filter for a complete list of filters.Format: 1 or 0 (boolean) Default: 0 |
{
"_property_count": 1,
"_rate_count": 1,
"_pages": 1,
"_currency_code": "USD",
"properties": [
{
"_sequence": 1,
"property_id": 4002,
"property_type_id": 3,
"name": "Test Property",
"address": "50 W 23rd St",
"postal_code": "NY 10010",
"location": "New York",
"country_code": "US",
"language": "en-US",
"currency_code": "USD",
"time_zone": "America/New_York (GMT-4)",
"latitude": "40.741922",
"longitude": "-73.991910",
"num_of_accoms": 84,
"checkin_from": "14:00",
"checkin_till": "22:00",
"checkout_till": "11:30",
"child_age": {
"1": {
"from": "0",
"till": "3"
},
"2": {
"from": "4",
"till": "6"
}
},
"acc_description": "Property description",
"filters": [
103,
108
],
"images": [
"https://cdn.opengds.com/property/4002_0.jpg",
"https://cdn.opengds.com/property/4002_1.jpg"
],
"rates": [
{
"_sequence": 1,
"rate_id": 4010,
"rate_interface_id": [
"847345",
"LG5653"
],
"theme_id": 1461,
"name": "Non refundable rate",
"description": "Rate description",
"valid_permanent": true,
"arrival_days": [
"Mon",
"Tue",
"Wed"
],
"restriction_type": "till",
"restriction_days": 30,
"default_minlos": 1,
"default_maxlos": 2,
"rate_type": "pppn",
"single_rate_type": 0,
"daily_supplement": {
"Fri": "4.5"
},
"child_rate": {
"1": {
"rate": "5",
"type": 1
}
},
"cancel_policy_id": 1104,
"cancel_policy": "No refund possible",
"payment_deposit": "100",
"payment_deposit_type": 1,
"payment_min_amount": "15",
"cc_verification": "opt",
"res_fee": "10",
"filters": [
101,
103
],
"images": [
"https://cdn.opengds.com/acc-rate/4010_0.jpg"
],
"accommodations": [
{
"_sequence": 1,
"_first_available": {
"arrival": "2026-12-10",
"depart": "2026-12-11"
},
"_min_rate": {
"rate": "75",
"arrival": "2026-12-14",
"depart": "2026-12-15"
},
"accom_id": 4004,
"name": "Deluxe room",
"description": "Room description",
"num_of_accoms": 46,
"number_of_persons": 2,
"min_number_of_persons": 1,
"extra_beds": 1,
"extra_beds_only_for_children": false,
"default_rate": "99",
"default_single_rate": "89",
"default_single_rate_type": 0,
"extra_bed_rate": "50",
"extra_bed_rate_type": 1,
"filters": [
107,
206
],
"images": [
"https://cdn.opengds.com/acc-accom/4004_0.jpg"
]
}
]
}
]
}
]
}
Note: Not all possible JSON elements are visible in the example above. They are present in the table below.
JSON element | Presence | Description |
---|---|---|
_property_count | Always | The total number of properties found for your search, independent of page_size .Format: integer |
_rate_count | Always | The total number of rates found for your search, independent of page_size .Format: integer |
_pages | Always | The number of pages you can request for your search. This is calculated as ceil(_rate_count / page_size ).Format: integer |
_currency_code | Always | The currency in which rates are returned. This is either the value from the hc parameter or the currency of the API-key user group when no hc parameter is given.Format: Three-letter uppercase currency code according to ISO-4217. |
properties | Always | Array which can contain multiple properties. An empty array is returned when no properties are found. |
_sequence | Always | The sequence index for this property, according to the order set in the backend. The array is always returned in the correct order by the OpenGDS server. Format: integer |
property_id | Always | The ID of the property. Format: integer |
property_interface_id | When the property has an Interface ID. | The Interface ID of the property. Format: string |
property_type_id | Always | The type of the property. Click here to see the complete list.
1 => Bed & Breakfast 2 => Campsite 3 => Hotel 4 => Guest house 5 => Holiday resort 6 => Apartments 7 => Beauty salon 8 => Golf course 9 => Restaurant 10 => Meeting location 11 => Wellness 12 => Cruise 13 => Villa 14 => Group accommodation Format: integer |
name | Always | The name of the property. Format: string |
address | Always | The address of the property. Format: string |
postal_code | Always | The postal code of the property. Format: string |
location | Always | The location of the property. Format: string |
country_code | Always | The country code of the property. Format: Two-letter uppercase country code according to ISO 3166-1 alpha-2. |
phone | Only server-side with Private key |
Telephone number of the property. Format: string |
Only server-side with Private key |
Email addresses of the property. Can contain multiple email addresses separated with a comma. |
|
language | Always | The main language of the property represented as locale. Format: ll-CC (where ll is a two-letter lowercase language code according to ISO-639 and CC is a two-letter uppercase country code according to ISO-3166) |
currency_code | Always | The currency code of the property. Format: Three-letter uppercase currency code according to ISO-4217. |
time_zone | Always | The time zone of the property. Format: string with time zone and GMT offset. |
latitude | Always | The latitude of the property. Can be used to show the property, for example, on Google Maps. Format: number as string, decimal degrees. |
longitude | Always | The longitude of the property. Can be used to show the property, for example, on Google Maps. Format: number as string, decimal degrees. |
num_of_accoms | Always | The total number of accommodations of the property. Format: integer |
checkin_from | When checkin_from has a value. |
Check-in from time of the property. Format: HH:MM |
checkin_till | When checkin_till has a value. |
Check-in till time of the property. Format: HH:MM |
checkout_till | When checkout_till has a value. |
Check-out till time of the property. Format: HH:MM |
child_age | When the property has age categories for children. | The age categories of the property. Format: Each existing category is sent as object with the elements from and till .A category contains ages up to and including the till age.The categories are always numbered sequentially. |
acc_description | Always | Description of the property for the accommodation mode. Format: string |
filters | When request parameter property_filter or with_filters (with value 1) is used and the property has filters. |
Filters associated with this property. See property_filter for a complete list of filters.Format: Array containing one or multiple filters as integer. |
images | When the property has images. | Images of the property. Format: Array with URL's of the images. |
rates | Always | Array containing one or multiple rates. |
_sequence | Always | The sequence index for this rate, according to the order set in the backend. The array is always returned in the correct order by the OpenGDS server. Format: integer |
rate_id | Always | The ID of the rate. Format: integer |
rate_interface_id | When the rate has an Interface ID. | The Interface IDs of the rate. Format: Array containing one or multiple interface IDs as string. |
theme_id | Always | The Theme ID of the rate. Format: integer |
promocode_only | When set to true. | Whether the rate can only be booked with a promocode. Format: true (boolean) |
name | Always | The name of the rate. Format: string |
description | Always | The description of the rate. Format: string |
valid_permanent | When set to true. | Whether the rate is permanently valid. Format: true (boolean) |
valid_from | When not permanently valid. | From this date, the rate is valid. Format: YYYY-MM-DD (with leading zeros) |
valid_till | When not permanently valid. | Until this date, the rate is valid. The rate is valid up to and including the valid_till date.Format: YYYY-MM-DD (with leading zeros) |
arrival_days | Always | The days of the week on which the guest can arrive for this rate. Arrival days not set here, can never be overwritten to become arrival days. Format: Array containing one or multiple three-letter representations of a day. |
restriction_type | When the rate has an arrival restriction. | The restriction type set for this rate, possible values are: "till" => Sets the number of restriction_days after which the rate can be booked."from" => Sets the number of restriction_days after which the rate can no longer be booked.
|
restriction_days | When the rate has an arrival restriction. | The restriction days set for this rate. Format: integer |
default_minlos | Always | The default Minimum Length of Stay setting of the rate. Format: integer |
default_maxlos | Always | The default Maximum Length of Stay setting of the rate. Format: integer |
rate_type | Always | How the rate is calculated, possible values are: "pppn" => Per person per night "papn" => Per accommodation per night "pp" => Per person "ps" => Per stay "pppd" => Per person per day "papd" => Per accommodation per day |
single_rate_type | Always | How the single rates are handled, possible values are: 0 => Single supplement (fixed supplement / percentage) 1 => Single rate (dynamic rate, can be set for each day) |
daily_supplement | When the rate has daily supplements. | The supplements valid for certain days of the week. Default rates and daily rates are always sent through the API without this supplement. Format: Days as a textual three letter representation, followed by the daily supplement as string. |
child_rate | When the rate has child rates. | The child rate per child category. Format: Each existing category is sent as object with the elements rate and type .The possible values for the type element:0 => Fixed rate 1 => Percentage |
cancel_policy_id | Always | The cancel policy ID of the rate. Format: integer |
cancel_policy | Always | The cancel policy of the rate. Format: string |
payment_deposit | When a deposit is applicable. | The deposit value. Format: number as string |
payment_deposit_type | When a deposit is applicable. | The payment_deposit type, possible values are:0 => Fixed rate 1 => Percentage |
payment_min_amount | When the minimum payment amount is applicable. | The minimum payment amount. Format: number as string |
cc_verification | When the Credit Card verification is applicable. | How the Credit Card verification is applied, possible values are: "opt" => Optional "md" => Mandatory |
res_fee | When the reservation fee is applicable. | The reservation fee. Format: number as string |
filters | When request parameter rate_filter or with_filters (with value 1) is used and the rate has filters. |
Filters associated with this rate. See rate_filter for a complete list of filters.Format: Array containing one or multiple filters as integer. |
images | When the rate has images. | Images of the rate. Format: Array with URL's of the images. |
accommodations | Always | Array containing one or multiple accommodations connected to the rate. |
_sequence | Always | The sequence index for this accommodation, according to the order set in the backend. The array is always returned in the correct order by the OpenGDS server. Format: integer |
_available | When request parameter arrival is used. |
The availability status of the accommodation. Format: true or false (boolean) OR the number of available accommodations when used server-side with the Private key .Format: integer |
_total | When request parameter arrival is used and the accommodation is available. |
The total price of the accommodation, based on arrival , depart and occupancy .Format: number as string |
_first_available | When request parameter arrival is not used and an available period is found. |
The first available period for this accommodation. 3 months in the future are searched, from "today" or from the starting date of the rate, if the rate starts in the future. Format: object
|
arrival | Always | The arrival day for the first available period. Format: YYYY-MM-DD (with leading zeros)
|
depart | Always | The departure day for the first available period. The period is as short as possible. Format: YYYY-MM-DD (with leading zeros) |
_min_rate | When request parameter arrival is not used and an available period is found. |
The minimum rate (cheapest possible stay) for this accommodation using the base occupancy. 3 months in the future are searched, from "today" or from the starting date of the rate, if the rate starts in the future. Format: object
|
rate | Always | The minimum rate for this accommodation.
You can divide this value by the number of nights of the stay to display the minimum daily rate. Format: number as string |
arrival | Always | The arrival day for the minimum rate. Format: YYYY-MM-DD (with leading zeros)
|
depart | Always | The departure day for the minimum rate. Format: YYYY-MM-DD (with leading zeros) |
accom_id | Always | The ID of the accommodation. Format: integer |
accom_interface_id | When the accommodation has an Interface ID. | The Interface ID of the accommodation. Format: string |
name | Always | The name of the accommodation. Format: string |
description | Always | The description of the accommodation. Format: string |
num_of_accoms | Always | The number of accommodations of this type. Format: integer |
number_of_persons | Always | The number of persons the accommodation is suitable for. Format: integer |
min_number_of_persons | Always | The minimum number of persons that must occupy the accommodation. Format: integer |
extra_beds | Always | The number of extra beds that can be placed in the accommodation. Format: integer |
extra_beds_only_for_children | When extra_beds are possible and set to true. |
Extra beds are only availble for children. Format: true (boolean) |
default_rate | Always | The default rate of the accommodation. Format: number as string |
default_single_rate | When applicable for the accommodation. | The default single rate of the accommodation. Format: number as string When single_rate_type equals 0, this value can be a positive or a negative number and must be added to or subtracted from the default/daily rate.
|
default_single_rate_type | When applicable for the accommodation. | The default single rate type of the accommodation, possible values are: 0 => Fixed rate 1 => Percentage When single_rate_type equals 1, this value will always be 0.
|
extra_bed_rate | When applicable for the accommodation. | The extra bed rate for the accommodation. Format: number as string |
extra_bed_rate_type | When applicable for the accommodation. | The extra bed rate type of the accommodation, possible values are: 0 => Fixed rate 1 => Percentage |
extra_night_rate | When applicable for the rate. | The extra night rate for the accommodation. Format: number as string |
filters | When request parameter accom_filter or with_filters (with value 1) is used and the accommodation has filters. |
Filters associated with this accommodation. See accom_filter for a complete list of filters.Format: Array containing one or multiple filters as integer. |
images | When the accommodation has images. | Images of the accommodation. Format: Array with URL's of the images. |
Scope | Accommodations |
Description | Filter a rate/property overview, build from your own database, on availability. |
Endpoint | https://api.opengds.com/core/v1/acc-rate/filter |
Method | GET |
Request parameter | Necessity | Description |
---|---|---|
rate_interface_id | Mandatory | Rate interface IDs you want to filter. Format: JSON array as string Examples: Interface ID "6535253" => 6535253 or ["6535253"] Interface ID "6535253" and "739457" => ["6535253","739457"] |
arrival | Mandatory | The arrival day you want to check for availability. Format: YYYY-MM-DD (with leading zeros) |
depart | Optional | The departure day you want to check for availability. Format: YYYY-MM-DD (with leading zeros) Default: The first possible departure day, taking into account the Minimum Length of Stay and Closed to Departure. |
occupancy | Optional | The occupancy to be used to check for availability. Accommodations which can not accommodate this occupancy, will not be checked. Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] Or when child categories or ages are not yet known: 2 adults and 2 children => [2,{"1":2}] Default: 2 adults |
zero_rate | Optional | Check only accommodations with a zero default rate for availability. Format: 1 or 0 (boolean) Default: 0 |
[
"6535253",
"739457"
]
An array containing only the available rate interface IDs is returned. An empty array will be returned if no rate interface IDs are available.
Scope | Accommodations |
Description | Check the availability for the accommodations of a specific rate_id. |
Endpoint | https://api.opengds.com/core/v1/acc-status/availability |
Method | GET |
Request parameter | Necessity | Description |
---|---|---|
rate_id | Mandatory | Check availability for rate ID. Format: integer |
accom_id | Mandatory | Check availability for accom ID. When occupancy is used, occupancy must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.Format: integer OR JSON array as string Examples: 1 accommodation with ID 4004 => 4004 or [4004] 1 accommodation with ID 4004 and 1 accommodation with 4003 => [4004,4003] 1 accommodation with ID 4004 and 2 accommodations with 4003 => [4004,4003,4003] |
arrival | Mandatory | The arrival day for which you want to check availability. Format: YYYY-MM-DD (with leading zeros) |
depart | Mandatory | The departure day for which you want to check availability. Format: YYYY-MM-DD (with leading zeros) |
occupancy | Optional | The occupancy to be used to check for availability. When occupancy is used, accom_id must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] 3 accommodations, with the above examples combined => [3,[2,{"3":1}],[1,{"2":1,"3":1}]] or [[3],[2,[5]],[1,[5,6]]] |
{
"available": true
}
JSON element | Presence | Description |
---|---|---|
available | Always | The availability status of the request. Format: true or false (boolean) |
Scope | Accommodations |
Description | Receive the minimum rates for the accommodations of a specific rate_id. This can be used to show the starting price at an accommodation select/overview. |
Endpoint | https://api.opengds.com/core/v1/acc-status/accom-min-rates |
Method | GET |
Tip: If possible, we recommend using the
_min_rate
element from the acc-rate/list request for more efficiency.
Request parameter | Necessity | Description |
---|---|---|
rate_id | Mandatory | Receive accommodations for rate ID. Format: integer |
occupancy | Mandatory | The occupancy to be used to check for availability and calculate rates. Accommodations which can not accommodate this occupancy, will not be returned. Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] |
from | Optional | The first day you want to check. Format: YYYY-MM-DD (with leading zeros) Default: Today or the first valid date, if the validity of the rate begins in the future. |
till | Optional | Check days up to and including this date. This date cannot be more than 75 days from the from date.Format: YYYY-MM-DD (with leading zeros) Default: The from date plus 75 days
|
nights | Optional | Force checking for availability and calculating rates with a specific number of nights. Format: integer Maximum: 45 Default: Minimum Length of Stay, Closed to Departure is taken into account. |
rate_type | Optional | Return rates in a specific rate_type, possible values are: "pn" => Per night (Default) "ps" => Per stay "pd" => Per day |
promocode | Optional | Promocode to be used to check for availability and calculate rates. Format: string |
[
{
"accom_id": 4003,
"min_rate": "235.79",
"arrival": "2026-12-10",
"depart": "2026-12-11"
},
{
"accom_id": 4004,
"min_rate": "180",
"arrival": "2026-12-14",
"depart": "2026-12-15"
},
{
"accom_id": 4006,
"min_rate": "198.5",
"arrival": "2026-12-10",
"depart": "2026-12-11"
},
{
"accom_id": 4007,
"min_rate": null
}
]
Note: Accommodations are only returned if the
occupancy
is possible for the accommodation. If no possible accommodations are found, an empty array is returned.
JSON element | Presence | Description |
---|---|---|
accom_id | Always | The ID of the accommodation. Format: integer |
min_rate | Always | The minimum rate for the accommodation based on the Minimum Length of Stay. If no available day is found for the accommodation within the period, null will be returned.Format: number as string or null |
arrival | When an available day for the accommodation is found within the period. | The arrival day for the minimum rate. Format: YYYY-MM-DD (with leading zeros) |
depart | When an available day for the accommodation is found within the period. | The departure day for the minimum rate. Format: YYYY-MM-DD (with leading zeros) |
Scope | Accommodations |
Description | Receive available days with corresponding rates to create a calendar overview. |
Endpoint | https://api.opengds.com/core/v1/acc-status/calendar |
Method | GET |
Example |
https://res.opengds.com/example/ Request is used to build the calendar. |
Tip: You can use the
_first_available
element from the acc-rate/list request to start a calendar on the month containing the first available arrival day.
Request parameter | Necessity | Description |
---|---|---|
rate_id | Mandatory | Receive available days for rate ID. Format: integer |
accom_id | Mandatory | Receive available days for accom ID. Format: integer OR JSON array as string Examples: Accommodation ID 4004 => 4004 or [4004] Accommodation ID 4004 and Accommodation ID 4003 => [4004,4003] Note: An array can only contain unique accommodation IDs. |
from | Mandatory | The first day you want to check for availability. Format: YYYY-MM-DD (with leading zeros) |
till | Mandatory | Check days for availability up to and including this date. This date cannot be more than 75 days from the from date.Why 75? If you want to build square calendars, you will need days from the previous and next month. In addition, some websites wish to have 2 calendars side by side. Format: YYYY-MM-DD (with leading zeros) |
occupancy | Mandatory | The occupancy to be used to check for availability and calculate rates. Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] |
nights | Optional | Force checking for availability with a specific number of nights. Format: integer Maximum: 45 |
promocode | Optional | Promocode to be used to check for availability and calculate rates. Format: string |
[
{
"date": "2026-10-24",
"accom_id": 4004,
"available": 4,
"rate": "238.5",
"breakdown": [
"238.5"
],
"minlos": 1,
"maxlos": 5
},
{
"date": "2026-10-26",
"accom_id": 4004,
"available": 3,
"rate": "216",
"breakdown": [
"106",
"110"
],
"minlos": 2,
"maxlos": 5
},
{
"date": "2026-10-27",
"accom_id": 4004,
"available": 4,
"rate": "240.75",
"breakdown": [
"110",
"130.75"
],
"minlos": 2,
"maxlos": 2
},
{
"date": "2026-10-28",
"accom_id": 4004,
"available": 6,
"rate": "238",
"breakdown": [
"238"
],
"minlos": 1,
"maxlos": 1
}
]
Note: An empty array is returned when no available days are found.
JSON element | Presence | Description |
---|---|---|
date | Always | The available day based on the minlos .When using the request parameter nights , the day is available for number of nights .Format: YYYY-MM-DD (with leading zeros) |
accom_id | When multiple accommodation IDs are used in the request parameter accom_id |
The ID of the accommodation. Format: integer |
available | Only server-side with Private key |
The number of available accommodations for the entire stay based on the minlos .When using the request parameter nights , the number of available accommodations is based on the number of nights .Format: integer |
rate | Always | The rate based on the minlos .When using the request parameter nights , the rate is based on the number of nights .Format: number as string |
breakdown | Always | Split rate into all days of stay.Format: Array containing one or multiple numbers as string |
minlos | Always | The Minimum Length of Stay for the available day. Closed to Departure is taken into account. When using the request parameter nights , the available day can in any case be booked for minlos nights and number of nights .Format: integer |
maxlos | Always | The Maximum Length of Stay for the available day. Closed to Departure is taken into account. Days beyond minlos do not have to be available.When using the request parameter nights , the available day can in any case be booked for minlos nights and number of nights .Format: integer |
Scope | Accommodations |
Description | Receive possible departure/stay days and corresponding rates for a specific arrival day. With this request you can (re-)build a calendar, so the guest can select a departure day, after the arrival day is selected. |
Endpoint | https://api.opengds.com/core/v1/acc-status/calendar-depart |
Method | GET |
Example |
https://res.opengds.com/example/ Request is used after clicking on a day of arrival in the calendar. |
Request parameter | Necessity | Description |
---|---|---|
rate_id | Mandatory | Receive departure/stay days for rate ID. Format: integer |
accom_id | Mandatory | Receive departure/stay days for accom ID. Format: integer OR JSON array as string Examples: Accommodation ID 4004 => 4004 or [4004] Accommodation ID 4004 and Accommodation ID 4003 => [4004,4003] Note: An array can only contain unique accommodation IDs. |
arrival | Mandatory | The arrival day for which you want to receive the departure/stay days. Format: YYYY-MM-DD (with leading zeros) |
occupancy | Mandatory | The occupancy to be used to check for availability and calculate rates. Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] |
promocode | Optional | Promocode to be used to check for availability and calculate rates. Format: string |
[
{
"date": "2026-11-11",
"accom_id": 4004,
"rate": "110.5",
"ctd": true
},
{
"date": "2026-11-12",
"accom_id": 4004,
"rate": "110.5",
"ctd": true
},
{
"date": "2026-11-13",
"accom_id": 4004,
"available": 5,
"rate": "120",
"ctd": false
},
{
"date": "2026-11-14",
"accom_id": 4004,
"available": 5,
"rate": "120",
"ctd": false
},
{
"date": "2026-11-15",
"accom_id": 4004,
"rate": "119",
"ctd": true
},
{
"date": "2026-11-16",
"accom_id": 4004,
"available": 4,
"rate": "119",
"ctd": false
},
{
"date": "2026-11-17",
"accom_id": 4004,
"available": 3,
"rate": null,
"ctd": false
}
]
Note: An empty array is returned when no possible departure days are found.
JSON element | Presence | Description |
---|---|---|
date | Always | The date of departure/stay. Format: YYYY-MM-DD (with leading zeros) |
accom_id | When multiple accommodation IDs are used in the request parameter accom_id |
The ID of the accommodation. Format: integer |
available | Only server-side with Private key and when ctd is false |
The number of available accommodations for the entire stay if departure takes place on this date. Format: integer |
rate | Always | The rate for the current date. The last date (departure day), has no rate and will always return null .Format: number as string or null |
ctd | Always | The date is a possible departure day if false (not Closed to Departure). Format: true or false (boolean) |
Scope | Accommodations |
Description | Create a receipt view for the guest. |
Endpoint | https://api.opengds.com/core/v1/acc-status/receipt |
Method | GET |
Note: This request does not check availability.
Request parameter | Necessity | Description |
---|---|---|
rate_id | Mandatory | Receive receipt for rate ID. Format: integer |
accom_id | Mandatory | Receive receipt for accom ID.occupancy must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.Format: integer OR JSON array as string Examples: 1 accommodation with ID 4004 => 4004 or [4004] 1 accommodation with ID 4004 and 1 accommodation with 4003 => [4004,4003] 1 accommodation with ID 4004 and 2 accommodations with 4003 => [4004,4003,4003] |
arrival | Mandatory | The arrival day for which you want to receive the receipt. Format: YYYY-MM-DD (with leading zeros) |
depart | Mandatory | The departure day for which you want to receive the receipt. Format: YYYY-MM-DD (with leading zeros) |
occupancy | Mandatory | The occupancy to be used to receive the receipt.accom_id must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] 3 accommodations, with the above examples combined => [3,[2,{"3":1}],[1,{"2":1,"3":1}]] or [[3],[2,[5]],[1,[5,6]]] |
level | Optional | The depth of the rate breakdown (show items split up into all days of stay), possible values are: 0 => No breakdown 1 => Breakdown accommodation rates (Default) 2 => Breakdown accommodation rates extended Also breakdown single rates, extra bed rates, children and promocodes. 3 => Breakdown all rates Also breakdown supplements, fees and taxes.
|
promocode | Optional | Promocode used for calculating the rates. Format: string |
supplements | Optional | The supplements chosen by the guest. Format: JSON object as string Example: Supplement ID 3867 with elements "adults", "children", "dates" and supplement ID 4878 with element "accom-4004":
|
payment_deposit | Optional | The amount that the guest has to pay. Format: number Conditions:
|
payment_deposit_type | Optional | The payment_deposit type, possible values are:0 => Fixed amount (Default) 1 => Percentage |
{
"total": "525",
"payment": {
"deposit": "420",
"percentage": "80"
},
"receipt": [
{
"id": "accom-rate",
"description": "Deluxe room",
"breakdown": [
{
"date": "2026-11-22",
"rate": "114.5",
"quantity": 2
},
{
"date": "2026-11-23",
"rate": "114.5",
"quantity": 2
}
],
"total": "458"
},
{
"id": "child-rate",
"description": "Children category 1",
"rate": "75",
"quantity": 1,
"total": "75"
},
{
"id": "promocode",
"description": "Test voucher (1234567890)",
"rate": "-100",
"quantity": 1,
"total": "-100"
},
{
"id": "supplement",
"description": "Bike rental (adults)",
"breakdown": [
{
"date": "2026-11-22",
"rate": "20",
"quantity": 2
},
{
"date": "2026-11-24",
"rate": "20",
"quantity": 2
}
],
"total": "80"
},
{
"id": "supplement",
"description": "Bath towels",
"rate": "12",
"quantity": 1,
"total": "12"
},
{
"id": "tax",
"description": "Rates are inclusive of taxes"
}
]
}
JSON element | Presence | Description |
---|---|---|
total | Always | The total price of the reservation. Format: number as string |
payment | When an online payment applies. | Object containing one or multiple payment items. |
deposit | Always | The amount that the guest has to pay. Format: number as string |
percentage | When a percentage of the total is applied. |
The percentage used to calculate the deposit .Format: number as string |
receipt | Always | Array containing one or multiple receipt items. |
id | Always | A non-unique ID for the item. For example, used for styling. Possible values are: (This list may be subject to change) "accom-rate" "single-rate" "extra-bed-rate" "child-rate" "promocode" "supplement" "res-fee" "tax" |
description | Always | Description of the item. Format: string |
rate | When no breakdown applies. |
The unit price of the item. Format: number as string |
quantity | When no breakdown applies. |
The quantity of the item. Format: integer |
total | When rates are applied. | The total price of the item. Format: number as string |
breakdown | When a breakdown applies. |
Array containing one or multiple days. |
date | Always | The date of stay. Format: YYYY-MM-DD (with leading zeros) |
rate | Always | The rate for the current date. Format: number as string |
quantity | Always | The quantity for the current date. Format: integer |
Scope | Accommodations |
Description | Receive optional supplements, to build a supplement selection page for the guest. |
Endpoint | https://api.opengds.com/core/v1/acc-supplement/list |
Method | GET |
Request parameter | Necessity | Description |
---|---|---|
rate_id | Mandatory | Receive supplements for rate ID. Format: integer |
accom_id | Mandatory | Receive supplements for accom ID.occupancy must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.Format: integer OR JSON array as string Examples: 1 accommodation with ID 4004 => 4004 or [4004] 1 accommodation with ID 4004 and 1 accommodation with 4003 => [4004,4003] 1 accommodation with ID 4004 and 2 accommodations with 4003 => [4004,4003,4003] |
arrival | Mandatory | The arrival day for which you want to receive the supplements. Format: YYYY-MM-DD (with leading zeros) |
depart | Mandatory | The departure day for which you want to receive the supplements. Format: YYYY-MM-DD (with leading zeros) |
occupancy | Mandatory | The occupancy to be used to receive the supplements.accom_id must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] 3 accommodations, with the above examples combined => [3,[2,{"3":1}],[1,{"2":1,"3":1}]] or [[3],[2,[5]],[1,[5,6]]] |
[
{
"_sequence": 1,
"supplement_id": 3867,
"supplement_interface_id": "79264",
"name": "Bike rental",
"description": "Electric bicycles with a sustainable battery.",
"rate_type": "pp_",
"rate": "20",
"child_rate": "15",
"images": [
"https://cdn.opengds.com/acc-supplement/3867_0.jpg",
"https://cdn.opengds.com/acc-supplement/3867_1.jpg"
],
"elements": [
{
"id": "adults",
"type": "select",
"label": "Number of adults",
"default": "3",
"options": [
{
"value": "0",
"text": "0 adults"
},
{
"value": "1",
"text": "1 adult"
},
{
"value": "2",
"text": "2 adults"
},
{
"value": "3",
"text": "3 adults"
}
]
},
{
"id": "children",
"type": "select",
"label": "Number of children",
"default": "1",
"options": [
{
"value": "0",
"text": "0 children"
},
{
"value": "1",
"text": "1 child"
}
]
},
{
"id": "dates",
"type": "checkbox",
"label": "Date selection",
"options": [
{
"value": "2026-11-22",
"text": "Sunday 11/22/2026"
},
{
"value": "2026-11-23",
"text": "Monday 11/23/2026"
},
{
"value": "2026-11-24",
"text": "Tuesday 11/24/2026"
}
]
}
]
},
{
"_sequence": 2,
"supplement_id": 4878,
"name": "Bath towels",
"description": "Nice soft towels in the room.",
"notice": "In combination with Deluxe room",
"rate_type": "papn",
"rate": "6",
"elements": [
{
"id": "accom-4004",
"type": "select",
"label": "Deluxe room",
"default": "2",
"options": [
{
"value": "1",
"text": "1x Deluxe room"
},
{
"value": "2",
"text": "2x Deluxe room"
}
]
}
]
}
]
Note: An empty array is returned when no supplements are found.
JSON element | Presence | Description |
---|---|---|
_sequence | Always | The sequence index for this supplement, according to the order set in the backend. The array is always returned in the correct order by the OpenGDS server. Format: integer |
supplement_id | Always | The ID of the supplement. Format: integer |
supplement_interface_id | When the supplement has an Interface ID. | The Interface ID of the supplement. Format: string |
name | Always | The name of the supplement. Format: string |
description | Always | The description of the supplement. Format: string |
notice | When accom_id contains multiple accommodations,but the supplement cannot be used in combination with all these accommodations. |
A notification that can be shown to the guest for the supplement. Format: string |
rate_type | Always | The rate type of the supplement, possible values are: "pc" => Per piece "pcpd" => Per piece per day "pcpn" => Per piece per night "pp" => Per person "pppd" => Per person per day "pppn" => Per person per night "pp_" => Per person [with date selection] "pa" => Per accommodation "papd" => Per accommodation per day "papn" => Per accommodation per night "pa_" => Per accommodation [with date selection] |
rate | Always | The price of the supplement. Format: number as string |
child_rate | When the supplement has a child rate. | The child price of the supplement. Format: number as string |
images | When the supplement has images. | Images of the supplement. Format: Array with URL's of the images. |
elements | Always | Array containing one or multiple supplement elements. |
id | Always | An ID unique for the element (not globally unique), returned to OpenGDS when the supplement is selected. Format: string |
type | Always | Input type of the element, possible values are: "select" "radio" "checkbox" |
label | Always | Description label, which can be shown at the element. Format: string |
default | When a default (option) value is recommended. | Recommended default (option) value, when the supplement is added by the guest. Format: string |
options | Always | Array containing one or multiple possible options for the element. |
value | Always | Value of the option, needs to be returned to OpenGDS when the option is selected. Format: string |
text | Always | Textual representation of the option, to show to the guest. Format: string |
Scope | Accommodations |
Description | Receive optional and mandatory supplements in their entirety so you can store them in your own database. |
Endpoint | https://api.opengds.com/core/v1/acc-supplement/raw |
Method | GET |
Note: This request can only be used server-side with the
Private key
.
Request parameter | Necessity | Description |
---|---|---|
page_size | Optional | Number of supplements per page (request). Format: integer Default: 100 Minimum: 50 Maximum: 200 |
page | Optional | The page to return. Format: integer Default: 1 |
property_id | Optional | Filter supplements on property ID. Format: JSON array as string Examples: Property ID 4002 => 4002 or [4002] Property ID 4002 and 4003 => [4002,4003] |
rate_id | Optional | Filter supplements on rate ID. Format: JSON array as string Examples: Rate ID 4010 => 4010 or [4010] Rate ID 4010 and 4011 => [4010,4011] |
optional | Optional | Receive optional, mandatory, or both types of supplements. Possible values are: 0 => Mandatory 1 => Optional Default: (when left blank) both optional and mandatory supplements are returned. |
{
"_supplement_count": 3,
"_pages": 1,
"_currency_code": "USD",
"properties": [
{
"property_id": 4002,
"supplements": [
{
"_sequence": 1,
"supplement_id": 3867,
"supplement_interface_id": "79264",
"optional": true,
"name": "Bike rental",
"description": "Electric bicycles with a sustainable battery.",
"rate_type": "pp_",
"rate": "20",
"child_rate": "15",
"days_possible": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
],
"arrival_day_possible": true,
"depart_day_possible": true,
"valid_permanent": true,
"valid_arrival_days": [
"Mon",
"Tue",
"Wed",
],
"valid_stay_days": [
"Mon",
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
],
"valid_depart_days": [
"Thu",
"Fri",
"Sat",
"Sun"
],
"only_valid_with_children": false,
"rate_ids": [
4010,
4011
],
"images": [
"https://cdn.opengds.com/acc-supplement/3867_0.jpg",
"https://cdn.opengds.com/acc-supplement/3867_1.jpg",
"https://cdn.opengds.com/acc-supplement/3867_2.jpg"
]
},
{
"_sequence": 2,
"supplement_id": 4883,
"optional": true,
"name": "Romantic Dinner",
"description": "An extensive 3-course dinner.",
"rate_type": "pc",
"rate": "38",
"maximum_number": 2,
"valid_from": "2026-01-10",
"valid_till": "2026-10-31",
"valid_arrival_days": [
"Tue",
"Wed"
],
"restriction_type": "from",
"restriction_days": 3,
"valid_stay_days": [
"Tue",
"Wed",
"Thu",
"Fri",
"Sat",
"Sun"
],
"valid_depart_days": [
"Mon",
"Tue",
"Wed",
"Sat",
"Sun"
],
"only_valid_with_children": false,
"rate_ids": [
4010
],
"accom_ids": [
4004,
4005
]
}
]
},
{
"property_id": 4003,
"supplements": [
{
"_sequence": 1,
"supplement_id": 4964,
"cm_mapping_id": "sauna",
"optional": false,
"name": "Sauna & Fitness",
"description": "Make use of our sauna and fitness facilities.",
"rate_type": "pppn",
"rate": "18.5",
"valid_permanent": true,
"valid_arrival_days": [
"Tue",
"Wed",
"Thu"
],
"valid_stay_days": [
"Wed",
"Thu",
"Fri"
],
"valid_depart_days": [
"Thu",
"Fri",
"Sat"
],
"only_valid_with_children": false,
"rate_ids": [
4010,
4011
],
"images": [
"https://cdn.opengds.com/acc-supplement/4964_0.jpg",
"https://cdn.opengds.com/acc-supplement/4964_1.jpg"
]
}
]
}
]
}
Note: The response to this request must be stored and can only be requested a limited number of times per hour.
JSON element | Presence | Description |
---|---|---|
_supplement_count | Always | The total number of supplements found for your search, independent of page_size .Format: integer |
_pages | Always | The number of pages you can request for your search. This is calculated as ceil( _supplement_count / page_size ).Format: integer |
_currency_code | Always | The currency in which the supplement rates are returned. This is either the value from the hc parameter or the currency of the API-key user group when no hc parameter is given.Format: Three-letter uppercase currency code according to ISO-4217. |
properties | Always | Array which can contain multiple properties. An empty array is returned when no supplements are found. |
_sequence | Always | The sequence index for this supplement, according to the order set in the backend. The array is always returned in the correct order by the OpenGDS server. Format: integer |
supplement_id | Always | The ID of the supplement. Format: integer |
supplement_interface_id | When the supplement has an Interface ID. | The Interface ID of the supplement. Format: string |
cm_mapping_id | When the supplement has a Channel Manager mapping ID. | The Channel Manager mapping ID of the supplement. Format: string |
optional | Always | The type of supplement, possible values are: true => Optional bookable supplement false => Mandatory supplement |
name | Always | The name of the supplement. Format: string |
description | Always | The description of the supplement. Format: string |
rate_type | Always | The rate type of the supplement, possible values are: "pc" => Per piece "pcpd" => Per piece per day "pcpn" => Per piece per night "pp" => Per person "pppd" => Per person per day "pppn" => Per person per night "pp_" => Per person [with date selection] "pa" => Per accommodation "papd" => Per accommodation per day "papn" => Per accommodation per night "pa_" => Per accommodation [with date selection] "pr" => Per reservation |
rate | Always | The price of the supplement. Format: number as string |
child_rate | When the supplement has a child rate. | The child price of the supplement. Format: number as string |
maximum_number | When the supplement has a maximum number. | The maximum number that can be ordered of this supplement per reservation. Format: integer |
days_possible | When a rate type [with date selection] is selected. | When a [with date selection] value is selected for rate_type , you can choose whether the supplement can be ordered on certain days.
This option indicates on which days the supplement can be ordered.Format: Array containing one or multiple three-letter representations of a day. |
arrival_day_possible | When a rate type [with date selection] is selected. | When a [with date selection] value is selected for rate_type , you can choose whether the supplement can be ordered on certain days.
This option indicates whether the supplement can be ordered on the day of arrival.
The arrival day must also appear in days_possible to be bookable.Format: true or false (boolean) |
depart_day_possible | When a rate type [with date selection] is selected. | When a [with date selection] value is selected for rate_type , you can choose whether the supplement can be ordered on certain days.
This option indicates whether the supplement can be ordered on the day of departure.
The departure day must also appear in days_possible to be bookable.Format: true or false (boolean) |
valid_permanent | When set to true. | Whether the supplement is permanently valid. Format: true (boolean) |
valid_from | When not permanently valid. | From this (arrival) date, the supplement is valid. Format: YYYY-MM-DD (with leading zeros) |
valid_till | When not permanently valid. | Until this (arrival) date, the supplement is valid. The supplement is valid up to and including the valid_till date.Format: YYYY-MM-DD (with leading zeros) |
valid_arrival_days | Always | The arrival days on which this supplement is valid. Format: Array containing one or multiple three-letter representations of a day. |
restriction_type | When the supplement has a restriction. | The restriction type set for this supplement, possible values are: "from" => Restriction from the set number of restriction_days before arrival."till" => Restriction till the set number of restriction_days before arrival.
|
restriction_days | When the supplement has a restriction. | The restriction days set for this supplement. Format: integer |
valid_stay_days | Always | The days within the stay period (arrival and departure day excluded) on which the supplement is valid.
This only applies to stays longer than 1 night / 2 days. Format: Array containing one or multiple three-letter representations of a day. |
valid_depart_days | Always | The departure days on which this supplement is valid. Format: Array containing one or multiple three-letter representations of a day. |
only_valid_with_children | Always | The supplement is only valid if children are staying in an accommodation for which this supplement applies. Format: true or false (boolean) |
rate_ids | Always | The rates for which the supplement is valid. Format: Array containing one or multiple rate IDs as integer. |
accom_ids | When the supplement is valid for a selection of accommodations. | The accommodations for which the supplement is valid. Format: Array containing one or multiple accommodation IDs as integer. |
images | When the supplement has images. | Images of the supplement. Format: Array with URL's of the images. |
Scope | Accommodations |
Description | Validate promocode for promocode input field. |
Endpoint | https://api.opengds.com/core/v1/acc-promocode/check |
Method | POST |
Info: Every request receiving a promocode will validate the promocode (for example the acc-rate/list request), so this request only needs to be used to validate a promocode input field, or to show additional information of the promocode in your reservation process.
Request parameter | Necessity | Description |
---|---|---|
promocode | Mandatory | Promocode subject to validation. Format: string |
rate_id | Optional | Also validate if rate_id is possible for this promocode.Format: integer |
arrival | Optional | Also validate if arrival date is possible for this promocode.Format: YYYY-MM-DD (with leading zeros) |
{
"valid_from": "2026-01-10",
"valid_till": "2026-10-31",
"valid_from_arrival": "2026-03-01",
"valid_till_arrival": "2026-11-30",
"type": "discount",
"discount_type": "pp",
"discount_rate": "7.95",
"discount_rate_type": 0,
"description": "Promocode description",
"disable_rate_discount": false,
"multi_accom": false,
"single_use": true
}
Note: If the validation fails, an error with HTTP status code 422 will be returned with the validation error in the
message
element. This message can be shown to the guest.
JSON element | Presence | Description |
---|---|---|
valid_from | When the promocode has a valid_from date. |
From this date, the promocode can be used to make a reservation. Format: YYYY-MM-DD (with leading zeros) |
valid_till | When the promocode has a valid_till date. |
Until this date, the promocodes can be used to make a reservation. The promocode is valid up to and including the valid_till date.Format: YYYY-MM-DD (with leading zeros) |
valid_from_arrival | When the promocode has a valid_from_arrival date. |
This is the first arrival day guests can choose, when making a reservation with the promocode. Format: YYYY-MM-DD (with leading zeros) |
valid_till_arrival | When the promocode has a valid_till_arrival date. |
This is the last arrival day guests can choose, when making a reservation with the promocode. Arrivals are possible up to and including the valid_till_arrival date.Format: YYYY-MM-DD (with leading zeros) |
type | Always | The promocode type, possible values are: "access" => Gives access to the connected rates. "discount" => Gives the specified discount on the connected rates. |
discount_type | When type is set to "discount". |
How the discount is calculated, possible values are: "pd" => Per day "pn" => Per night "pp" => Per person "pa" => Per accommodation "pr" => Per reservation |
discount_rate | When type is set to "discount". |
The actual discount rate. Format: number as string |
discount_rate_type | When type is set to "discount". |
The type of the discount_rate , possible values are:0 => Fixed rate 1 => Percentage |
description | When a promocode description is applicable. | The description of this promocode. Format: string |
disable_rate_discount | Always | Other discounts on the rate (like long stay, early booking or last minute discounts) will be disabled for this promocode. Format: true or false (boolean) |
multi_accom | Always | The promocode can be used for reservations with multiple accommodations. Format: true or false (boolean) |
single_use | Always | The promocode can only be used once. Format: true or false (boolean) |
Scope | Accommodations |
Description | Create a new reservation. |
Endpoint | https://api.opengds.com/core/v1/acc-reservation/create |
Method | POST |
Info: By default a reservation will be immediately confirmed. But when an online payment is required the following procedure applies:
- (optional) The acc-status/receipt request can be used to determine whether an online payment is required for the current reservation.
In this case, thepayment
element is returned. You can use thispayment
element to inform the guest about the online payment.- When you create a reservation that requires an online payment, the elements
payment
(=true) andhash
are returned. In this case the reservation is created as unconfirmed. During this process, the availability is immediately reduced to prevent overbookings, ensuring that the accommodation is temporarily held while the payment is being processed. If the payment is not completed, the availability will be restored.
You can redirect the guest to your payment module using a 302 redirect.
For example, if your payment module is running on payment.mydomain.com/start.php, you can redirect to:
https://payment.mydomain.com/start.php?res_id=4637589&hash=56841335e2dbc8cefa571de4870cee68a35226b77d6245a84a145f85cfbade90
(usingres_id
andhash
returned by the acc-reservation/create request)- In your start.php you can use the acc-reservation/payment-read request to receive the necessary data to start your payment with your payment provider (eg Adyen, PayPal, Google Pay etc.). The
hash
value is used to detect whether the guest has tampered with theres_id
value.- You can update the payment status with the acc-reservation/payment-update request.
The reservation will only be confirmed once the payment reaches the "authorized" or "paid" status.
Request parameter | Necessity | Description |
---|---|---|
template_id | Optional | The template used for the reservation. Determines the settings for the confirmation email to the guest. Format: string |
rate_id | Mandatory | Create the reservation for this rate ID. Format: integer |
accom_id | Mandatory | Create the reservation for this accom ID.occupancy must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.Format: integer OR JSON array as string Examples: 1 accommodation with ID 4004 => 4004 or [4004] 1 accommodation with ID 4004 and 1 accommodation with 4003 => [4004,4003] 1 accommodation with ID 4004 and 2 accommodations with 4003 => [4004,4003,4003] |
arrival | Mandatory | The arrival day of the reservation. Format: YYYY-MM-DD (with leading zeros) |
depart | Mandatory | The departure day of the reservation. Format: YYYY-MM-DD (with leading zeros) |
occupancy | Mandatory | The occupancy to be used to create the reservation.accom_id must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] 3 accommodations, with the above examples combined => [3,[2,{"3":1}],[1,{"2":1,"3":1}]] or [[3],[2,[5]],[1,[5,6]]] |
corporate_code | Optional | Corporate code used for the reservation. Format: string |
promocode | Mandatory when promocode_only is set to true for the rate. |
Promocode used for the reservation. Format: string (max. 20 characters) |
supplements | Optional | The supplements chosen by the guest. Format: JSON object as string Example: Supplement ID 3867 with elements "adults", "children", "dates" and supplement ID 4878 with element "accom-4004":
|
open_supplements | Optional | Add your own supplements. These supplements do not have to be present in OpenGDS. Format: JSON array as string Example:
|
gender | Optional | The gender of the guest. Format: "female", "male" or "other" |
first_name | Mandatory | The first name of the guest. Format: string (max. 50 characters) |
last_name | Mandatory | The last name of the guest. Format: string (max. 50 characters) |
company_name | Optional | The name of the company. Format: string (max. 50 characters) |
address | Optional | The address of the guest or company. Format: string (max. 100 characters) |
postal_code | Optional | The postal code of the guest or company. Validation depends on the country_code .Format: string (max. 10 characters) |
location | Optional | The location of the guest or company. Format: string (max. 80 characters) |
state_prov | Optional | The state or province of the guest or company. Format: string (max. 50 characters) |
country_code | Optional | The country code of the guest or company. Format: Two-letter uppercase country code according to ISO 3166-1 alpha-2. |
phone | Mandatory | The phone number of the guest or company. Format: string (min. 8 characters, max. 20 characters, can contain decimals, spaces, '+', '-', '(' and ')') |
Mandatory | The email address of the guest or company. Format: string (valid email address) |
|
cc_holder | Mandatory when cc_verification is set to "md" for the rate. |
The credit card holder. Format: string (max. 50 characters) |
cc_number | Mandatory when cc_verification is set to "md" for the rate. |
The credit card number. Format: string (valid credit card number, spaces allowed) |
cc_cvc_code | Mandatory when cc_verification is set to "md" for the rate. |
The credit card CVC code. Format: string (3 or 4 digit valid CVC code) |
cc_expiry_month | Mandatory when cc_verification is set to "md" for the rate. |
The credit card expiration month. Format: MM (with leading zero) |
cc_expiry_year | Mandatory when cc_verification is set to "md" for the rate. |
The credit card expiration year. Format: YYYY |
comments | Optional | The comments of the guest. Format: string (max. 500 characters) |
newsletter_subscription | Optional | The newsletter opt-in status of the guest. Format: 1 or 0 (boolean) Default: 0 |
additional_fields | Optional | Additional fields for the reservation. Format: JSON object as string Each first level element can contain:
Use English as field name language, many field names will be automatically translated when needed. Example:
|
payment_deposit | Optional | The amount that the guest has to pay. Format: number Conditions:
|
payment_deposit_type | Optional | The payment_deposit type, possible values are:0 => Fixed amount (Default) 1 => Percentage |
payment_fields | Optional | Payment fields for the reservation. You can add details of the payment like a payment ID. The content of this field can also be updated after the payment with the acc-reservation/payment-update request. Format: JSON object as string Must be a single-dimensional object. Use underscores for the spaces in the field names. This way field names can be converted to readable names. Use English as field name language, many field names will be automatically translated when needed. Example:
|
trace_code | Optional | An open trace code to identify the reservation or bundle of reservations.
|
Tip: Use the following countermeasures to prevent reservations from being submitted twice.
- After clicking the reservation submit button, disable the button, so the guest cannot double-click or click again to submit a double reservation.
- Redirect the guest to a new URL for the "Reservation successful" page, so reloading the last page will not result in a double reservation.
{
"res_id": 4637589,
"payment": true,
"hash": "56841335e2dbc8cefa571de4870cee68a35226b77d6245a84a145f85cfbade90"
}
Note: If the validation fails, an error with HTTP status code 422 will be returned with the validation error in the
message
element. This message can be shown to the guest.
JSON element | Presence | Description |
---|---|---|
res_id | Always | The ID of the reservation (reservation number) Format: integer |
payment | When the guest has to make an online payment. | The reservation is received but not confirmed, the guest must be redirected to the payment module. Format: true (boolean) |
hash | When the guest has to make an online payment. | Can be sent with an acc-reservation/payment-read request, to verify the res_id .Format: string |
Scope | Accommodations |
Description | Update an existing reservation. |
Endpoint | https://api.opengds.com/core/v1/acc-reservation/update |
Method | POST |
Note: This request can only be used server-side with the
Private key
.
Info:
- The language and currency used for the acc-reservation/create request are also used for the reservation update.
- If
promocode
is not updated and a promocode was used for the reservation, updating thearrival
outside the validity of the original promocode will result in an error.- When updating
accom_id
,arrival
,depart
,occupancy
,promocode
orsupplements
, the reservation rates are re-calculated. When static rates, for example, extra bed rates, supplement rates or child rates are changed, the new values will be used.- When
supplements
is not updated, supplements no longer compatible with the updated reservation are automatically filtered.
Request parameter | Necessity | Description |
---|---|---|
res_id | Mandatory | The ID of the reservation you want to update. Format: integer |
accom_id | Optional | Update the reservation for this accom ID.occupancy must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.When occupancy is not sent with the update request, the existing value for the reservation is used.Format: integer OR JSON array as string Examples: 1 accommodation with ID 4004 => 4004 or [4004] 1 accommodation with ID 4004 and 1 accommodation with 4003 => [4004,4003] 1 accommodation with ID 4004 and 2 accommodations with 4003 => [4004,4003,4003] |
arrival | Optional | The arrival day of the reservation. Format: YYYY-MM-DD (with leading zeros) |
depart | Optional | The departure day of the reservation. Format: YYYY-MM-DD (with leading zeros) |
occupancy | Optional | The occupancy to be used to update the reservation.accom_id must have the same number of elements and the order determines which occupancy belongs to which accommodation.
So the first element in accom_id will be linked to the first element in occupancy etc.When accom_id is not sent with the update request, the existing value for the reservation is used.Format: JSON array as string Examples: 3 adults => 3 or [3] 2 adults and 1 child aged 5 years => [2,[5]] 1 adult and 2 children aged 5 and 6 years => [1,[5,6]] 2 adults and 1 child in category 3 => [2,{"3":1}] 1 adult, 1 child in category 2 and 1 child in category 3 => [1,{"2":1,"3":1}] 3 accommodations, with the above examples combined => [3,[2,{"3":1}],[1,{"2":1,"3":1}]] or [[3],[2,[5]],[1,[5,6]]] |
promocode | Optional | Promocode used for the reservation. Format: string (max. 20 characters)
|
supplements | Optional | The supplements chosen by the guest. Previous supplements are overwritten. An empty string can be used to remove all supplements from the reservation. Format: JSON object as string Example: Supplement ID 3867 with elements "adults", "children", "dates" and supplement ID 4878 with element "accom-4004":
|
open_supplements | Optional | Add your own supplements. These supplements do not have to be present in OpenGDS. Previous open supplements are overwritten. An empty string can be used to remove all open supplements from the reservation. Format: JSON array as string Example:
|
gender | Optional | The gender of the guest. Format: "female", "male" or "other" |
first_name | Optional | The first name of the guest. Format: string (max. 50 characters) |
last_name | Optional | The last name of the guest. Format: string (max. 50 characters) |
company_name | Optional | The name of the company. Format: string (max. 50 characters) |
address | Optional | The address of the guest or company. Format: string (max. 100 characters) |
postal_code | Optional | The postal code of the guest or company. Validation depends on the country_code .Format: string (max. 10 characters) |
location | Optional | The location of the guest or company. Format: string (max. 80 characters) |
state_prov | Optional | The state or province of the guest or company. Format: string (max. 50 characters) |
country_code | Optional | The country code of the guest or company. Format: Two-letter uppercase country code according to ISO 3166-1 alpha-2. |
phone | Optional | The phone number of the guest or company. Format: string (min. 8 characters, max. 20 characters, can contain decimals, spaces, '+', '-', '(' and ')') |
Optional | The email address of the guest or company. Format: string (valid email address) |
|
cc_holder | Optional (Only saved when cc_verification is enabled for the rate) |
The credit card holder. Format: string (max. 50 characters) |
cc_number | Optional (Only saved when cc_verification is enabled for the rate) |
The credit card number. Format: string (valid credit card number, spaces allowed) |
cc_cvc_code | Optional (Only saved when cc_verification is enabled for the rate) |
The credit card CVC code. Format: string (3 or 4 digit valid CVC code) |
cc_expiry_month | Optional (Only saved when cc_verification is enabled for the rate) |
The credit card expiration month. Format: MM (with leading zero) |
cc_expiry_year | Optional (Only saved when cc_verification is enabled for the rate) |
The credit card expiration year. Format: YYYY |
comments | Optional | The comments of the guest. Previous comments are overwritten. An empty string can be used to remove all comments from the reservation. Format: string (max. 500 characters) |
newsletter_subscription | Optional | The newsletter opt-in status of the guest. Format: 1 or 0 (boolean) Default: 0 |
additional_fields | Optional | Additional fields for the reservation. Previous additional fields are overwritten. An empty string can be used to remove all additional fields from the reservation. Format: JSON object as string Each first level element can contain:
Use English as field name language, many field names will be automatically translated when needed. Example:
|
payment_deposit | Optional | Updates the amount the guest has to pay or has paid. (depending on the payment status) Format: number Conditions:
The payment status will remain unchanged. |
payment_deposit_type | Optional | The payment_deposit type, possible values are:0 => Fixed amount (Default) 1 => Percentage |
payment_fields | Optional | Payment fields for the reservation. You can add details of the payment like a payment ID. The content of this field can also be updated after the payment with the acc-reservation/payment-update request. Previous payment fields are overwritten. An empty string can be used to remove all payment fields from the reservation. Format: JSON object as string Must be a single-dimensional object. Use underscores for the spaces in the field names. This way field names can be converted to readable names. Use English as field name language, many field names will be automatically translated when needed. Example:
|
Note: Only confirmed reservations can be updated.
{
"success": true
}
Note: If the validation fails, an error with HTTP status code 422 will be returned with the validation error in the
message
element. This message can be shown to the guest.
JSON element | Presence | Description |
---|---|---|
success | Always | The reservation update was successful. Format: true (boolean) |
Scope | Accommodations |
Description | Cancel an existing reservation. |
Endpoint | https://api.opengds.com/core/v1/acc-reservation/cancel |
Method | POST |
Note: This request can only be used server-side with the
Private key
.
Request parameter | Necessity | Description |
---|---|---|
res_id | Mandatory | The ID of the reservation you want to cancel. Format: integer |
Note: Only confirmed reservations can be cancelled.
{
"success": true
}
JSON element | Presence | Description |
---|---|---|
success | Always | The cancellation of the reservation was successful. Format: true (boolean) |
Scope | Accommodations |
Description | Receive the necessary data to start your payment with your payment provider. (eg Adyen, PayPal, Google Pay etc.) |
Endpoint | https://api.opengds.com/core/v1/acc-reservation/payment-read |
Method | GET |
Note: This request can only be used server-side with the
Private key
.
Request parameter | Necessity | Description |
---|---|---|
res_id | Mandatory | The ID of the reservation for which you want to receive the data. Format: integer |
hash | Optional | The hash returned from the acc-reservation/create request.This parameter can be used to detect whether the guest has tampered with the res_id value.Format: string |
{
"property_name": "Test Property",
"rate_name": "Non refundable rate",
"arrival": "2026-11-22",
"depart": "2026-11-25",
"deposit": "232.86",
"currency_code": "USD",
"language": "en-US",
"first_name": "Jane",
"last_name": "Doe",
"address": "50 W 23rd St",
"postal_code": "NY 10010",
"location": "New York",
"country_code": "US",
"email": "jane.doe@example.com"
}
JSON element | Presence | Description |
---|---|---|
property_name | Always | The name of the property. Can be used in the payment description. Format: string |
rate_name | Always | The name of the rate, in the language used by the guest during the reservation. Can be used in the payment description. Format: string |
arrival | Always | The arrival day of the guest. Can be used in the payment description. Format: YYYY-MM-DD (with leading zeros) |
depart | Always | The departure day of the guest. Can be used in the payment description. Format: YYYY-MM-DD (with leading zeros) |
deposit | Always | The amount that the guest has to pay in the currency code used by the guest during the reservation.Format: number as string |
currency_code | Always | The currency code used by the guest during the reservation. The deposit is in this currency.Format: Three-letter uppercase currency code according to ISO-4217. |
language | Always | The language used by the guest during the reservation, represented as locale. Format: ll-CC (where ll is a two-letter lowercase language code according to ISO-639 and CC is a two-letter uppercase country code according to ISO-3166) |
first_name | Always | The first name of the guest. Format: string |
last_name | Always | The last name of the guest. Format: string |
address | When address has a value. |
The address of the guest. Format: string |
postal_code | When postal_code has a value. |
The postal code of the guest. Format: string |
location | When location has a value. |
The location of the guest. Format: string |
country_code | When country_code has a value. |
The country code of the guest. Format: Two-letter uppercase country code according to ISO 3166-1 alpha-2. |
Always | Email addresses of the guest. Format: string |
Scope | Accommodations |
Description | Update the payment status for an unconfirmed reservation. |
Endpoint | https://api.opengds.com/core/v1/acc-reservation/payment-update |
Method | POST |
Note: This request can only be used server-side with the
Private key
.
Info: When a new reservation is created, the payment status is "open". During this process, the availability is immediately reduced to prevent overbookings, ensuring that the accommodation is temporarily held while the payment is being processed. If no update is received within 30 minutes, the payment status will change to "expired", and the availability will be restored.
When the guest completes the payment, but the new payment status is still unknown, you can set the payment status to "pending" to prevent it from expiring after 30 minutes. If a "pending" payment does not reach a subsequent status within two weeks, the payment status will change to "expired", and the availability will be restored.
If the payment status changes to "failed" or "cancelled", the availability will also be restored.
It is therefore important to notify us of any changes to the payment status as soon as possible, so that availability is not blocked longer than necessary.
Which status can follow a previous status:
Request parameter | Necessity | Description |
---|---|---|
res_id | Mandatory | The ID of the reservation you want to update. Format: integer |
hash | Optional | The hash returned from the acc-reservation/create request.This parameter can be used to detect whether the guest has tampered with the res_id value.Format: string |
payment_status | Mandatory | The new payment status, possible values are: "pending" => the guest finished the payment, but the payment status is still unkown "authorized" => Payment approved by the financial institution, reservation becomes confirmed "paid" => Payment is successfully paid, reservation becomes confirmed "failed" => Payment has failed at the payment provider, availability restored "cancelled" => Payment is cancelled, availability restored "expired" => Payment not fulfilled within the allowed time, availability restored "refunded" => Payment refund has been requested "chargeback" => Payment chargeback has been requested |
payment_fields | Optional | Payment fields for the reservation. You can add details of the payment, for instance the used payment method. New fields are added to the existing payment_fields , existing fields with the same field name will be overwritten.Format: JSON object as string Must be a single-dimensional object. Use underscores for the spaces in the field names. This way field names can be converted to readable names. Use English as field name language, many field names will be automatically translated when needed. Example:
|
{
"success": true
}
JSON element | Presence | Description |
---|---|---|
success | Always | The payment status update was successful. Format: true (boolean) |
Scope | Accommodations |
Description | Receive an overview of the availability of your rates. |
Endpoint | https://api.opengds.com/core/v1/acc-status/availability-audit |
Method | GET |
Note: This request can only be used server-side with the
Private key
.
Request parameter | Necessity | Description |
---|---|---|
page_size | Optional | Number of audits per page (request). Format: integer Default: 500 Minimum: 50 Maximum: 500 |
page | Optional | The page to return. Format: integer Default: 1 |
month | Mandatory | Get the audits for this month, this can be the current month or a future month, limited to one year. Format: Numeric representation of a month, with leading zero (01 through 12) |
theme_id | Optional | Filter audits on theme ID. Format: integer |
audit_mode | Optional | Get the audits based on rates or accommodations, possible values are: "rates" => Merged into rates (Default) "accoms" => broken down into accommodations |
{
"_count": 3,
"_pages": 1,
"audits": [
{
"rate_id": 4010,
"accom_id": 4004,
"num_of_accoms": 34,
"avg_available": 28,
"active_days": 31,
"available_days": 24
},
{
"rate_id": 4010,
"accom_id": 4006,
"num_of_accoms": 9,
"avg_available": 9,
"active_days": 31,
"available_days": 31
},
{
"rate_id": 4011,
"accom_id": 4004,
"num_of_accoms": 34,
"avg_available": 22,
"active_days": 31,
"available_days": 30
}
}
Info: Disabled properties, rates and accommodations are not included.
Note: The availability audit is updated once a day.
JSON element | Presence | Description |
---|---|---|
_count | Always | The total number of audits found for your search, independent of page_size .Format: integer |
_pages | Always | The number of pages you can request for your search. This is calculated as ceil(_count / page_size ).Format: integer |
audits | Always | Array which can contain multiple audits. An empty array is returned when no audits are found. |
rate_id | Always | The ID of the rate. Format: integer |
accom_id | When request parameter audit_mode has the value "accoms". |
The ID of the accommodation. Format: integer |
num_of_accoms | Always | The number of accommodations (the maximum daily availability). Format: integer |
avg_available | Always | The average of the daily availability + consumed availability by confirmed reservations for the active (potentially bookable) days of the month. Format: integer |
active_days | Always | The number of active (potentially bookable) days of the month. Format: integer |
available_days | Always | The number of available days for this month (bookable with at least an availability of 1). Format: integer |
Scope | Accommodations |
Description | Reset the Push API for a specific rate. |
Endpoint | https://api.opengds.com/core/v1/acc-rate/reset-push-api-status |
Method | POST |
Note: This request can only be used server-side with the
Private key
.
Request parameter | Necessity | Description |
---|---|---|
rate_id | Mandatory | Reset the Push API for this rate ID. Format: integer |
{
"success": true
}
Note: To maintain platform stability, this endpoint is limited to 10 reset calls per minute per client.
Sending bulk reset requests (e.g., for all rates at once) via the Core API is not supported and will result in throttling.
If you require a full reset, please initiate this via the Status push reset function in the OpenGDS backend instead, this is optimized for bulk operations and avoids rate limit issues.
JSON element | Presence | Description |
---|---|---|
success | Always | Push API reset was successfully initiated. Format: true (boolean) |
Scope | Miscellaneous |
Description | Receive countries, to build a country select for the guest. |
Endpoint | https://api.opengds.com/core/v1/misc/countries |
Method | GET |
[
{
"code": "AF",
"name": "Afghanistan"
},
{
"code": "AL",
"name": "Albania"
},
{
"code": "DZ",
"name": "Algeria"
},
{
"code": "AS",
"name": "American Samoa"
},
...
]
JSON element | Presence | Description |
---|---|---|
code | Always | The country code. Format: Two-letter uppercase country code according to ISO 3166-1 alpha-2. |
name | Always | The name of the country. Format: string |
Scope | Miscellaneous |
Description | Search for an address by Postal Code, to autofill street and location in the reservation form. |
Endpoint | https://api.opengds.com/core/v1/misc/address |
Method | GET |
Note: This functionality is currently only available for the Netherlands.
Request parameter | Necessity | Description |
---|---|---|
country_code | Mandatory | The country code entered by the guest. Format: Two-letter uppercase country code according to ISO 3166-1 alpha-2. |
postal_code | Mandatory | The postal code entered by the guest. Format: string |
house_number | Mandatory | The house number entered by the guest. Format: string |
{
"street": "Vondelstraat",
"location": "Amsterdam"
}
Note: If no address is found, HTTP status code 204 (No Content) will be returned. Always give the guest the opportunity to fill in or edit the address details.
JSON element | Presence | Description |
---|---|---|
street | Always | The street name. Format: string |
location | Always | The location/city name. Format: string |
Scope | Miscellaneous |
Description | When using Credit Card verification, this request can be used to validate the Credit Card details entered by the guest. |
Endpoint | https://api.opengds.com/core/v1/misc/cc-verification |
Method | POST |
Note: This functionality uses algorithms to validate the Credit Card details, so there is no need for an acquirer and there are no additional costs involved.
Request parameter | Necessity | Description |
---|---|---|
cc_holder | Mandatory | The Credit Card holder. Format: string |
cc_number | Mandatory | The Credit Card number. Format: string (spaces allowed) |
cc_cvc_code | Mandatory | The Credit Card CVC code. Format: string |
cc_expiry_month | Mandatory | The Credit Card expiration month. Format: MM (with leading zero) |
cc_expiry_year | Mandatory | The Credit Card expiration year. Format: YYYY |
{
"cc_brand": "American Express"
}
Note: If the validation fails, an error with HTTP status code 422 will be returned with the validation error in the
message
element. This message can be shown to the guest.
JSON element | Presence | Description |
---|---|---|
cc_brand | Always | The brand of the Credit Card. Format: string |
Scope | Miscellaneous |
Description | Receive the filters so that they can be mapped into your database. |
Endpoint | https://api.opengds.com/core/v1/misc/map-filters |
Method | GET |
Request parameter | Necessity | Description |
---|---|---|
scope | Mandatory |
The scope for which you want to receive the filters. Possible values are: "property" "acc-accom" "acc-rate" |
{
"categories": {
"meals": "Meals"
},
"filters": {
"meals": {
"100": "Breakfast Included",
"101": "All meals included",
"102": "All-inclusive",
"103": "Breakfast & dinner included",
"104": "Non-inclusive"
}
}
}
JSON element | Presence | Description |
---|---|---|
categories | Always | The filter categories. Format: Array containing the filter categories. |
filters | Always | The filters per category. Format: Array containing the filters per category. |