Get a master profile
Returns one master profile with every guest sub-profile merged into it (guest_profiles + guest_profile_ids). Requires scope read:guests.
curl --request GET \
--url https://api.casa-layer.com/v1/master-profiles/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.casa-layer.com/v1/master-profiles/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.casa-layer.com/v1/master-profiles/{id}', 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.casa-layer.com/v1/master-profiles/{id}",
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.casa-layer.com/v1/master-profiles/{id}"
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.casa-layer.com/v1/master-profiles/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.casa-layer.com/v1/master-profiles/{id}")
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": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"property_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"profile_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"guest_profile_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"guest_profiles": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"property_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"integration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_id": "<string>",
"source_version": "<string>",
"preferences": {},
"tags": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"master_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"surname": "<string>",
"email_address": "[email protected]",
"phone_number": "<string>",
"date_of_birth": "<string>",
"nationality": "<string>",
"language": "<string>",
"address_line1": "<string>",
"address_line2": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"country": "<string>",
"notes": [
{
"source_id": "<string>",
"content": "<string>",
"classifications": [
"<string>"
],
"is_active": true
}
]
}
],
"first_name": "<string>",
"surname": "<string>",
"email_address": "[email protected]",
"phone_number": "<string>",
"date_of_birth": "<string>",
"nationality": "<string>",
"language": "<string>",
"loyalty_program_status": "<string>",
"attribute_sources": {}
}
}{
"error": "unauthorized"
}{
"error": "forbidden",
"scope": "read:guests"
}{
"error": "not_found"
}Authorizations
Authorization: Bearer <token>. Token types resolve to the same scoped credential: a user-generated API key (casa_…, from Account settings — recommended for first-party machines and MCP clients), a partner credential access token (third-party agents; REST-only), a session JWT (the web app; org and role come from verified token claims), or a static token. API keys are group-scoped, optionally pinned to one property at creation. Personal API keys and partner credentials accept X-Property-Id to drill down to one property in the group. A property-pinned API key ignores that header. MCP OAuth connector tokens authenticate the MCP server only and are rejected on these REST routes.
Path Parameters
Resource ID (UUID).
Response
Master profile with its member sub-profiles.
An identity-resolved golden record: one entity per real guest, merged across source systems and properties within the group. id equals the earliest member record's guest_profile_id.
Show child attributes
Show child attributes
curl --request GET \
--url https://api.casa-layer.com/v1/master-profiles/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.casa-layer.com/v1/master-profiles/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.casa-layer.com/v1/master-profiles/{id}', 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.casa-layer.com/v1/master-profiles/{id}",
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.casa-layer.com/v1/master-profiles/{id}"
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.casa-layer.com/v1/master-profiles/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.casa-layer.com/v1/master-profiles/{id}")
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": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"property_group_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"profile_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"guest_profile_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"guest_profiles": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"property_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"integration_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source_id": "<string>",
"source_version": "<string>",
"preferences": {},
"tags": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"master_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"first_name": "<string>",
"surname": "<string>",
"email_address": "[email protected]",
"phone_number": "<string>",
"date_of_birth": "<string>",
"nationality": "<string>",
"language": "<string>",
"address_line1": "<string>",
"address_line2": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"country": "<string>",
"notes": [
{
"source_id": "<string>",
"content": "<string>",
"classifications": [
"<string>"
],
"is_active": true
}
]
}
],
"first_name": "<string>",
"surname": "<string>",
"email_address": "[email protected]",
"phone_number": "<string>",
"date_of_birth": "<string>",
"nationality": "<string>",
"language": "<string>",
"loyalty_program_status": "<string>",
"attribute_sources": {}
}
}{
"error": "unauthorized"
}{
"error": "forbidden",
"scope": "read:guests"
}{
"error": "not_found"
}