1. Delivery webhooks
PressOne eSIM Developer Platform
  • OVERVIEW
    • Introduction
    • Attribute descriptions
    • FAQ
    • User journeys
      • Top-up Journey
      • Purchase Journey
    • Guides
      • eSIM installation methods for API Partners
      • How to generate the QR code for an eSIM
  • REST API
    • Data / Data + Voice + SMS eSIM
      • Introduction
      • Error handling
      • Endpoints
        • Authenticate
          • Get token information
          • Refresh access token
          • Request access token
        • Check balance
          • Get balance
        • Compatible devices
          • Get compatible device lite list
        • Browse packages
          • Get packages
        • Place order
          • Submit order
        • Manage orders
          • Get order list
          • Get order
        • Manage eSIMs
          • Get eSIM by ICCID
          • Get eSIMs list
          • Get eSIM package history
        • Install eSIM
          • Get installation instructions
        • Monitor usage
          • Get usage (data, text & voice)
        • Place top up order
          • Get top-up package list
          • Submit top-up order
    • Voice-only eSIM
      • Getting Started
      • Error handling
      • Endpoints
        • List Available Numbers
        • Claim Number
        • Renew Number
        • List User
    • SMS
      • Introduction
      • Authentication
      • Conventions
        • Response envelope
        • Errors
        • Rate limits
        • Idempotency
        • Date ranges & timezone
        • Pagination
      • Endpoints
        • Send an SMS
          • Send SMS /api/sms/send
        • List message logs
          • List message logs /api/sms/logs
        • Get statistics
          • Get statistics /api/sms/statistics
        • Export logs (CSV)
          • Export logs (CSV) /api/sms/export
        • Analytics
          • Overview
            • Overview /api/sms/analytics/overview
          • Message volume
            • Message volume /api/sms/analytics/message-volume
          • Delivery status distribution
            • Delivery status distribution /api/sms/analytics/delivery-status
          • Delivery report
            • Delivery report - /api/sms/analytics/delivery-report
        • Check wallet balance
          • Check wallet balance /api/sms/balance
        • Send an OTP
          • Send an OTP /api/sms/otp/send
        • Verify an OTP
          • Verify an OTP /api/sms/otp/verify
      • Delivery webhooks
        • Delivery webhooks
      • Message lifecycle & statuses
        • Message lifecycle & statuses
      • Appendix: message object
        • Appendix: message object
  1. Delivery webhooks

Delivery webhooks

Instead of polling /sms/logs, you can have PressOne push delivery events to your
server as messages move through their lifecycle.
Setup: set your Delivery webhook URL in the dashboard
(Account → Company settings, requires the Manage Company Settings permission). The
URL must be public HTTPS — http://, private/internal IPs, and cloud-metadata hosts
are rejected (SSRF protection).
Behaviour: for each delivery report PressOne receives from the provider, it sends an
HTTP POST (JSON) to your URL. Requests time out after 10s, redirects are not
followed, and delivery is best-effort (no automatic retry). Treat the webhook as a
hint and reconcile against /sms/logs using message_id as the source of truth.
Payload
{
  "event": "sms.delivered",
  "message_id": "a3d5f0c1-9e22-4b7a-8f1c-2d6e9b0a4c77",
  "status": "delivered",
  "recipient": "+2348120191228",
  "operator": "MTN",
  "delivered_at": "2026-06-22T09:15:01.000Z",
  "error_message": null,
  "timestamp": "2026-06-22T09:15:01.123Z"
}
FieldDescription
eventsms.delivered, sms.sent, or sms.failed.
message_idThe UUID returned by POST /sms/send.
statusdelivered, sent, or failed.
recipientDestination number (E.164).
operatorMobile network operator, if known (else null).
delivered_atISO timestamp when delivered, else null.
error_messageFailure reason when status is failed, else null.
timestampWhen the event was emitted (ISO).
Respond 2xx quickly. Webhooks are not signed; since message_id is an unguessable
UUID, verify any event by looking the message up via GET /sms/logs?message_id=….
Modified at 2026-06-23 09:19:35
Previous
Verify an OTP /api/sms/otp/verify
Next
Message lifecycle & statuses
Built with