Notifications
Log and track all outbound guest communications across SMS, email, push, in-app, and WhatsApp channels. Use the Notifications API to record messages sent by your systems, track delivery status, and surface failures for retry.
Live sending + delivery log
POST /v1/notifications creates the record and immediately dispatches the message via the configured provider. The response reflects the actual send status. Use PATCH to write back delivery confirmations from provider webhooks.
Provider configuration
Select the active provider per channel with a single env var. Credentials for the chosen provider must also be set. Missing credentials cause status: failed — the API call itself never fails.
smsSMS_PROVIDERwhatsappWHATSAPP_PROVIDERemailEMAIL_PROVIDERpushPUSH_PROVIDERin_app—The Notification object
idstringUnique notification ID. Prefixed ntf_.
property_idstringProperty this notification belongs to.
guest_idstring?Guest this notification was sent to.
reservation_idstring?Reservation this notification relates to.
channelenumsms · email · push · in_app · whatsapp
statusenumqueued · sent · delivered · failed · read
typeenumreservation_confirmation · check_in_reminder · check_out_reminder · request_update · review_request · package_offer · general · alert
recipientstringPhone number, email address, or device token.
subjectstring?Email subject line (email channel only).
bodystringMessage body text.
error_messagestring?Provider error detail when status is failed.
sent_atdatetime?When the message was dispatched to the provider.
delivered_atdatetime?When delivery was confirmed.
read_atdatetime?When the recipient opened the message.
created_atdatetimeISO 8601 timestamp.
Endpoints
/v1/notificationsLog a notificationRecord an outbound notification. The initial status defaults to queued — update it as delivery progresses.
Request Body
channelstringrequiredDelivery channel: sms, email, push, in_app, or whatsapp.recipientstringrequiredPhone, email, or device token.bodystringrequiredMessage body text.typestringNotification type. Defaults to general.subjectstringEmail subject line.guest_idstringLink to a guest record.reservation_idstringLink to a reservation record.curl -X POST https://api.escapelife.ai/v1/notifications \
-H "X-API-Key: sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"channel": "sms",
"type": "check_in_reminder",
"recipient": "+1 305-555-0101",
"body": "Your check-in is tomorrow at 3pm. Reply HELP for assistance.",
"guest_id": "gst_abc123",
"reservation_id": "res_xyz456"
}'{
"id": "ntf_a1b2c3d4e5f6",
"property_id": "pty_xyz",
"channel": "sms",
"status": "queued",
"type": "check_in_reminder",
"recipient": "+1 305-555-0101",
"subject": null,
"body": "Your check-in is tomorrow at 3pm. Reply HELP for assistance.",
"sent_at": null,
"delivered_at": null,
"created_at": "2026-03-16T12:00:00Z"
}/v1/notificationsList notificationsReturn the notification log for the property, newest first.
Path / Query Parameters
channelstringFilter by channel.statusstringFilter by status.typestringFilter by notification type.limitintegerMax results (1–200). Default 50.offsetintegerPagination offset. Default 0./v1/notifications/summaryNotification summaryTotal count, delivery rate, and breakdowns by channel, status, and type.
{
"total": 312,
"delivery_rate": 94.2,
"by_channel": {
"sms": 142,
"email": 118,
"push": 38,
"in_app": 14
},
"by_status": {
"delivered": 218,
"read": 76,
"sent": 12,
"failed": 6
},
"by_type": {
"check_in_reminder": 98,
"reservation_confirmation": 84,
"review_request": 72,
"request_update": 46,
"general": 12
}
}/v1/notifications/{id}Retrieve a notificationFetch a single notification record by ID.
Path / Query Parameters
idstringrequiredNotification ID (ntf_...)./v1/notifications/{id}Update delivery statusWrite back the delivery result from your provider webhook — update status, timestamps, and any error detail.
Path / Query Parameters
idstringrequiredNotification ID (ntf_...).Request Body
statusstringNew status: sent, delivered, failed, or read.sent_atdatetimeWhen the provider dispatched the message.delivered_atdatetimeWhen delivery was confirmed.read_atdatetimeWhen the recipient opened the message.error_messagestringProvider error detail on failure.curl -X PATCH https://api.escapelife.ai/v1/notifications/ntf_a1b2c3d4e5f6 \
-H "X-API-Key: sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"status": "delivered",
"sent_at": "2026-03-16T12:00:05Z",
"delivered_at": "2026-03-16T12:00:08Z"
}'