Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.proof.community/llms.txt

Use this file to discover all available pages before exploring further.

Identity verification is handled entirely inside the widget. You do not build any verification UI yourself.

First-time user

When a user opens the widget for the first time, the widget detects that no verified profile exists and walks them through:
  1. Document upload — passport, national ID, or driver’s licence.
  2. Liveness check — a short selfie via camera. Camera permission must be granted (see Mobile).
The widget renders the Sumsub KYC flow automatically when verification is required — you do not need to integrate Sumsub yourself. Once verified, the user proceeds directly to payment without leaving the widget. Typical verification time is a few minutes, but can be longer in some cases.

Returning user

Verification status is remembered across sessions. A verified user skips directly to payment.

Check verification status from your backend

curl https://DOMAIN/widget/users/user-123/kyc-status \
  -H "Authorization: Bearer <client_token>"
Response
{
  "partner_user_id": "user-123",
  "status": "verified"
}
Full reference: GET /widget/users/{id}/kyc-status.

Statuses

StatusMeaning
not_startedThe user has never opened the widget or has not submitted documents
pendingDocuments submitted; under review
verifiedVerification passed — the user can transact
failedVerification failed — the user must retry inside the widget
Embed the widget unconditionally. The widget will start verification automatically for users who need it. There is no error code that requires you to gate the launch yourself. Optionally, call GET /widget/users/{id}/kyc-status first to show a custom message (e.g. “Verify your identity to buy crypto”) before opening the widget.

Camera permissions

The liveness check requires camera access. Without it, verification cannot complete.
  • iOS: add NSCameraUsageDescription to Info.plist. See Mobile.
  • Android: use Chrome Custom Tabs (no extra config) or grant CAMERA in your manifest if using WebView. See Mobile.