curl --request GET \
--url https://api.tatallo.com/v1/properties/{propertyId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tatallo.com/v1/properties/{propertyId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tatallo.com/v1/properties/{propertyId}', 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.tatallo.com/v1/properties/{propertyId}",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tatallo.com/v1/properties/{propertyId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tatallo.com/v1/properties/{propertyId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tatallo.com/v1/properties/{propertyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "bef2859f-2444-47ec-b5f4-f1e6701f087f",
"name": "Fixture Apartment Trastevere",
"timezone": "Europe/Rome",
"status": "active",
"country": "Italy",
"city": "Rome",
"max_guests": 4,
"currency": "EUR",
"updated_at": "2026-10-01T09:00:00.000Z"
}Read one property connected to your PMS
Reads one property your hosts have connected to your PMS. A property that is not
connected to your PMS, was removed, or never existed gets the same 404, so the
answer reveals nothing about properties not connected to you. Needs the
properties:read scope.
curl --request GET \
--url https://api.tatallo.com/v1/properties/{propertyId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tatallo.com/v1/properties/{propertyId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tatallo.com/v1/properties/{propertyId}', 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.tatallo.com/v1/properties/{propertyId}",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.tatallo.com/v1/properties/{propertyId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tatallo.com/v1/properties/{propertyId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tatallo.com/v1/properties/{propertyId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "bef2859f-2444-47ec-b5f4-f1e6701f087f",
"name": "Fixture Apartment Trastevere",
"timezone": "Europe/Rome",
"status": "active",
"country": "Italy",
"city": "Rome",
"max_guests": 4,
"currency": "EUR",
"updated_at": "2026-10-01T09:00:00.000Z"
}Authorizations
A PMS credential issued by Tatallo: an opaque key of the form tat_<env>_sk_…, where
<env> is stg on staging and live on production. A key works only in its own
environment. Send it as Authorization: Bearer <key>, from your servers only.
Path Parameters
The property's id, as listed by GET /v1/properties.
Response
The property.
The property's permanent, opaque identifier. Store it once in your mapping table: it never changes meaning. It is an identifier, not a credential: knowing it grants nothing.
The property's name on Tatallo.
The IANA time zone of the property (for example Europe/Rome). Interpret stay dates and check-in times in it. May be null only while the property is pending.
"Europe/Rome"
Whether the property can sell: active can; inactive was suspended and cannot;
pending is not live yet.
active, inactive, pending The property's country, by name.
The most guests the property sleeps.
x >= 1The property's currency, ISO 4217.
^[A-Z]{3}$When the property last changed, ISO 8601 in UTC.