/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
memberobject must contain at least one identifier to resolve the member - Results are always sorted by
createdAtdescending (newest first) - When neither
fromDatenortoDateis provided, the endpoint automatically uses a 90-day window ending at the current time - The database stores
statusvalues capitalized but the API returns them in lowercase for consistency - Use
limitandoffsettogether 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
| Header | Type | Required | Description |
|---|---|---|---|
x-api-key | string | Yes | Business API key used to identify and authorize the caller |
x-source-type | string | Yes | Type of the calling system (e.g., pos, kiosk) |
x-source-name | string | Yes | Name of the calling application |
x-pos-id | string | Yes | Unique identifier of the POS terminal |
x-branch-id | string | Yes | Identifier 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:
| Field | Type | Description |
|---|---|---|
membershipKey | string | Loyalty membership key |
commonExtId | string | External system identifier |
phoneNumber | string | Member's phone number |
email | string | Member's email address |
shortCode | string | Temporary short code |
temporaryToken | string | Temporary authentication token |
cardNumber | string | Physical card number |
customIdentifier | string | Custom business-specific identifier |
Pagination & Filters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
type | string | No | — | Filter by message type (e.g., sms, email, push) |
status | string | No | — | Filter by delivery status: sent, failed, bounce complaint, delivered, open, or clicked |
fromDate | ISO 8601 date | No | 90 days ago | Start of the date range (createdAt >= fromDate) |
toDate | ISO 8601 date | No | now | End of the date range (createdAt <= toDate) |
limit | integer (1–100) | No | 40 | Maximum number of records to return |
offset | integer (≥ 0) | No | 0 | Number 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
| Field | Type | Description |
|---|---|---|
messageId | string | Unique identifier of the message |
type | string | Communication channel (sms, email, push, etc.) |
status | string | Delivery status in lowercase: sent, failed, bounce complaint, delivered, open, or clicked |
destination | string | null | Recipient address (phone number or email) |
membershipKey | string | Loyalty membership key of the recipient |
templateId | string | null | Identifier of the message template used |
campaignId | string | null | Identifier of the campaign that triggered the message |
provider | string | Delivery provider (e.g., verimor, ses and notification) |
source | string | null | Source identifier (e.g., SMS sender name or email "from" field) |
createdAt | ISO 8601 date | Timestamp 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 Status | Code | Description |
|---|---|---|
400 | 101 | Missing or invalid x-api-key header |
400 | 102 | Missing x-source-type header |
400 | 103 | Missing x-source-name header |
400 | 104 | Missing x-pos-id header |
400 | 105 | Missing x-branch-id header |
400 | 301 | Missing or invalid member object |
400 | 202 | None of the member identifier fields were provided |
400 | 1004 | Invalid type value |
400 | 1005 | Invalid status value |
400 | 1002 | Invalid fromDate format (must be ISO 8601) |
400 | 1003 | Invalid toDate format (must be ISO 8601) |
404 | 302 | Member not found for the given identifier |
500 | 1030 | Internal server error while fetching delivery logs |
Field Reference
| Field | Type | Description |
|---|---|---|
member | object | Required. Member identifier object (must contain at least one identifier field) |
type | string | Communication channel type (e.g., sms, email, push) |
status | string | Delivery status (sent, failed, bounce complaint, delivered, open, or clicked) |
fromDate | ISO 8601 date | Start date for filtering log entries |
toDate | ISO 8601 date | End date for filtering log entries |
limit | integer | Maximum records to return (1–100) |
offset | integer | Number of records to skip for pagination |
Related Use Cases
- 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