curl --request GET \
--url https://api.gridbeds.com/api/v1/distribution/properties/{property_id}/availability \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gridbeds.com/api/v1/distribution/properties/{property_id}/availability"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gridbeds.com/api/v1/distribution/properties/{property_id}/availability', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gridbeds.com/api/v1/distribution/properties/{property_id}/availability",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"property_id": "prp_1qnykkykp69yv8d59hxk5410m9",
"currency": "<string>",
"version": 2,
"updated_at": "2026-10-16T09:30:00Z",
"from": "2023-12-25",
"to": "2023-12-25",
"horizon_end": "2023-12-25",
"data": [
{
"date": "2023-12-25",
"units_available": 1,
"closed_to_arrival": true,
"closed_to_departure": true,
"rates": [
{
"rate_plan_id": "rpl_3xdccbsf4p8akbsma1qwypy8pc",
"price": {
"amount": 123,
"currency": "<string>"
},
"base_occupancy": 2,
"extra_guest_price": {
"amount": 123,
"currency": "<string>"
},
"closed": true,
"prices_by_occupancy": [
{
"adults": 2,
"price": {
"amount": 123,
"currency": "<string>"
}
}
],
"child_prices": [
{
"age_from": 8,
"age_to": 8,
"price": {
"amount": 123,
"currency": "<string>"
}
}
],
"child_price": {
"amount": 123,
"currency": "<string>"
},
"infant_price": {
"amount": 123,
"currency": "<string>"
},
"min_stay": 2,
"closed_to_arrival": true
}
],
"min_stay": 2,
"max_stay": 2
}
]
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"errors": [
{
"detail": "<string>",
"code": "<string>",
"parameter": "<string>",
"header": "<string>",
"pointer": "<string>"
}
],
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"required_scopes": [
"read:catalog"
],
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"detail": "<string>"
}A property's nights in a window (to is exclusive, at most 365 nights), 404 once withdrawn or deleted
curl --request GET \
--url https://api.gridbeds.com/api/v1/distribution/properties/{property_id}/availability \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gridbeds.com/api/v1/distribution/properties/{property_id}/availability"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.gridbeds.com/api/v1/distribution/properties/{property_id}/availability', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gridbeds.com/api/v1/distribution/properties/{property_id}/availability",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"property_id": "prp_1qnykkykp69yv8d59hxk5410m9",
"currency": "<string>",
"version": 2,
"updated_at": "2026-10-16T09:30:00Z",
"from": "2023-12-25",
"to": "2023-12-25",
"horizon_end": "2023-12-25",
"data": [
{
"date": "2023-12-25",
"units_available": 1,
"closed_to_arrival": true,
"closed_to_departure": true,
"rates": [
{
"rate_plan_id": "rpl_3xdccbsf4p8akbsma1qwypy8pc",
"price": {
"amount": 123,
"currency": "<string>"
},
"base_occupancy": 2,
"extra_guest_price": {
"amount": 123,
"currency": "<string>"
},
"closed": true,
"prices_by_occupancy": [
{
"adults": 2,
"price": {
"amount": 123,
"currency": "<string>"
}
}
],
"child_prices": [
{
"age_from": 8,
"age_to": 8,
"price": {
"amount": 123,
"currency": "<string>"
}
}
],
"child_price": {
"amount": 123,
"currency": "<string>"
},
"infant_price": {
"amount": 123,
"currency": "<string>"
},
"min_stay": 2,
"closed_to_arrival": true
}
],
"min_stay": 2,
"max_stay": 2
}
]
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"errors": [
{
"detail": "<string>",
"code": "<string>",
"parameter": "<string>",
"header": "<string>",
"pointer": "<string>"
}
],
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"required_scopes": [
"read:catalog"
],
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"detail": "<string>"
}{
"type": "https://api.gridbeds.com/problems/not-found",
"title": "<string>",
"status": 499,
"instance": "<string>",
"code": "invalid_parameters",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"detail": "<string>"
}Authorizations
A key starts with gbd_live_ (production) or gbd_test_ (sandbox) and ends in a CRC32 checksum of its
secret part, so a mistyped or truncated key is refused before any lookup, as is a key of the other
environment. The prefix is registered with public secret scanners (GitHub secret scanning, TruffleHog,
GitGuardian): a key found in a public repository is revoked at once and your technical contact is told.
Gridbeds stores only a hash of each key. One partner may hold two keys per environment during a rotation.
Operations list the scopes they need; the scopes are OAuth 2.0 scope tokens, so short-lived access tokens
from a client-credentials grant can be offered later beside keys, with the same scopes and no change to any
operation.
Path Parameters
^prp_[0-7][0-9a-hjkmnp-tv-z]{25}$"prp_1qnykkykp69yv8d59hxk5410m9"
Query Parameters
First night, the property's local date.
Exclusive; at most 365 nights after from and no later than the property's horizon_end, which is at least 365 nights after its today.
Response
The nights. A from before the property's today is served from today; the response echoes the window it served.
^prp_[0-7][0-9a-hjkmnp-tv-z]{25}$"prp_1qnykkykp69yv8d59hxk5410m9"
ISO 4217.
^[A-Z]{3}$Grows on every change visible to this channel; ignore a lower one. Not a counter — do not expect consecutive values.
x >= 1^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"2026-10-16T09:30:00Z"
Additive. Exclusive: the property publishes every night before it, from its today, and it is at least 365 nights after its today. The window rolls daily with the property's local date.
One entry per night of the window: a night inside the horizon is never missing, and one with no rate has every rate closed.
Show child attributes
Show child attributes