curl --request GET \
--url https://{service}.{brand}.kych.co/v1/ \
--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/', 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/",
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/")
.header("User-Agent", "<user-agent>")
.header("Authorization", "Bearer <token>")
.asString();{
"data": {
"object": "api_info",
"apiVersion": "v1",
"documentationUrl": "https://docs.kychospitality.com"
},
"meta": {
"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"
}Get API info
Returns the API version and basic context, and confirms your key works. Authenticated — use this as a quick “am I hitting the right endpoint with a valid key” check.
curl --request GET \
--url https://{service}.{brand}.kych.co/v1/ \
--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/', 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/",
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/")
.header("User-Agent", "<user-agent>")
.header("Authorization", "Bearer <token>")
.asString();{
"data": {
"object": "api_info",
"apiVersion": "v1",
"documentationUrl": "https://docs.kychospitality.com"
},
"meta": {
"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.
Response
API information.
Response body for the API info endpoint.
Hide child attributes
Hide child attributes
Resource type discriminator.
"api_info"The live API version, matching the URL version segment.
"v1"
Base URL of the public documentation site.
"https://docs.kychospitality.com"
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.
