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).
| Platform | What 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 Native | react-native-webview with mediaPlaybackRequiresUserAction={false}, allowsInlineMediaPlayback |
| Flutter | webview_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.