curl --request GET \
--url https://spaportal.cz/api/v2/amenity-categories \
--header 'X-SpaPortal-Public-Key: <api-key>'import requests
url = "https://spaportal.cz/api/v2/amenity-categories"
headers = {"X-SpaPortal-Public-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-SpaPortal-Public-Key': '<api-key>'}};
fetch('https://spaportal.cz/api/v2/amenity-categories', 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://spaportal.cz/api/v2/amenity-categories",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-SpaPortal-Public-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://spaportal.cz/api/v2/amenity-categories"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-SpaPortal-Public-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://spaportal.cz/api/v2/amenity-categories")
.header("X-SpaPortal-Public-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://spaportal.cz/api/v2/amenity-categories")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-SpaPortal-Public-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"category": {
"code": "wellness",
"label": {
"cs-CZ": "Bazény a wellness",
"de": "Pools & Wellness",
"en": "Pools & wellness"
}
},
"amenities": [
{
"code": "sauna",
"label": {
"cs-CZ": "Sauna",
"de": "Sauna",
"en": "Sauna"
},
"detailKinds": [
"proximity",
"access",
"options",
"opening_hours"
],
"options": [
{
"code": "finnish",
"label": {
"cs-CZ": "Finská sauna",
"de": "Finnische Sauna",
"en": "Finnish sauna"
}
},
{
"code": "infrared",
"label": {
"cs-CZ": "Infra sauna",
"de": "Infrarotsauna",
"en": "Infrared sauna"
}
},
{
"code": "steam",
"label": {
"cs-CZ": "Parní lázeň",
"de": "Dampfbad",
"en": "Steam bath"
}
}
]
}
]
}
]
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"requestId": "<string>",
"details": [
{}
]
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"requestId": "<string>",
"details": [
{}
]
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"requestId": "<string>",
"details": [
{}
]
}
}List the amenity dictionary
Returns the full hotel amenity dictionary grouped by category. Each
item in data contains a stable category code, its localized label,
and the amenities in that category. Each nested amenity has a stable
code, localized label, and supported detailKinds.
This endpoint returns every amenity available in the system, independent
of which amenities are assigned to a particular hotel. Fetch it to build
amenity filters and resolve the codes returned in
hotel.amenityCategories[].amenities[]. This small reference list is
not paginated.
Amenities whose detailKinds include options also carry an options
array listing every supported choice with its localized label.
The response is cacheable. Revalidate it with If-None-Match to get
304 while your copy is current, and compare the
X-SpaPortal-Amenities-Version header returned by hotel endpoints with
your cached version to detect dictionary updates. See
Amenities for the recommended caching flow.
See the Amenity object for the full field reference.
curl --request GET \
--url https://spaportal.cz/api/v2/amenity-categories \
--header 'X-SpaPortal-Public-Key: <api-key>'import requests
url = "https://spaportal.cz/api/v2/amenity-categories"
headers = {"X-SpaPortal-Public-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-SpaPortal-Public-Key': '<api-key>'}};
fetch('https://spaportal.cz/api/v2/amenity-categories', 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://spaportal.cz/api/v2/amenity-categories",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-SpaPortal-Public-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://spaportal.cz/api/v2/amenity-categories"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-SpaPortal-Public-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://spaportal.cz/api/v2/amenity-categories")
.header("X-SpaPortal-Public-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://spaportal.cz/api/v2/amenity-categories")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-SpaPortal-Public-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"category": {
"code": "wellness",
"label": {
"cs-CZ": "Bazény a wellness",
"de": "Pools & Wellness",
"en": "Pools & wellness"
}
},
"amenities": [
{
"code": "sauna",
"label": {
"cs-CZ": "Sauna",
"de": "Sauna",
"en": "Sauna"
},
"detailKinds": [
"proximity",
"access",
"options",
"opening_hours"
],
"options": [
{
"code": "finnish",
"label": {
"cs-CZ": "Finská sauna",
"de": "Finnische Sauna",
"en": "Finnish sauna"
}
},
{
"code": "infrared",
"label": {
"cs-CZ": "Infra sauna",
"de": "Infrarotsauna",
"en": "Infrared sauna"
}
},
{
"code": "steam",
"label": {
"cs-CZ": "Parní lázeň",
"de": "Dampfbad",
"en": "Steam bath"
}
}
]
}
]
}
]
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"requestId": "<string>",
"details": [
{}
]
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"requestId": "<string>",
"details": [
{}
]
}
}{
"error": {
"code": "invalid_request",
"message": "<string>",
"requestId": "<string>",
"details": [
{}
]
}
}Authorizations
See Authentication for how to obtain and send your public key.
Headers
Comma-separated BCP 47 language tags selecting which locale keys localized fields return. When omitted, all locale keys are returned. See Localization for details.
"cs-CZ,de"
Optional client-provided request identifier echoed in error responses.
Response
The amenity dictionary.
The complete hotel amenity dictionary grouped by category and returned in one response (small, not paginated). It includes every system amenity, independent of assignments to individual hotels. Amenities that support choices carry their full options list.
Show child attributes
Show child attributes