Drop-in phone proof for register, login, forgot password, and confirm order — SDK automatic line match, webhook to your app. No OTP codes. No QR required.
What this is for
Your mobile / web app (a Truzzt project) needs to prove a user really controls a phone number. Use Truzzt instead of SMS OTP for:
register — new account signup
login — passwordless or step-up login
forgot_password — reset only after identity match
confirm_order — high-risk checkout / COD confirm
Any other flow — pass your own purpose string
🔐
End users never see agent tokens. Agent tokens are admin gateway secrets only. Customers only open /verify/{sessionId}.
Activate (one-time setup)
Create an account → open Dashboard.
Create a Project (e.g. “Ecommerce Shop”, “Agent App”) — new accounts get 1 year free with unlimited apps & auth.
Set the project webhook URL (your backend, or the demo inbox while testing).
SDK reads device lines (Android SIM + Contacts; iOS Contacts Me / owner lines), then POST /secure-api/identity/verify.
Server matches the session phone against any reported line. No OTP. Plain browsers show an agent-style shell (Try again) and cannot complete match.
Success → redirect to returnUrl?sessionId=&status=completed&matched=true.
Your project webhook receives identity.verified. Demo: agent/app · Agent APK.
Matching process (how lines are read & compared)
After the user opens verifyUrl inside the SDK / Agent and grants consent, the native bridge collects phone lines in the background. The verify page POSTs them to the server. Matching is phone-number only — we never accept the session phone as proof without a device-reported line.
Android sources (merged automatically)
Source tag
What it reads
sim_chip
SIM1 / SIM2 MSISDN via SubscriptionManager + TelephonyManager
device_info_api
MSISDN, IMEI, ICCID per slot (same fields as *#06# device info)
theme (optional) tints the verify WebView (preloader uses accent). You can also pass the same keys via SDK configure(…, theme) or query params on verifyUrl.
Some legacy integrations may still receive optional qrUrl / qrValue fields; the recommended path is openVerify(verifyUrl) in the mobile SDK — no QR step in your UX.
📱
Pass verifyUrl to openVerify in the Truzzt SDK (Flutter, Capacitor, Cordova, React Native, Expo Dev Client, or native Android/iOS).
See SDK docs and try agent/app.
2 · Poll (optional)
GET /secure-api/v1/verifications/:sessionId
Useful if the user stays in your app UI while the SDK completes matching. When done: status: "completed", matched: true.
Works with HTTPS pages, PWAs, Flutter, Ionic, Capacitor, Cordova, React Native, native iOS/Android deep links. Still treat the webhook (or a server-side poll) as authoritative before granting access.
New accounts get 1 year free with unlimited apps and unlimited verifications. After year 1, subscribe by project count (3 / 7 / 15 / Enterprise). Wallet is for buying plans — not per-verify charges during the free year or an active plan.
Limited launch offer
Full access
1 year free
Register now and unlock unlimited apps, unlimited identity verifications, and full SDK/API access for your first year — on us. After that year, simple paid plans kick in.