Send a verification code
Generate and deliver a one-time verification code via the specified channel.
Authorizations
Dashboard JWT token from Clerk
Body
Recipient (E.164 phone or email)
Delivery channel for the OTP (defaults to sms)
sms, whatsapp, email, viber, voice, telegram, silent, rcs, flashcall, sna, totp, push, magic_link, backup_code Optional ad-hoc fallback channel chain (overlays the send when no profile_id is set)
1 - 4 elementssms, whatsapp, email, voice, viber, telegram, silent, rcs Optional async fallback engine config (pairs with channels)
Max verification attempts
1 <= x <= 10Optional verification profile ID. Format is vprof_<hex> (per generateId("vprof")); NOT a bare UUID — the prior format: uuid constraint here was the root cause of DEVOTEL-ORBIT-28 (27 events in 11 days) where every FE call with a real profile id 422'd before reaching the Zod parse.
1 - 64Optional ISO 3166-1 alpha-2 country hint (e.g. TR) so national-format phone numbers normalise to the E.164 form OTP providers require. Not needed for clean E.164 input.
2Number of digits in the generated OTP (defaults to 6). Must equal custom_code length when a custom code is supplied.
4 <= x <= 8Optional PSD2 SCA dynamic-linking binding. Replay the SAME object on POST /verify/check; a mismatch rejects with BINDING_MISMATCH. Omit for non-PSD2 flows.
Optional 2-letter language code selecting the localized voice TTS and SMS body for the built-in fallback message. Profile-defined templates override it. Region tags (e.g. es-MX) are rejected — use es.
en, es, fr, de, it, pt, nl, tr, ar, ja, zh, ko, ru, pl, sv, da, nb, fi, cs, el, he, hi, id, th, vi Optional caller-supplied OTP (4–8 digits, digits only) for sandbox / test-mode QA. Rejected on live keys. Its length must equal code_length.
^\d{4,8}$Device-bound network access token for the sna channel (Silent Network Authentication), obtained via the GSMA Open Gateway / CAMARA flow. When present on an sna send, verification completes via a network possession-proof and no OTP is minted.
1