MessagePipedocs
Guides

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

ParameterFilters by
channelemail, sms, push, chat
statusqueued, sent, delivered, bounced, failed
providerprovider that handled the send
template_idsends that used a given template
recipienta specific recipient
taga tag you attached at send time
from, toRFC 3339 time bounds
limitpage size (positive integer)
cursorpagination 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 | failed

queued 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.