EscapeLifeDocs
Early access — Phase 2

Guests

The Guests module provides a unified guest profile layer across all platform interactions — AI conversations, bookings, messaging, and service requests. Every guest record is property-scoped and identified by a persistent ID.

The Guest object

idstringUnique guest ID. Prefixed gst_.
property_idstringThe property this guest is associated with.
first_namestringGuest's first name.
last_namestringGuest's last name.
emailstring | nullEmail address. Used for messaging and identity matching.
phonestring | nullPhone number (E.164 format recommended for SMS).
languagestringPreferred language (IETF BCP 47). Defaults to en.
preferencesobjectArbitrary key-value preferences — room type, dietary, activities, etc.
is_activebooleanSet to false to soft-deactivate without deleting.
first_seen_atdatetimeFirst platform interaction timestamp.
last_seen_atdatetimeMost recent interaction timestamp. Auto-updated.
created_atdatetimeRecord creation timestamp.

Endpoints

POST/v1/guestsCreate a guest

Create a new guest profile. If the guest already exists (matched by email), update their record instead.

Request Body

first_namestringrequiredGuest's first name.
last_namestringrequiredGuest's last name.
emailstringEmail address.
phonestringPhone number.
languagestringBCP 47 language tag. Defaults to en.
preferencesobjectPreference key-value store.
metadataobjectArbitrary metadata for your own use.
Create a guest
curl -X POST https://api.escapelife.ai/v1/guests \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jordan",
    "last_name": "Mitchell",
    "email": "jordan.mitchell@example.com",
    "phone": "+13055551234",
    "language": "en",
    "preferences": {
      "room_type": "ocean_view",
      "dietary": ["gluten_free"],
      "activities": ["golf", "spa"]
    }
  }'
Response
{
  "id": "gst_a1b2c3d4e5f6",
  "property_id": "pty_xyz123",
  "first_name": "Jordan",
  "last_name": "Mitchell",
  "email": "jordan.mitchell@example.com",
  "phone": "+13055551234",
  "language": "en",
  "preferences": {
    "room_type": "ocean_view",
    "dietary": ["gluten_free"],
    "activities": ["golf", "spa"]
  },
  "is_active": true,
  "first_seen_at": "2026-03-15T10:00:00Z",
  "last_seen_at": "2026-03-15T10:00:00Z",
  "created_at": "2026-03-15T10:00:00Z",
  "updated_at": "2026-03-15T10:00:00Z"
}
GET/v1/guestsList guests

Return all guests for this property. Supports full-text search by name or email and offset pagination.

Path / Query Parameters

searchstringSearch by first name, last name, or email.
limitintegerMax results per page. Default 50, max 200.
offsetintegerPagination offset. Default 0.
GET/v1/guests/{guest_id}Get a guest

Path / Query Parameters

guest_idstringrequiredGuest ID (gst_...).
PATCH/v1/guests/{guest_id}Update a guest

Partial update — only fields present in the request body are modified.

Path / Query Parameters

guest_idstringrequiredGuest ID (gst_...).

Request Body

first_namestringUpdated first name.
last_namestringUpdated last name.
preferencesobjectReplaces the entire preferences object.
is_activebooleanSet to false to deactivate.
DELETE/v1/guests/{guest_id}Delete a guest

Permanently delete the guest and all associated conversations, intents, and messages. Irreversible.

Path / Query Parameters

guest_idstringrequiredGuest ID (gst_...).

Preferences schema

The preferences object is free-form. Recommended keys used by the AI layer:

room_typeocean_view, king, suitePreferred room type.
dietary["vegan", "gluten_free"]Dietary requirements.
activities["golf", "spa", "tennis"]Preferred activities for recommendation engine.
languagees, fr, de, jaPreferred communication language.
loyalty_tiergold, platinumLoyalty program tier.
occasionhoneymoon, birthday, anniversarySpecial occasion for this stay.

Webhooks fired by this module

guest.created

A new guest profile was created.

guest.updated

A guest profile was modified.

guest.intent.created

AI detected a guest intent during a conversation.