curl --request GET \
--url https://{service}.{brand}.kych.co/v1/properties \
--header 'Authorization: Bearer <token>' \
--header 'User-Agent: <user-agent>'const options = {
method: 'GET',
headers: {'User-Agent': '<user-agent>', Authorization: 'Bearer <token>'}
};
fetch('https://{service}.{brand}.kych.co/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://{service}.{brand}.kych.co/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>",
"User-Agent: <user-agent>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.get("https://{service}.{brand}.kych.co/v1/properties")
.header("User-Agent", "<user-agent>")
.header("Authorization", "Bearer <token>")
.asString();{
"data": [
{
"object": "property",
"id": "4a2f0c10-2e7a-4b9d-9b3a-1f0c9e8d7a6b",
"name": "Hilton Austin Downtown",
"code": "ATXDT",
"status": "active",
"timezone": "America/Chicago",
"createdAt": "2025-01-15T09:00:00.000Z",
"updatedAt": "2026-05-02T14:30:00.000Z"
}
],
"meta": {
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-26T22:01:01.010Z",
"pagination": {
"page": 1,
"perPage": 50,
"total": 1
}
}
}{
"type": "https://docs.kychospitality.com/errors/unknown-query-parameter",
"title": "Unknown query parameter",
"status": 400,
"detail": "The query parameter 'firstname' is not recognized. Did you mean 'firstName'?",
"moreInfo": "This endpoint only accepts documented, allow-listed parameters.",
"instance": "/v1/guests",
"code": "UNKNOWN_QUERY_PARAMETER",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/missing-auth-header",
"title": "Missing Authorization header",
"status": 401,
"detail": "No Authorization header was provided. Send 'Authorization: Bearer <key>'.",
"moreInfo": "",
"instance": "/v1/",
"code": "MISSING_AUTH_HEADER",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/property-access-denied",
"title": "Property access denied",
"status": 403,
"detail": "Your key is not authorized for the requested property.",
"moreInfo": "",
"instance": "/v1/rooms/1b2c3d4e-0000-0000-0000-000000000000",
"code": "PROPERTY_ACCESS_DENIED",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/not-acceptable",
"title": "Not acceptable",
"status": 406,
"detail": "This endpoint only produces application/json. Requested Accept could not be satisfied.",
"moreInfo": "",
"instance": "/v1/properties",
"code": "NOT_ACCEPTABLE",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/rate-limited",
"title": "Too many requests",
"status": 429,
"detail": "Rate limit exceeded. Retry after 30 seconds.",
"moreInfo": "",
"instance": "/v1/guests",
"code": "RATE_LIMITED",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/internal-error",
"title": "Internal server error",
"status": 500,
"detail": "An unexpected error occurred. Contact support with the requestId.",
"moreInfo": "",
"instance": "/v1/guests",
"code": "INTERNAL_ERROR",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/service-unavailable",
"title": "Service unavailable",
"status": 503,
"detail": "The service is temporarily unavailable. Retry after 30 seconds.",
"moreInfo": "",
"instance": "/v1/properties",
"code": "SERVICE_UNAVAILABLE",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}List properties
Lists the active properties within the brand that your API key can access.
Brand-wide discovery — no Kyc-Property-Id header (this is how you discover property IDs).
Results are scoped by your key’s authorized properties.
curl --request GET \
--url https://{service}.{brand}.kych.co/v1/properties \
--header 'Authorization: Bearer <token>' \
--header 'User-Agent: <user-agent>'const options = {
method: 'GET',
headers: {'User-Agent': '<user-agent>', Authorization: 'Bearer <token>'}
};
fetch('https://{service}.{brand}.kych.co/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://{service}.{brand}.kych.co/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>",
"User-Agent: <user-agent>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.get("https://{service}.{brand}.kych.co/v1/properties")
.header("User-Agent", "<user-agent>")
.header("Authorization", "Bearer <token>")
.asString();{
"data": [
{
"object": "property",
"id": "4a2f0c10-2e7a-4b9d-9b3a-1f0c9e8d7a6b",
"name": "Hilton Austin Downtown",
"code": "ATXDT",
"status": "active",
"timezone": "America/Chicago",
"createdAt": "2025-01-15T09:00:00.000Z",
"updatedAt": "2026-05-02T14:30:00.000Z"
}
],
"meta": {
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-26T22:01:01.010Z",
"pagination": {
"page": 1,
"perPage": 50,
"total": 1
}
}
}{
"type": "https://docs.kychospitality.com/errors/unknown-query-parameter",
"title": "Unknown query parameter",
"status": 400,
"detail": "The query parameter 'firstname' is not recognized. Did you mean 'firstName'?",
"moreInfo": "This endpoint only accepts documented, allow-listed parameters.",
"instance": "/v1/guests",
"code": "UNKNOWN_QUERY_PARAMETER",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/missing-auth-header",
"title": "Missing Authorization header",
"status": 401,
"detail": "No Authorization header was provided. Send 'Authorization: Bearer <key>'.",
"moreInfo": "",
"instance": "/v1/",
"code": "MISSING_AUTH_HEADER",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/property-access-denied",
"title": "Property access denied",
"status": 403,
"detail": "Your key is not authorized for the requested property.",
"moreInfo": "",
"instance": "/v1/rooms/1b2c3d4e-0000-0000-0000-000000000000",
"code": "PROPERTY_ACCESS_DENIED",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/not-acceptable",
"title": "Not acceptable",
"status": 406,
"detail": "This endpoint only produces application/json. Requested Accept could not be satisfied.",
"moreInfo": "",
"instance": "/v1/properties",
"code": "NOT_ACCEPTABLE",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/rate-limited",
"title": "Too many requests",
"status": 429,
"detail": "Rate limit exceeded. Retry after 30 seconds.",
"moreInfo": "",
"instance": "/v1/guests",
"code": "RATE_LIMITED",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/internal-error",
"title": "Internal server error",
"status": 500,
"detail": "An unexpected error occurred. Contact support with the requestId.",
"moreInfo": "",
"instance": "/v1/guests",
"code": "INTERNAL_ERROR",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}{
"type": "https://docs.kychospitality.com/errors/service-unavailable",
"title": "Service unavailable",
"status": 503,
"detail": "The service is temporarily unavailable. Retry after 30 seconds.",
"moreInfo": "",
"instance": "/v1/properties",
"code": "SERVICE_UNAVAILABLE",
"errors": [],
"requestId": "req_01J9Z3K8Q2X7C5N0",
"timestamp": "2026-06-25T22:01:01.010Z"
}Authorizations
API key sent as a bearer token: Authorization: Bearer kyc_live_....
Keys are prefixed kyc_live_ (production) or kyc_test_ (test mode).
OAuth2 access tokens (also Bearer) may be supported later — the header never changes.
Headers
Identifies the calling application. 3–255 printable ASCII characters.
3 - 255^[\x20-\x7E]+$Optional caller-supplied opaque ID for log correlation. Echoed back and logged. Treated opaquely (never decoded). Must match the pattern below.
^[A-Za-z0-9._=+/-]{1,128}$Optional W3C Trace Context header for distributed tracing. A malformed value is ignored and a fresh trace is started (per the W3C spec) — it never causes a 4xx.
Query Parameters
Page number (1-based).
x >= 1Items per page.
1 <= x <= 100Response
A page of properties.
Hide child attributes
Hide child attributes
Resource type discriminator.
"property"Property UUID (stable, never changes).
Property display name.
"Hilton Austin Downtown"
Short, human-friendly property code. Public, implementation-agnostic alias — maps from an
internal field via the API Resource. TBD: confirm the source and semantics (the internal
elasticsearch_id is currently used as a code). NEVER expose internal field names (e.g.
elasticsearch_id) to partners. Nullable until source/semantics confirmed.
"ATXDT"
Whether the property is active.
active, inactive IANA timezone name. Always present — required for correct date/time handling.
"America/Chicago"
When the property record was created (UTC).
When the property record was last updated (UTC).
Metadata present on every success response.
Hide child attributes
Hide child attributes
Server-generated ID for this request (mirrors the Kyc-Request-Id header).
"req_01J9Z3K8Q2X7C5N0"
UTC timestamp, ISO 8601 with milliseconds.
"2026-06-25T22:01:01.010Z"
Present only on list responses.
