Poll a user’s KYC status or subscribe to verification webhooks
Verification is asynchronous. Bridge reviews the submission after the user completes the hosted flow, and can revoke an endorsement later. Your app can poll for status or subscribe to webhooks. See Bridge’s customer status lifecycle for how Bridge derives each status.Before tracking status, create a KYC link for the user.
Use the list method from the kyc resource on users().
import {PrivyClient} from '@privy-io/node';const privy = new PrivyClient({ appId: process.env.PRIVY_APP_ID!, appSecret: process.env.PRIVY_APP_SECRET!});const {kyc_statuses: statuses} = await privy.users().kyc.list('did:privy:xxxxx');// one entry per provider the user has been verified withfor (const status of statuses) { console.log(status.provider, status.kyc.status, status.endorsements);}
Privy emits a user.kyc.updatedwebhook whenever a user’s verification state changes at Bridge, re-emitting Bridge’s customer webhooks as a Privy event. The payload carries a full state snapshot in data and a changes diff of the fields that moved, so your app can react to a specific transition without storing prior state.
Webhooks can be tested at no cost in development environments. To enable webhooks in production,
upgrade to the Enterprise plan in the Privy Dashboard.
Fields that changed, keyed by dot-notation path. Each value is a [previous, current] tuple.
Privy omits events where no meaningful verification field changed.
If an endorsement is incomplete, read data.endorsements[].missing for the requirements Bridge is still waiting on, then create a new KYC link for the user to resolve them.