Solutions · OTP Verification

Phone Verification API —
Send OTP Codes via iMessage

Deliver verification codes in under a second via iMessage, with automatic SMS fallback. No 10DLC registration, no carrier approval, no per-number monthly fees — one API, fastest possible delivery.

SMS OTP via traditional APIs takes 3-5 seconds and costs $0.0079 per message — plus 10DLC campaign registration fees and weeks of approval time. senderZ routes via iMessage first, skipping all of that.

Glass-style 3D illustration of a shield containing a 4-digit code bubble — senderZ phone verification API

How it works

Four steps from API call
to verified user.

One endpoint, one round trip. iMessage when possible, SMS when not — you don't need to know which.

01

Generate your OTP code

Create a random code in your backend and store it with an expiry. senderZ handles delivery — you handle verification logic.

02

Call the senderZ API

One POST request with the recipient number, your OTP template, and the code as a variable. Set channel to "auto" and senderZ picks the fastest route.

03

Deliver via iMessage or SMS

If the recipient has iMessage, the code arrives in under a second. If not, senderZ falls back to SMS automatically.

04

User enters code, you verify

Compare the submitted code against what you stored. Use the senderZ delivery receipt to confirm the message was delivered before timing out.

POST /v1/messages
curl -X POST https://api.senderz.com/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+15551234567",
    "channel": "auto",
    "template": "otp_verify",
    "data": {
      "code": "4821",
      "app_name": "Acme",
      "minutes": "10"
    }
  }'

Use cases

Where verification codes earn their keep.

User signup verification

Verify new accounts at registration with a one-time code delivered via iMessage. Sub-second delivery keeps your signup flow fast — users enter the code before they lose focus.

Two-factor authentication

Add a second factor to login flows. iMessage delivery is faster and more reliable than SMS, and read receipts confirm the code was seen — useful for security-sensitive applications.

Password reset

Send password reset codes instantly. The high-priority queue ensures reset codes are never delayed behind marketing sends, and auto-routing guarantees delivery regardless of the recipient's device.

What you get

Verification, end to end.

Sub-second delivery

iMessage OTPs arrive in under a second, compared to 3-5 seconds over SMS. Faster verification means less drop-off in your sign-up flow.

Auto-routing

Set channel: "auto" and senderZ delivers via iMessage when available, SMS when not. You write the code once, it works for every recipient.

Template system

Create a reusable OTP template with dynamic variables for the code, expiry time, and app name. Update the copy once and it applies to every send.

High-priority queue

OTP messages are marked as high priority and skip ahead of marketing and alert messages, so verification codes are never waiting behind a bulk send.

Delivery receipts

iMessage provides native read receipts. Know exactly when a verification code was delivered and opened — no guessing whether it arrived.

Not a developer?

senderZ Workspace lets you send messages, manage contacts, and run campaigns without writing code. See plans and pricing

FAQ

Frequently asked questions

How fast is iMessage OTP delivery?

iMessage OTPs typically arrive in under one second. SMS delivery through traditional carriers takes 3-5 seconds on average. senderZ routes via iMessage first and falls back to SMS automatically, so your users always get the fastest available delivery.

Do I need 10DLC for OTP?

No. senderZ routes OTP codes via iMessage, which does not require 10DLC registration, campaign approval, or carrier fees. If the recipient does not have iMessage, senderZ falls back to SMS through the device SIM — still no 10DLC required.

What if the recipient doesn't have iMessage?

senderZ automatically falls back to SMS. Set channel to "auto" and the API handles detection and routing. Your code stays the same regardless of which channel delivers the message.

Can I customize the OTP template?

Yes. Create a template with variables like {{code}}, {{app_name}}, and {{minutes}} for expiry. Update the template once and every future OTP send uses the new copy. Templates are managed via the API or the senderZ dashboard.

How do I verify the code on my end?

senderZ handles delivery, not verification logic. Generate the OTP code in your backend, store it with an expiry, send it via senderZ, then compare what the user submits against what you stored. The API returns a message ID you can use to correlate delivery status with your verification flow.

Verify users in under a second.

14-day free trial. No credit card. No 10DLC.