Messaging
Delivery reports and logs
Every SMS ends with a final status: delivered, undeliverable, expired or rejected. Get it pushed to a webhook as it happens, fetch it, or search your logs.
Receive reports on a webhook
Set webhooks.delivery.url on each message. When the final status is known, Pulsr sends it to that URL. Add intermediateReport: true to also receive pending states.
Handle the report
Update your records from status.groupName and keep error.name when something went wrong. The Webhooks guide covers securing the endpoint and handling retries.
| Field | Description |
|---|---|
messageId | Your ID if you set one on the destination, otherwise ours. |
status | Final status. See Message statuses. |
error | Why it failed, with permanent telling you whether retrying can help. |
sentAt, doneAt | When the message left Pulsr and when the final status was reached. |
messageCount | Number of SMS parts billed. |
price | pricePerMessage and currency. |
callbackData | The value you sent, untouched. |
Fetch reports
GET/sms/3/reports
No public server yet? Fetch reports instead. Filter by bulkId or messageId, and set limit (50 by default, up to 1,000).
Search logs
GET/sms/3/logs
Logs list sent messages with their current status, and can be queried as often as you need. Filter by destination, sender, bulkId, messageId, generalStatus (e.g. DELIVERED, UNDELIVERABLE) and a sentSince / sentUntil range. Use useCursor=true and the returned cursor to page through large results.