Skip to main content
A partner often has only a PMS identifier. Casa Layer stores that value as source_id on the guest profile or the reservation. This guide shows how to find the master profile — the golden record for that guest. Use a partner API credential. Do not use a personal API key for a third-party system.

What you need

Select these scopes on the credential: You also need one of these from the PMS:
  • The guest profile ID (source_id on GET /v1/guests)
  • The reservation ID (source_id on GET /v1/reservations)
Some source systems do not expose a stable guest source_id. If the guest lookup returns no rows, use the reservation path.

1. Create partner credentials

Create the credential in the Casa Layer app. See Partner API credentials for the full steps.
  1. Open Integrations → Partner credentials → Custom Integration.
  2. Name the credential.
  3. Select read:properties, read:guests, and read:reservations.
  4. Click Create credentials.
  5. Copy the client ID and client secret.
Casa Layer shows the client secret once. Store it with the partner.

2. Get an access token

Exchange the client ID and client secret for a short-lived access token.
Read access_token from the response. Cache it until exp. Do not mint a token on every Casa Layer call. Send the token as a bearer credential on every request below:

3. Get property context

List the properties in the credential’s group.
Each row has an id and a name. Use id as X-Property-Id when you want one property only.
The property must belong to the credential’s group. A property outside the group returns 403. Skip the header to search the whole group.

4. Get integration IDs

A PMS source_id is unique only inside one integration. List the roster first.
Each row is one source system mapped to a property: Pick the row for the PMS and property you will query. Copy id. You can send X-Property-Id here too. The list then includes only mappings for that property.
GET /v1/guests and GET /v1/reservations reject source_id without integration_id. The error is 400.

5. Find the master profile

Use one of the paths below.

Path A — PMS guest profile ID

Call this when the PMS gives you a stable guest ID.
The response is a list. A match has one row. No match has an empty data array.
Read master_profile_id. Then get the master profile. If data is empty, that PMS may not store a guest source_id. Use Path B. If master_profile_id is null, identity resolution has not merged this guest yet. You still have the guest profile. You do not have a master yet.

Path B — PMS reservation ID

Call this when you have the PMS reservation ID. This path also works when the PMS has no guest source_id. Search reservations with the same integration_id:
Read two IDs from the reservation row: GET /v1/master-profiles accepts reservation_id. That parameter is the Casa Layer reservation ID, not the PMS source_id.
The result includes member sub-profiles. If you only need one master, take the first row’s id. You can also load the guest, then read master_profile_id:

Get the master profile

Use the Casa Layer master profile ID from Path A or Path B.
The body is the golden record: canonical name and contact fields, attribute_sources, guest_profile_ids, and guest_profiles. See Master profiles and the API reference.

If the lookup is empty

Work through this list:
  1. Confirm integration_id matches that PMS and property.
  2. Confirm the PMS ID is the source_id Casa Layer ingested, not a display number.
  3. Confirm ingest has finished for that guest or reservation.
  4. Remove X-Property-Id and try the group-wide call.
  5. For a guest ID, switch to the reservation path.

Errors

A source_id miss on a list endpoint is not 404. The list is empty.

Partner API credentials

Create, rotate, and revoke the credential.

Data model

Guest profiles, master profiles, and reservations.

List integrations

Public roster of integration_id values.

Search master profiles

Search by email or Casa Layer reservation ID.

Guest event log

Read the event log for a guest or master from a PMS source ID.