Delivery logs
Read, filter, and retry sends through the Sends API.
Every message you send is queryable through the Sends API. Use it to check a
single message, reconcile a batch, or find failures to retry. These endpoints
need a key with the sends:read scope (Authentication).
List sends
curl "https://api.dev.messagepipe.dev/v1/sends?channel=email&status=failed&limit=50" \
-H "Authorization: Bearer mp_live_xxxxxxxxxxxxxxxx"The response is a cursor-paginated page:
{
"data": [
{
"id": "msg_06F4Y9CP1GQB39AA",
"status": "delivered",
"channel": "email",
"template_id": null,
"queued_at": "2026-06-23T10:00:00Z"
}
],
"next_cursor": "..."
}Pass next_cursor back as the cursor query parameter to page forward.
Filters
| Parameter | Filters by |
|---|---|
channel | email, sms, push, chat |
status | queued, sent, delivered, bounced, failed |
provider | provider that handled the send |
template_id | sends that used a given template |
recipient | a specific recipient |
tag | a tag you attached at send time |
from, to | RFC 3339 time bounds |
limit | page size (positive integer) |
cursor | pagination cursor from a prior page |
Get one send
curl https://api.dev.messagepipe.dev/v1/sends/msg_06F4Y9CP1GQB39AA \
-H "Authorization: Bearer mp_live_xxxxxxxxxxxxxxxx"Returns the full record for that message, including its current status and
timestamps. The identifier field is id (a msg_ value).
Status lifecycle
queued -> sent -> delivered | bounced | failedqueued is set on acceptance, sent once a provider accepts the payload, and
the terminal states arrive through provider delivery webhooks. If those
webhooks are not yet configured, a message can sit at sent even though it was
delivered. MessagePipe does not emit opened or clicked events.
Retry a send
curl -X POST https://api.dev.messagepipe.dev/v1/sends/msg_06F4Y9CP1GQB39AA/retry \
-H "Authorization: Bearer mp_live_xxxxxxxxxxxxxxxx"Re-queues a failed or bounced message. The retry is linked back to the
original through a retried_from marker in its metadata.
For aggregate views (rates, provider comparison, geography) rather than per-message records, use Analytics.