Truzzt

Preparing your verification workspace…

SDK

Mobile SDK & plugins

NO OTP · OTP-LESS · OTP IS GONE. Login · Register · Forgot → openVerify(verifyUrl). On-device SIM / Contacts match. Themed WebView. Webhook identity.verified. No SMS codes. No QR in the primary UX.

Platform matrix

After the user Allows access, the SDK collects lines in the background. Server matches the session phone to any reported line. Plain browsers cannot read lines (agent-style shell with Try again only).

StackPathDevicesLine sources
Java / Kotlinandroid/AndroidSIM, device info, Contacts
Swiftios/iOSContacts Me, owner contacts
Capacitor / Ionicpackages/capacitorAndroid + iOSNative SDK per OS
Cordovapackages/cordovaAndroid + iOSNative SDK per OS
Flutterpackages/flutterAndroid + iOSNative SDK per OS
React Nativepackages/react-nativeAndroid + iOSNative SDK per OS
Expopackages/expoAndroid + iOS (Dev Client)Same as RN · Expo Go unsupported

Install plugins / SDK

Clone once, then install per stack. Full guides on GitHub.

git clone https://github.com/kreatedeviq/truzzt-sdk.git

Android — Gradle module

include ':truzzt-sdk'
  project(':truzzt-sdk').projectDir = new File(settingsDir, '../truzzt-sdk/android')
  // dependencies { implementation project(':truzzt-sdk') }

iOS — Swift Package Manager

.package(url: "https://github.com/kreatedeviq/truzzt-sdk.git", from: "2.0.0")
  // product: TruzztSdk

Capacitor

npm install ./truzzt-sdk/packages/capacitor
  npx cap sync

Cordova

cordova plugin add ./truzzt-sdk/packages/cordova

Flutter

# pubspec.yaml
  dependencies:
    truzzt_flutter:
      git:
        url: https://github.com/kreatedeviq/truzzt-sdk.git
        path: packages/flutter
  # then: flutter pub get

React Native

npm install ./truzzt-sdk/packages/react-native

Expo (Dev Client — not Expo Go)

npm install ./truzzt-sdk/packages/expo ./truzzt-sdk/packages/react-native
  # app.json plugins: ["@truzzt/expo"]
  npx expo prebuild && npx expo run:android

Product flow

  1. Host app: Login / Register / Forgot (password optional).
  2. Backend: POST /secure-api/v1/verifications with Bearer API key, projectId, phone, countryCode, purpose (login | register | forgot_password), returnUrl, cancelUrl, optional theme.
  3. Response: verifyUrl (pairUrl is the same URL — legacy alias).
  4. App: configure(apiKey, projectId[, theme]) then openVerify({ url: verifyUrl }).
  5. SDK opens themed verify WebView, reads lines, POSTs /secure-api/identity/verify.
  6. Match → matched: true + webhook identity.verified + redirect to returnUrl.

Try the flow: agent/app demo or install the Agent APK.

Theme & branding

Match the verify WebView to your app. Set palette in any combination of:

  • configure(…, theme) in the SDK
  • theme object on POST /secure-api/v1/verifications
  • Query params on verifyUrl (SDK wrappers append configured theme automatically)
KeyUse
accentPreloader / spinner
backgroundPage background
textPrimary text
mutedSecondary text
primaryButtons / emphasis
appNameHeader title
logoUrlLogo image URL
await Truzzt.configure({
    apiKey: 'trz_live_…',
    projectId: 'proj_…',
    theme: {
      primary: '#0B1F3A',
      accent: '#FFC83D',
      background: '#071525',
      text: '#F7F4EE',
      muted: '#94A3B8',
      appName: 'My App',
      logoUrl: 'https://…'
    }
  })

Shared methods & result

MethodPurpose
configure({ apiKey, projectId, baseUrl?, theme? })Required; validates plan via /sdk/access
requestPermissions()Phone + Contacts (Android); Contacts (iOS)
getSimPhones()Collected lines (debug / pre-check)
openVerify({ url, theme? })Themed WebView → match → result object
{
    "matched": true,
    "status": "completed",
    "matchedSlot": "sim1",
    "matchedSource": "sim_chip",
    "sessionId": "sess_…",
    "platform": "android" | "ios"
  }

Treat the webhook identity.verified as the source of truth for your backend.

Line sources (Android & iOS)

Android: sim_chip, device_info_api, sim_settings, contacts_saved:…, optional dialer_star06.

iOS: contacts_me, settings_phone_my_number, settings_cellular_sim1/sim2, contacts_saved:… — no SIM chip MSISDN.

Permissions (short)

Android: INTERNET, network state, phone state/numbers, contacts — to match the account phone on-device (OTP-less). Not used: Camera, Call Phone, SMS.

iOS: Contacts only (NSContactsUsageDescription) — My Card / “My number” / “رقمي”. Apple blocks SIM MSISDN.

Play — Phone: Confirm SIM/line owns the account number during verify. No calls/SMS/ads.

Play — Contacts: Owner-labelled numbers only when SIM hides MSISDN. Not a contacts sync.

Copy sheet: docs/PERMISSIONS.md

Android (Java / Kotlin)

ANDROID.md

TruzztSdk.configure(apiKey, projectId, null, themeJson);
  TruzztSdk.requestPermissions(this);
  startActivityForResult(TruzztSdk.verifyIntent(this, verifyUrl), 9101);

iOS (Swift)

IOS.md

TruzztSdk.configure(apiKey: key, projectId: proj, theme: theme)
  TruzztSdk.openVerify(from: self, sessionUrl: verifyUrl) { result in … }

Capacitor / Ionic

CAPACITOR.md

import Truzzt from '@truzzt/capacitor'
  await Truzzt.configure({ apiKey, projectId, theme })
  await Truzzt.openVerify({ url: verifyUrl })

Cordova

CORDOVA.md

Truzzt.configure({ apiKey, projectId, theme }, ok, err)
  Truzzt.openVerify({ url: verifyUrl }, ok, err)

Flutter

FLUTTER.md

await TruzztFlutter.configure(apiKey: k, projectId: p, theme: {...});
  final r = await TruzztFlutter.openVerify(verifyUrl);

React Native

REACT_NATIVE.md

import { configure, openVerify } from '@truzzt/react-native'
  await configure({ apiKey, projectId, theme })
  const r = await openVerify({ url: verifyUrl })

Expo (Dev Client)

EXPO.md · Expo Go not supported

// app.json plugins: ["@truzzt/expo"]
  import { configure, openVerify } from '@truzzt/expo'
  await configure({ apiKey, projectId, theme })
  const r = await openVerify({ url: verifyUrl })

Troubleshooting

SymptomFix
SDK_REQUIRED / browser verifyUse openVerify in SDK or Agent — not Chrome alone
Permission deniedrequestPermissions; user must Allow
Empty lines (iOS)Contacts Me or "My number" / "رقمي" contact
Expo GoUse prebuild + Dev Client + native link
PLAN_REQUIREDSubscribe after free year

Clone

git clone https://github.com/kreatedeviq/truzzt-sdk.git
  cd truzzt-sdk
  # docs: ANDROID · IOS · CAPACITOR · CORDOVA · FLUTTER · REACT_NATIVE · EXPO