Skip to content
Letterhead Letterhead Letterhead Help Center
Admin Tools

Get an SMS campaign's delivery report

GET
/api/v3/channels/{channelSlug}/letters/{letterUniqueId}/sms/delivery-report
curl --request GET \
--url 'https://api.tryletterhead.com/api/v3/channels/example/letters/example/sms/delivery-report?api=true' \
--header 'Authorization: Bearer <token>'

One SMS campaign’s delivery report for the campaign report’s Metrics chart: every recipient in exactly one of delivered / not delivered / pending / outcome unknown, the STOP replies attributed to the campaign, and the send’s state and rates. Counts only — no recipient identity ever appears in the response.

This endpoint is gated behind an internal feature flag that is not yet enabled for any tenant. While it’s off, the endpoint returns 404 Not Found.

v3 endpoints expect a company API key.

channelSlug
required
string

The newsletter’s channel identifier (slug).

letterUniqueId
required
string

Unique id of the SMS campaign (letter).

api
required
boolean

Required. Set to true.

200 OK

Media type application/json
object
items
object
uniqueId
string
state
string
startedAt
string
completedAt
string
settled
boolean
recipients
integer
delivered
integer
notDelivered
integer
pending
integer
unknown
integer
unsubscribed
integer
deliveryRate
number
optOutRate
number
notDeliveredBreakdown
object
undelivered
integer
failed
integer
rejected
integer
skipped
integer
pendingBreakdown
object
held
integer
queued
integer
inFlight
integer
message
string
total

Always 1 for this endpoint.

integer
Example
{
"items": {
"uniqueId": "an-example-letter-uid",
"state": "sent",
"startedAt": "2026-09-15T14:00:00+00:00",
"completedAt": "2026-09-15T14:05:00+00:00",
"settled": true,
"recipients": 1000,
"delivered": 940,
"notDelivered": 60,
"pending": 0,
"unknown": 0,
"unsubscribed": 5,
"deliveryRate": 0.94,
"optOutRate": 0.005,
"notDeliveredBreakdown": {
"undelivered": 40,
"failed": 15,
"rejected": 5,
"skipped": 0
},
"pendingBreakdown": {
"held": 0,
"queued": 0,
"inFlight": 0
}
},
"message": "Ok",
"total": 1
}

404 Not Found — channelSlug doesn’t match a channel this company owns, the letter isn’t found on this channel, or the letter isn’t an SMS campaign.

Media type application/json
object
data
Array<object>
object
items
Array<object>
object
message
string
total
integer
Example
{
"data": [],
"items": [],
"message": "Letter is not found on this channel.",
"total": 0
}

Still can’t find what you need? Contact support.