EscapeLifeDocs
Phase 4 · Available

Packages

Create and manage stay packages, bundles, and upsell offers. Each package has a defined type, price, and inclusions list that can be surfaced to guests pre-arrival or at booking.

The Package object

idstring

Unique package ID. Prefixed pkg_.

property_idstring

Property this package belongs to.

namestring

Display name, e.g. Romance Getaway.

slugstring

URL-safe identifier. Must be unique per property.

typeenum

romance · golf · spa · family · celebration · business · honeymoon · adventure · custom

pricefloat

Package price in the property's default currency.

currencystring

ISO 4217 currency code (e.g. USD).

descriptionstring?

Short marketing description.

inclusionsstring[]

List of what is included in the package.

is_activeboolean

Whether the package is available to guests.

valid_fromdate?

Optional start date for seasonal packages.

valid_untildate?

Optional end date for seasonal packages.

created_atdatetime

ISO 8601 timestamp.

Endpoints

POST/v1/packagesCreate a package

Create a new stay package or upsell bundle.

Request Body

namestringrequiredDisplay name of the package.
slugstringrequiredURL-safe unique identifier.
typestringrequiredPackage type: romance, golf, spa, family, celebration, business, honeymoon, adventure, or custom.
pricenumberrequiredPrice in the property's default currency.
currencystringrequiredISO 4217 currency code.
inclusionsstring[]requiredArray of inclusions.
descriptionstringShort marketing description.
is_activebooleanSet false to create in draft state. Defaults to true.
valid_fromstringStart date for seasonal availability (YYYY-MM-DD).
valid_untilstringEnd date for seasonal availability (YYYY-MM-DD).
cURL
curl -X POST https://api.escapelife.ai/v1/packages \
  -H "X-API-Key: sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Romance Getaway",
    "slug": "romance-getaway",
    "type": "romance",
    "price": 890,
    "currency": "USD",
    "description": "The ultimate couples escape",
    "inclusions": [
      "Champagne on arrival",
      "Couples spa treatment",
      "Private dining experience",
      "Rose petal turndown"
    ],
    "is_active": true
  }'
Response
{
  "id": "pkg_jkl012",
  "property_id": "pty_xyz",
  "name": "Romance Getaway",
  "slug": "romance-getaway",
  "type": "romance",
  "price": 890.0,
  "currency": "USD",
  "description": "The ultimate couples escape",
  "inclusions": [
    "Champagne on arrival",
    "Couples spa treatment",
    "Private dining experience",
    "Rose petal turndown"
  ],
  "is_active": true,
  "valid_from": null,
  "valid_until": null,
  "created_at": "2026-03-16T10:00:00Z"
}
GET/v1/packagesList packages

Return all packages for the property.

Path / Query Parameters

active_onlybooleanWhen true (default), only returns packages with is_active: true.
typestringFilter by package type.
limitintegerMax results (1–100). Default 20.
offsetintegerPagination offset. Default 0.
GET/v1/packages/{id}Retrieve a package

Fetch a single package by ID.

Path / Query Parameters

idstringrequiredPackage ID (pkg_...).
PATCH/v1/packages/{id}Update a package

Update price, inclusions, availability window, or active status.

Path / Query Parameters

idstringrequiredPackage ID (pkg_...).

Request Body

namestringNew display name.
pricenumberUpdated price.
inclusionsstring[]Updated inclusions list (replaces existing).
is_activebooleanActivate or deactivate the package.
valid_fromstringNew start date (YYYY-MM-DD).
valid_untilstringNew end date (YYYY-MM-DD).
descriptionstringUpdated description.
Deactivate a package
curl -X PATCH https://api.escapelife.ai/v1/packages/pkg_jkl012 \
  -H "X-API-Key: sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"is_active": false}'

Seasonal packages

Use valid_from and valid_until to restrict a package to a date window — useful for holiday offers, peak season bundles, or limited-time promotions.

Create a seasonal package
curl -X POST https://api.escapelife.ai/v1/packages \
  -H "X-API-Key: sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Summer Family Escape",
    "slug": "summer-family-2026",
    "type": "family",
    "price": 580,
    "currency": "USD",
    "inclusions": ["Kids club", "Beach equipment", "Daily breakfast"],
    "valid_from": "2026-06-01",
    "valid_until": "2026-08-31",
    "is_active": true
  }'