Vouch logoVouch
Getting started

Video verification

Preview: Video verification is in preview and available on selected data sources. The API may change.

What it is

Video verification is an alternative to the cryptographic web-proof (TLSN) flow. Instead of notarizing an HTTP transcript, the Vouch Verifier mobile app screen-records the user's session and hands the recording to an AI verifier, which returns a verdict (approved / rejected) and the same structured outputs you get from a web proof.

Use it for sources that can't be notarized but can be demonstrated on screen. Everything else — creating the request, the webhook, redirectBackUrl — works exactly like First steps.

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

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.

Screen recording captures everything visible on screen. Make sure users only show what's needed for the verification.