Skip to main content

/member/deliveryLogs

Overview

Fetch communication delivery logs (SMS, email, push, etc.) for a specific member. Results are scoped to the authenticated business and the resolved member. Defaults to the last 90 days when no date filter is provided.

When to Use This Endpoint

Use this endpoint to:

  • View delivery logs for a specific member's communications
  • Track member engagement metrics (opens, clicks, bounces)
  • Troubleshoot delivery issues for individual members
  • Audit communication history for a member
  • Generate member-specific delivery reports

Key Considerations

  • The member object must contain at least one identifier to resolve the member
  • Results are always sorted by createdAt descending (newest first)
  • When neither fromDate nor toDate is provided, the endpoint automatically uses a 90-day window ending at the current time
  • The database stores status values capitalized but the API returns them in lowercase for consistency
  • Use limit and offset together for cursor-free pagination

Request Details

Method & URL

POST /member/deliveryLogs

See API Servers for the base URL to use in place of {{server}}.

Headers

HeaderTypeRequiredDescription
x-api-keystringYesBusiness API key used to identify and authorize the caller
x-source-typestringYesType of the calling system (e.g., pos, kiosk)
x-source-namestringYesName of the calling application
x-pos-idstringYesUnique identifier of the POS terminal
x-branch-idstringYesIdentifier of the branch making the request

Request Body

Member Identifier (required, one of)

The member object must contain at least one of the following identifiers:

FieldTypeDescription
membershipKeystringLoyalty membership key
commonExtIdstringExternal system identifier
phoneNumberstringMember's phone number
emailstringMember's email address
shortCodestringTemporary short code
temporaryTokenstringTemporary authentication token
cardNumberstringPhysical card number
customIdentifierstringCustom business-specific identifier

Pagination & Filters

FieldTypeRequiredDefaultDescription
typestringNoFilter by message type (e.g., sms, email, push)
statusstringNoFilter by delivery status: sent, failed, bounce complaint, delivered, open, or clicked
fromDateISO 8601 dateNo90 days agoStart of the date range (createdAt >= fromDate)
toDateISO 8601 dateNonowEnd of the date range (createdAt <= toDate)
limitinteger (1–100)No40Maximum number of records to return
offsetinteger (≥ 0)No0Number of records to skip (for pagination)

Request Example

curl --location --request POST 'https://{{server}}/v1/member/deliveryLogs' \
--header 'Content-Type: application/json' \
--header 'x-api-key: {{api-key}}' \
--header 'x-source-type: POS' \
--header 'x-source-name: pos-terminal-01' \
--header 'x-pos-id: POS001' \
--header 'x-branch-id: BR001' \
--data-raw '{
"member": {
"membershipKey": "0fe31b8b-5ad5-48af-81e9-4adc7d596042"
},
"type": "email",
"status": "delivered",
"fromDate": "2026-03-01T00:00:00.000Z",
"toDate": "2026-04-30T23:59:59.999Z",
"limit": 10,
"offset": 0
}'

Success Response

200 OK

{
"status": "success",
"deliveryLogs": [
{
"messageId": "msgabc123",
"type": "email",
"status": "click",
"destination": "member@example.com",
"membershipKey": "0fe31b8b-5ad5-48af-81e9-4adc7d596042",
"templateId": "tmplxyz",
"campaignId": "camp456",
"provider": "ses",
"source": "noreply@company.com",
"createdAt": "2026-04-15T10:23:00.000Z"
}
]
}

Response Fields

FieldTypeDescription
messageIdstringUnique identifier of the message
typestringCommunication channel (sms, email, push, etc.)
statusstringDelivery status in lowercase: sent, failed, bounce complaint, delivered, open, or clicked
destinationstring | nullRecipient address (phone number or email)
membershipKeystringLoyalty membership key of the recipient
templateIdstring | nullIdentifier of the message template used
campaignIdstring | nullIdentifier of the campaign that triggered the message
providerstringDelivery provider (e.g., verimor, ses and notification)
sourcestring | nullSource identifier (e.g., SMS sender name or email "from" field)
createdAtISO 8601 dateTimestamp when the log entry was created

Error Response Examples

Missing Member Object

{
"statusCode": 400,
"status": "error",
"errors": [
{
"code": "301",
"message": "member is required"
}
]
}

No Member Identifiers Provided

{
"statusCode": 400,
"status": "error",
"errors": [
{
"code": "202",
"message": "None of the member identifier fields were provided"
}
]
}

Member Not Found

{
"statusCode": 404,
"status": "error",
"errors": [
{
"code": "302",
"message": "Member not found for the given identifier"
}
]
}

Invalid Status Value

{
"statusCode": 400,
"status": "error",
"errors": [
{
"code": "1005",
"message": "Invalid status value"
}
]
}

Invalid Date Format

{
"statusCode": 400,
"status": "error",
"errors": [
{
"code": "1002",
"message": "Invalid fromDate format (must be ISO 8601)"
}
]
}

Internal Server Error

{
"statusCode": 500,
"status": "error",
"errors": [
{
"code": "1030",
"message": "Internal server error while fetching delivery logs"
}
]
}

Error Codes

HTTP StatusCodeDescription
400101Missing or invalid x-api-key header
400102Missing x-source-type header
400103Missing x-source-name header
400104Missing x-pos-id header
400105Missing x-branch-id header
400301Missing or invalid member object
400202None of the member identifier fields were provided
4001004Invalid type value
4001005Invalid status value
4001002Invalid fromDate format (must be ISO 8601)
4001003Invalid toDate format (must be ISO 8601)
404302Member not found for the given identifier
5001030Internal server error while fetching delivery logs

Field Reference

FieldTypeDescription
memberobjectRequired. Member identifier object (must contain at least one identifier field)
typestringCommunication channel type (e.g., sms, email, push)
statusstringDelivery status (sent, failed, bounce complaint, delivered, open, or clicked)
fromDateISO 8601 dateStart date for filtering log entries
toDateISO 8601 dateEnd date for filtering log entries
limitintegerMaximum records to return (1–100)
offsetintegerNumber of records to skip for pagination
  • Viewing member communication history for support inquiries
  • Monitoring individual member engagement metrics
  • Debugging failed messages for specific members
  • Verifying delivery of important communications
  • Building member-specific engagement dashboards
  • Compliance audit trails for member communications