Skip to main content
OTP.ID supports six OTP channels. Use this page to choose the right channel, then open the dedicated guide for copy-paste request examples, full success responses, verification examples, UI guidance, and channel-specific limits.

Channel comparison

When you create a transaction, set the channel field to one of the values below.
misscall, voice, and whatsapp_inbound only work with POST /v3/request. Use POST /v3/send only for whatsapp, sms, and email.

Endpoint compatibility and destination rules

  • Use POST /v3/request when OTP.ID should create the OTP, when you use misscall or voice, or when you need the special whatsapp_inbound response fields.
  • Use POST /v3/send only when your app supplies the OTP code for whatsapp, sms, or email.
  • For whatsapp, sms, misscall, and voice, send the destination phone number in destination.
  • For email, send the recipient email in destination.
  • For whatsapp_inbound, destination is optional and acts as a sender binding if you provide it.
number and email are legacy request fields. OTP.ID still accepts them, but destination is the preferred request field because it works for both phone-number and email channels.
If you are implementing one channel, start from that channel’s guide instead of the generic endpoint reference. Each guide shows the complete request, response, and verification flow for that channel.

How to choose a channel

  • Pick WhatsApp when you want a familiar, readable OTP message in markets with strong WhatsApp adoption.
  • Pick SMS when you need the broadest phone reach or a fallback for users without WhatsApp.
  • Pick Email when your login flow is email-first or your user may not share a phone number.
  • Pick Missed Call when you want a caller-ID-based flow that avoids SMS content entirely.
  • Pick WhatsApp Inbound when the user should initiate the WhatsApp message and complete verification from the chat handoff.
Missed Call has a distinct verification flow. OTP.ID returns verification.prefix and verification.otp_length, and your UI should ask the user for the trailing digits from the missed-call number in their call log. See the Missed Call guide.
Voice reads an OTP over a phone call. It is request-only, requires an explicit brand, and always uses four numeric digits. See the Voice guide.

Common flows