Skip to main content
Privy verifies an individual user with Bridge. Privy creates the Bridge customer on the first request and links it to the Privy user, so your app only ever references the Privy user ID. At a high level, KYC involves two steps:
1

Accept terms of service

The user accepts Bridge’s terms of service through a hosted link.
2

Perform identity verification

The user submits their identity information through a hosted verification flow.
Bridge currently supports hosted KYC only. Both endpoints return a link that your app passes to its frontend for the user to open and complete.
Before verifying users, register a Bridge API key with Privy.

Accept terms of service

To generate a terms of service link for a user, make a POST request to:
In the body of the request, include the following fields:
'bridge'
required
Provider to verify the user with.
'production' | 'sandbox'
Bridge environment to use. Defaults to production.
string
Email address for the Bridge customer. Falls back to the user’s linked email account. Required if the user has no linked email.
Below is a sample cURL command for this request:
A successful response includes the following fields:
'bridge'
Provider the user is being verified with.
'production' | 'sandbox'
Bridge environment used for the request.
string
Status of terms of service acceptance, as reported by Bridge.
URL the user opens to accept Bridge’s terms of service.
Pass the link to your app’s frontend so the user can accept the terms of service. The request is idempotent: calling it again for the same user returns a link for the existing Bridge customer.
To generate a hosted KYC link for a user, make a POST request to:
In the body of the request, include the following fields:
'bridge'
required
Provider to verify the user with.
'production' | 'sandbox'
Bridge environment to use. Defaults to production.
string
Email address for the Bridge customer. Falls back to the user’s linked email account. Required if the user has no linked email.
string[]
Endorsements to request from Bridge. Each endorsement unlocks a set of rails and regions. Defaults to ['base'].
string
URI the user is redirected to after completing the hosted flow.
string
Identifier of the terms of service agreement the user accepted in your app. Only applicable if your app has arranged terms of service reliance with Bridge.
Below is a sample cURL command for this request:
The response is the user’s full KYC status, including the link to complete verification. See Track KYC status for the complete set of fields.
Pass kyc.link to your app’s frontend so the user can complete verification. The request is idempotent: calling it again for the same user returns the existing link.

Track KYC status

Verification is asynchronous. Bridge reviews the submission after the user completes the hosted flow, and can revoke an endorsement later. See track KYC status to poll a user’s status or subscribe to webhooks.

Next steps

Track KYC status

Poll a user’s verification status or subscribe to webhooks

KYB

Verify an organization

Handling webhook events

Configure an endpoint to receive Privy webhook events