List the properties connected to your PMS
curl --request GET \
--url https://api.tatallo.com/v1/properties \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tatallo.com/v1/properties"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tatallo.com/v1/properties")
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{
"data": [
{
"id": "6cfa992d-1805-4de6-892c-23785031aba0",
"name": "Fixture Loft Kreuzberg",
"timezone": "Europe/Berlin",
"status": "active",
"country": "Germany",
"city": "Berlin",
"max_guests": 2,
"currency": "EUR",
"updated_at": "2026-10-01T09:00:00.000Z"
},
{
"id": "934f807c-39d6-45de-b107-d5c9e03cb041",
"name": "Fixture House Alfama",
"timezone": "Europe/Lisbon",
"status": "inactive",
"country": "Portugal",
"city": "Lisbon",
"max_guests": 6,
"currency": "EUR",
"updated_at": "2026-10-01T09:00:00.000Z"
},
{
"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"
}
],
"page": {
"next_cursor": null
}
}API reference
List the properties connected to your PMS
Lists every property your hosts have connected to your PMS, a page at a time, in a
stable order. Follow page.next_cursor until it is null to see them all; each
property appears exactly once. Needs the properties:read scope.
GET
/
v1
/
properties
List the properties connected to your PMS
curl --request GET \
--url https://api.tatallo.com/v1/properties \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tatallo.com/v1/properties"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tatallo.com/v1/properties")
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{
"data": [
{
"id": "6cfa992d-1805-4de6-892c-23785031aba0",
"name": "Fixture Loft Kreuzberg",
"timezone": "Europe/Berlin",
"status": "active",
"country": "Germany",
"city": "Berlin",
"max_guests": 2,
"currency": "EUR",
"updated_at": "2026-10-01T09:00:00.000Z"
},
{
"id": "934f807c-39d6-45de-b107-d5c9e03cb041",
"name": "Fixture House Alfama",
"timezone": "Europe/Lisbon",
"status": "inactive",
"country": "Portugal",
"city": "Lisbon",
"max_guests": 6,
"currency": "EUR",
"updated_at": "2026-10-01T09:00:00.000Z"
},
{
"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"
}
],
"page": {
"next_cursor": null
}
}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.
Query Parameters
How many properties per page, from 1 to 100.
Required range:
1 <= x <= 100The page.next_cursor of the previous page, exactly as returned. It is opaque and
works only with the PMS credential and environment it was issued to. Don't store
it or build it by hand.