Get an SMS campaign's delivery report
const url = 'https://api.tryletterhead.com/api/v3/channels/example/letters/example/sms/delivery-report?api=true';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The newsletter’s channel identifier (slug).
Unique id of the SMS campaign (letter).
Query Parameters
Section titled “Query Parameters ”Required. Set to true.
Responses
Section titled “ Responses ”200 OK
object
object
object
object
Always 1 for this endpoint.
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.
object
object
object
Example
{ "data": [], "items": [], "message": "Letter is not found on this channel.", "total": 0}Still can’t find what you need? Contact support.