Video verification
Verify sources that cannot be notarized, by screen-recording the user's session and having an AI verifier return a verdict.
Preview: Video verification is in preview and available on selected data sources. The API may change.
What it is
Video verification is one of Vouch's two verification modes. Where a web proof attests the platform's own HTTP response, video verification has the Vouch Verifier mobile app screen-record the user's session and hand the recording to an AI verifier, which returns a verdict (approved / rejected) and the same structured outputs.
It exists for sources that cannot be reached by a web proof but can be clearly demonstrated on screen. Which mode a source uses is decided when the source is built, not per request.
Everything around it is identical to a web proof: creating the request, the webhook, redirectBackUrl and requestId all work exactly as in the Quickstart.
Prerequisites
- A data source with video verification enabled. Contact the Vouch team to enable it for a source.
- The end user needs the Vouch Verifier mobile app (iOS 16.4+ or Android 8+). Recording happens in the app; on desktop the user is handed off to mobile.
Trigger the video flow
Pass verificationMethod: "video" to getDataSourceUrl. The target data source must have video verification enabled; otherwise the request is rejected.
import { Vouch } from "@getvouch/sdk";
const vouch = new Vouch({
customerId: "1be03be8-5014-413c-835a-feddf4020da2",
apiKey: "your-api-key",
});
const { verificationUrl, requestId } = await vouch.getDataSourceUrl({
datasourceId: "your-video-data-source-id",
redirectBackUrl: "https://your-app.example.com/callback",
webhookUrl: "https://your-app.example.com/webhook",
verificationMethod: "video",
});
// Redirect the user to `verificationUrl` as usual.verificationMethod defaults to "web-proof", so existing integrations are unaffected.
Embedding the mobile SDK
If you embed @getvouch/mobile-sdk in your own app (rather than handing users off to the Vouch Verifier app), iOS video verification requires the SDK's Expo config plugin. It adds the App Group entitlement and the screen-recording broadcast extension that recording depends on:
{
"expo": {
"plugins": [
["@getvouch/mobile-sdk", { "appGroupIdentifier": "group.<your-bundle-id>" }]
]
}
}appGroupIdentifier is optional (defaults to the group.<your-bundle-id>.vouch convention). Rebuild with npx expo prebuild afterwards. Android needs no plugin, and regular web-proof verification needs neither the plugin nor an App Group — this applies only to video mode on iOS.
If a video data source runs without the plugin, the SDK stops the flow up front with an error rather than failing after recording. In development it also logs the exact plugin snippet to add.
What the user sees
Consent
The app explains that the screen will be recorded and asks for permission.
Record
The user performs the requested action while the app screen-records. Recording stops on a timeout or when the user ends it.
Verify
The recording is uploaded to the AI verifier and analyzed. The request stays in progress until the verdict is ready.
Receive the result
The verdict is delivered to your webhookUrl, the same way web proofs are (see Verifying web proofs). A video payload sets verificationMethod: "video" and adds a videoVerification block; webProofs is empty and the AI-extracted data is in outputs:
{
"requestId": "…",
"dataSourceId": "…",
"verificationMethod": "video",
"videoVerification": {
"verdict": "approved",
"recordingId": "…"
},
"outputs": {
/* AI-extracted fields, matching the data source's outputs schema */
},
"webProofs": []
}A rejected verdict is "verdict": "rejected" and may include a "reason".
Download the recording
The recording is stored by the verifier, not by Vouch. Mint a short-lived download URL on demand with your API key:
const { downloadUrl, expiresAt } = await vouch.getRecordingDownloadUrl({
requestId,
});The URL is short-lived — call getRecordingDownloadUrl again to get a fresh one when it expires.
Recordings are kept for 30 days after the request is created; the verifier then deletes the recording and the verification session. After that, getRecordingDownloadUrl throws a RecordingDownloadUrlError with statusCode 404. Download and store the recording yourself if you need it longer.
Screen recording captures everything visible on screen. Make sure users only show what's needed for the verification.
Last updated on
Web proof verification
The default Vouch verification mode — proof that a response came unmodified from the platform, during the user's own logged-in session.
Choosing a channel
Where your user completes a verification — the Vouch Verifier browser extension, the Vouch Verifier mobile apps, or your own app via our mobile SDKs.