EscapeLifeDocs
Phase 5 · Available

Staff

Manage property staff members across departments and roles. Staff records can be linked to housekeeping tasks and guest requests via the assigned_to field on those resources.

The Staff Member object

idstring

Unique staff ID. Prefixed stf_.

property_idstring

Property this staff member belongs to.

namestring

Full name.

emailstring?

Work email address.

phonestring?

Work phone or mobile number.

roleenum

manager · supervisor · attendant · technician · concierge · chef · security · driver · admin · other

departmentenum

housekeeping · maintenance · front_desk · food_beverage · concierge · security · transport · management · spa · other

statusenum

active · on_leave · inactive

notesstring?

Internal notes about this staff member.

created_atdatetime

ISO 8601 timestamp.

updated_atdatetime

ISO 8601 timestamp.

Endpoints

POST/v1/staffCreate a staff member

Add a new staff member to the property.

Request Body

namestringrequiredFull name.
rolestringrequiredStaff role enum value.
departmentstringrequiredDepartment enum value.
statusstringactive, on_leave, or inactive. Defaults to active.
emailstringWork email address.
phonestringWork phone number.
notesstringInternal notes.
cURL
curl -X POST https://api.escapelife.ai/v1/staff \
  -H "X-API-Key: sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Rosa Martinez",
    "role": "attendant",
    "department": "housekeeping",
    "email": "rosa@grandresort.com",
    "phone": "+1 305-555-0142"
  }'
Response
{
  "id": "stf_a1b2c3d4e5f6",
  "property_id": "pty_xyz",
  "name": "Rosa Martinez",
  "email": "rosa@grandresort.com",
  "phone": "+1 305-555-0142",
  "role": "attendant",
  "department": "housekeeping",
  "status": "active",
  "notes": null,
  "created_at": "2026-03-16T12:00:00Z",
  "updated_at": "2026-03-16T12:00:00Z"
}
GET/v1/staffList staff members

Return all staff members for the property, sorted by name.

Path / Query Parameters

departmentstringFilter by department.
rolestringFilter by role.
statusstringFilter by status: active, on_leave, inactive.
limitintegerMax results (1–200). Default 50.
offsetintegerPagination offset. Default 0.
GET/v1/staff/summaryStaff summary

Return total count, active count, and breakdowns by department and role.

Response
{
  "total": 24,
  "active": 21,
  "by_department": {
    "housekeeping": 8,
    "front_desk": 5,
    "food_beverage": 4,
    "maintenance": 3,
    "concierge": 2,
    "management": 2
  },
  "by_role": {
    "attendant": 10,
    "supervisor": 4,
    "manager": 3,
    "concierge": 2,
    "technician": 3,
    "admin": 2
  }
}
GET/v1/staff/{id}Retrieve a staff member

Fetch a single staff member by ID.

Path / Query Parameters

idstringrequiredStaff ID (stf_...).
PATCH/v1/staff/{id}Update a staff member

Update role, department, status, or contact details.

Path / Query Parameters

idstringrequiredStaff ID (stf_...).

Request Body

namestringUpdated name.
rolestringUpdated role.
departmentstringUpdated department.
statusstringUpdated status.
emailstringUpdated email.
phonestringUpdated phone.
notesstringUpdated notes.
Mark as on leave
curl -X PATCH https://api.escapelife.ai/v1/staff/stf_a1b2c3d4e5f6 \
  -H "X-API-Key: sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"status": "on_leave"}'
DELETE/v1/staff/{id}Delete a staff member

Permanently remove a staff member record. This does not affect historical housekeeping or request records that reference them by name.

Path / Query Parameters

idstringrequiredStaff ID (stf_...).