curl --request GET \
--url https://api.gridbeds.com/api/v1/distribution/properties/{property_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gridbeds.com/api/v1/distribution/properties/{property_id}"
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}', 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}",
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;
}{
"id": "prp_1qnykkykp69yv8d59hxk5410m9",
"status": "active",
"location_id": "loc_5ckd3q6vsn9qmt7xrj0689h226",
"owner_id": "own_63g5d4zsqj809bf5rwekga54a5",
"type": "apartment",
"units": 1,
"name": {},
"description": {},
"capacity": {
"max_guests": 2,
"max_adults": 2,
"max_children": 1,
"beds": [
{
"type": "single",
"count": 2
}
],
"max_infants": 1,
"bedrooms": 123,
"bathrooms": 123
},
"photos": [
{
"id": "pho_5v2a9ddapw9h2a8rb96b289923",
"url": "<string>",
"content_type": "image/jpeg",
"width": 2,
"height": 2,
"order": 1,
"checksum": "<string>",
"room": "living",
"caption": {}
}
],
"check_in": {
"from": "14:00",
"until": "14:00"
},
"check_out": {
"until": "14:00"
},
"rate_plans": [
{
"id": "rpl_3xdccbsf4p8akbsma1qwypy8pc",
"name": {},
"meal_plan": "none",
"cancellation": {
"refundable": true,
"free_until_days_before": 1,
"penalty": "first_night",
"penalty_percent": 50,
"text": {}
},
"currency": "<string>",
"lower_price_reasons": [],
"child_age_bands": [
{
"age_from": 8,
"age_to": 8
}
]
}
],
"fees": [
{
"type": "cleaning",
"basis": "fixed",
"amount": {
"amount": 15000,
"currency": "RON"
},
"percent_bp": null,
"percent_of": null,
"per": "stay",
"included_in_price": false,
"payable_at": "booking",
"max_nights": null,
"exempts_children": null
},
{
"type": "city_tax",
"basis": "percent",
"amount": null,
"percent_bp": 125,
"percent_of": "accommodation_excluding_vat",
"per": "stay",
"included_in_price": false,
"payable_at": "property",
"max_nights": null,
"exempts_children": null
}
],
"city_tax_status": "levied",
"legal": {
"classification": {
"certificate_number": "<string>",
"category": "<string>",
"rating_kind": "stars",
"rating": 3,
"valid_until": "2023-12-25",
"country": "<string>"
},
"registration_number": "<string>",
"identifiers": [
{
"scheme": "ro.classification",
"value": "<string>",
"valid_until": "2023-12-25",
"issued_by": "<string>"
}
]
},
"booking": {
"method": "redirect",
"url": "<string>",
"url_template": "<string>",
"request_email": "jsmith@example.com"
},
"timezone": "Europe/Bucharest",
"version": 2,
"updated_at": "2026-10-16T09:30:00Z",
"area_sqm": 123,
"floor": 123,
"elevator": true,
"amenities": [
"<string>"
],
"house_rules": {
"smoking": true,
"pets": true,
"parties": true,
"quiet_hours": {
"from": "14:00",
"until": "14:00"
},
"min_age": 123
},
"extensions": {}
}{
"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>"
}Read one property, or its tombstone
curl --request GET \
--url https://api.gridbeds.com/api/v1/distribution/properties/{property_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.gridbeds.com/api/v1/distribution/properties/{property_id}"
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}', 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}",
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;
}{
"id": "prp_1qnykkykp69yv8d59hxk5410m9",
"status": "active",
"location_id": "loc_5ckd3q6vsn9qmt7xrj0689h226",
"owner_id": "own_63g5d4zsqj809bf5rwekga54a5",
"type": "apartment",
"units": 1,
"name": {},
"description": {},
"capacity": {
"max_guests": 2,
"max_adults": 2,
"max_children": 1,
"beds": [
{
"type": "single",
"count": 2
}
],
"max_infants": 1,
"bedrooms": 123,
"bathrooms": 123
},
"photos": [
{
"id": "pho_5v2a9ddapw9h2a8rb96b289923",
"url": "<string>",
"content_type": "image/jpeg",
"width": 2,
"height": 2,
"order": 1,
"checksum": "<string>",
"room": "living",
"caption": {}
}
],
"check_in": {
"from": "14:00",
"until": "14:00"
},
"check_out": {
"until": "14:00"
},
"rate_plans": [
{
"id": "rpl_3xdccbsf4p8akbsma1qwypy8pc",
"name": {},
"meal_plan": "none",
"cancellation": {
"refundable": true,
"free_until_days_before": 1,
"penalty": "first_night",
"penalty_percent": 50,
"text": {}
},
"currency": "<string>",
"lower_price_reasons": [],
"child_age_bands": [
{
"age_from": 8,
"age_to": 8
}
]
}
],
"fees": [
{
"type": "cleaning",
"basis": "fixed",
"amount": {
"amount": 15000,
"currency": "RON"
},
"percent_bp": null,
"percent_of": null,
"per": "stay",
"included_in_price": false,
"payable_at": "booking",
"max_nights": null,
"exempts_children": null
},
{
"type": "city_tax",
"basis": "percent",
"amount": null,
"percent_bp": 125,
"percent_of": "accommodation_excluding_vat",
"per": "stay",
"included_in_price": false,
"payable_at": "property",
"max_nights": null,
"exempts_children": null
}
],
"city_tax_status": "levied",
"legal": {
"classification": {
"certificate_number": "<string>",
"category": "<string>",
"rating_kind": "stars",
"rating": 3,
"valid_until": "2023-12-25",
"country": "<string>"
},
"registration_number": "<string>",
"identifiers": [
{
"scheme": "ro.classification",
"value": "<string>",
"valid_until": "2023-12-25",
"issued_by": "<string>"
}
]
},
"booking": {
"method": "redirect",
"url": "<string>",
"url_template": "<string>",
"request_email": "jsmith@example.com"
},
"timezone": "Europe/Bucharest",
"version": 2,
"updated_at": "2026-10-16T09:30:00Z",
"area_sqm": 123,
"floor": 123,
"elevator": true,
"amenities": [
"<string>"
],
"house_rules": {
"smoking": true,
"pets": true,
"parties": true,
"quiet_hours": {
"from": "14:00",
"until": "14:00"
},
"min_age": 123
},
"extensions": {}
}{
"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>"
}Autorizzazioni
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.
Parametri del percorso
^prp_[0-7][0-9a-hjkmnp-tv-z]{25}$"prp_1qnykkykp69yv8d59hxk5410m9"
Risposta
The property or its tombstone.
- Option 1
- Option 2
^prp_[0-7][0-9a-hjkmnp-tv-z]{25}$"prp_1qnykkykp69yv8d59hxk5410m9"
inactive while the property cannot be sold.
active, inactive ^loc_[0-7][0-9a-hjkmnp-tv-z]{25}$"loc_5ckd3q6vsn9qmt7xrj0689h226"
^own_[0-7][0-9a-hjkmnp-tv-z]{25}$"own_63g5d4zsqj809bf5rwekga54a5"
apartment, studio, room, house, villa, cabin, guesthouse_room, hotel_room, other Identical units sold under this property.
x >= 1Plain text by language; the property's source language is always present (ro for a property in Romania, its own language elsewhere), except in a text Gridbeds generates (cancellation.text), which is in en where it does not ship the source language. No HTML, links, e-mail addresses or phone numbers.
Show child attributes
Show child attributes
Plain text by language; the property's source language is always present (ro for a property in Romania, its own language elsewhere), except in a text Gridbeds generates (cancellation.text), which is in en where it does not ship the source language. No HTML, links, e-mail addresses or phone numbers.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
5Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
1Show child attributes
Show child attributes
v1 publishes cleaning and city_tax, each at most once; city_tax exactly when city_tax_status is levied.
Show child attributes
Show child attributes
[
{
"type": "cleaning",
"basis": "fixed",
"amount": { "amount": 15000, "currency": "RON" },
"percent_bp": null,
"percent_of": null,
"per": "stay",
"included_in_price": false,
"payable_at": "booking",
"max_nights": null,
"exempts_children": null
},
{
"type": "city_tax",
"basis": "percent",
"amount": null,
"percent_bp": 125,
"percent_of": "accommodation_excluding_vat",
"per": "stay",
"included_in_price": false,
"payable_at": "property",
"max_nights": null,
"exempts_children": null
}
]
Additive. Whether a tourist tax applies to a stay here, so a missing city_tax fee is never mistaken for
"no tax". levied: fees carries exactly one city_tax, whose value may still be unknown (null). none: the
property declares that no tourist tax applies; fees carries no city_tax. undeclared: the property has not
said whether one applies; fees carries no city_tax, and you should say that a local tax may be payable
at the property. A change is a property.updated with a higher version. Open enum: read a value you do not
know as undeclared.
levied, none, undeclared "levied"
What the law of the property's jurisdiction asks a listing to show.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
IANA time zone.
"Europe/Bucharest"
"Europe/Rome"
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"
Codes from /amenities.
Show child attributes
Show child attributes
Only your own channel key appears.
Show child attributes
Show child attributes