Search master profiles
Searches identity-resolved master guest profiles (golden records merged across source systems) for the credential’s property group. Master profiles are group-scoped by design; a property drill-down narrows to entities with at least one member record at that property. Use email for an exact sub-profile email lookup, or reservation_id (Casa Layer reservation UUID, not the PMS source_id) to find the master that owns the sub-profile linked to that reservation. Each result includes its member sub-profiles (guest_profiles + guest_profile_ids). Requires scope read:guests.
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.
Headers
Optional single-property drill-down. Narrows this request to one property in the caller's group. A property outside the group returns 403. Personal API keys and partner credentials accept this header. A property-pinned API key ignores it. Casa Layer sign-in tokens reject it.
Query Parameters
Free-text match on name, email, or phone.
Exact email lookup on the master or any member sub-profile (case-insensitive).
Casa Layer reservation UUID (reservations.id). Finds the master that owns the sub-profile linked to that reservation. This is not the PMS reservation source_id — resolve that on GET /v1/reservations first.
Page size — rows returned per call (1–500). This is NOT a cap on the total dataset: follow next_cursor to retrieve every matching row.
1 <= x <= 500Opaque pagination token from a previous response's next_cursor. Omit for the first page. A malformed token returns 400 invalid_cursor.
Opt-in total count. When true/1 and no cursor is set, includes total_count of matching master profiles only (not unclustered guests).
0, 1, true, false Response
Matching master profiles with member sub-profiles, most recently updated first.
Keyset-pagination fields present on every list/search response. When has_more is true, re-request with cursor set to next_cursor; repeat until next_cursor is null to retrieve the full result set.