Channel comparison
When you create a transaction, set thechannel 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/requestwhen OTP.ID should create the OTP, when you usemisscallorvoice, or when you need the specialwhatsapp_inboundresponse fields. - Use
POST /v3/sendonly when your app supplies the OTP code forwhatsapp,sms, oremail. - For
whatsapp,sms,misscall, andvoice, send the destination phone number indestination. - For
email, send the recipient email indestination. - For
whatsapp_inbound,destinationis 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.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.
