1. Conventions
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. Conventions

Errors

HTTPMeaningNotes
200OKSuccessful request.
400Bad requestInvalid input the DTO didn't catch (e.g. bad phone number, unauthorized sender_id, invalid from/to date).
401UnauthenticatedMissing/invalid API key, disabled org.
402Payment requiredInsufficient wallet balance (see below).
404Not foundUnknown route, or a referenced resource (e.g. template) doesn't exist.
422Validation failedRequest body failed validation; errors is a field→messages map.
429Too many requestsRate limit exceeded.
502Bad gatewayThe upstream SMS provider rejected/failed the request — retryable; you were not charged.
500Server errorUnexpected; safe to retry later.
Validation error (422) — errors maps each invalid field to its messages, and message echoes the first:
{
  "success": false,
  "message": "SMS body is required",
  "errors": {
    "body": ["SMS body is required"],
    "recipient": ["Recipient cannot exceed 20 characters"]
  }
}
Unknown/extra fields in a request body are rejected (not silently ignored).
Insufficient balance (402) carries a machine-readable code so you can branch on "top up":
{
  "success": false,
  "message": "Insufficient wallet balance. Required: ₦8.00, Available: ₦2.00",
  "errors": { "code": "insufficient_funds", "required": 8.00, "available": 2.00 }
}
Malformed JSON returns 400 with message: "Invalid request body: malformed JSON".
Modified at 2026-06-23 08:45:10
Previous
Response envelope
Next
Rate limits
Built with