channel: "whatsapp_inbound" to POST /v3/request. OTP.ID returns a WhatsApp number, an exact message, and a deep link. The user sends that message to OTP.ID, and OTP.ID verifies the transaction automatically.
This channel does not use POST /v3/send and does not use POST /v3/verify.
Flow overview
1
Create an inbound transaction
Call
POST /v3/request with channel: "whatsapp_inbound". Include destination only when you want to bind the verification to one sender number.2
Show the WhatsApp action
Render
verification.wa_link as the primary action. You can also show verification.wa_number and verification.message for manual copy.3
User sends the exact message
The user opens WhatsApp and sends the pre-filled message to the OTP.ID WhatsApp number.
4
OTP.ID verifies automatically
OTP.ID matches the inbound message to the transaction and marks it verified.
5
Update your UI
Use the
otp.verified webhook for server-side automation, or poll GET /v3/otp/{otp_id} while the UI is waiting.Create the inbound transaction
Request
Success response
Show the WhatsApp action
Useverification.wa_link as your primary button.
Detect verification
WhatsApp Inbound is verified automatically. Do not ask the user for a code and do not callPOST /v3/verify.
Option A: Listen for the webhook
OTP.ID sends theotp.verified webhook after the inbound message is matched.
Option B: Poll the status endpoint
If your UI is waiting in real time, pollGET /v3/otp/{otp_id} until the transaction becomes verified or expires.

