1. Send an OTP
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
            POST
        • 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. Send an OTP

Send an OTP /api/sms/otp/send

Developing
POST
/api/sms/otp/send
Generates a one-time passcode, sends it via the dedicated OTP channel
("Your OTP for {brand} is: 1234"), and returns a reference to verify against. The
code itself is never returned or stored in plain text. Billed like a single SMS.
Body
FieldTypeRequiredNotes
recipientstringyesE.164 (e.g. +2348012345678).
sender_idstring (uuid)noApproved sender ID used as the OTP brand. Defaults to your approved/default sender ID.
lengthintegernoDigits in the code, 4–8 (default 4).
expiry_minutesintegernoValidity window, 1–30 (default 5).
hash_stringstringno11-char app signature for Android SMS Retriever auto-fill.
Success — 200 OK
{
  "success": true,
  "message": "OTP sent successfully",
  "data": { "reference": "a3d5f0c1-…", "expires_at": "2026-06-23T10:05:00.000Z", "status": "sent" }
}

Request

Header Params

Body Params application/jsonRequired

Examples

Responses

🟢200Success
application/json
Bodyapplication/json

Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://prod.your-api-server.com/api/sms/otp/send' \
--header 'x-api-key: {{x-api-key}}' \
--header 'Content-Type: application/json' \
--data '{
    "recipient": "string",
    "sender_id": "3194e023-c19f-4a42-9172-9e18d68e3a3a",
    "length": 0,
    "expiry_minutes": 0,
    "hash_string": "string"
}'
Response Response Example
{
  "success": true,
  "message": "OTP sent successfully",
  "data": { "reference": "a3d5f0c1-…", "expires_at": "2026-06-23T10:05:00.000Z", "status": "sent" }
}
Modified at 2026-06-23 14:25:03
Previous
Check wallet balance /api/sms/balance
Next
Verify an OTP /api/sms/otp/verify
Built with