Integration

Mobile apps

iOS, Android, React Native and Flutter.

You have two options. Most teams start with the WebView and add native screens later.

#Option 1: WebView (fastest)

Open the session url in a WebView and allow camera access. The flow posts events to window.ReactNativeWebView (React Native) or a KYCBridge JavaScript interface (native Android, iOS and Flutter).

PlatformWhat to enable
iOS (WKWebView)NSCameraUsageDescription in Info.plist, allowsInlineMediaPlayback = true
Android (WebView)CAMERA permission, grant onPermissionRequest in your WebChromeClient, enable JavaScript and DOM storage
React Nativereact-native-webview with mediaPlaybackRequiresUserAction={false}, allowsInlineMediaPlayback
Flutterwebview_flutter or flutter_inappwebview with camera permission granted

#Option 2: your own screens

Build native capture screens and send the files to the client flow API with the session token. Your app never needs a secret key.

bash
curl -X POST https://{{HOST}}/v1/flow/files -H "Authorization: Bearer vs_..." -F kind=doc_front -F [email protected]
curl -X POST https://{{HOST}}/v1/flow/files -H "Authorization: Bearer vs_..." -F kind=selfie -F [email protected]
curl -X POST https://{{HOST}}/v1/flow/submit -H "Authorization: Bearer vs_..."

#NFC chip reading

Native code for reading passport and ID chips is in the NFC SDK (sdk/nfc/, Swift for iOS and Kotlin for Android). It reads the chip and sends it to POST /v1/flow/nfc, where we verify it. See NFC verification.