Skip to main content


Privy's browser client allows you to interact with the Privy API from broswer clients.

For interacting with user data from a node backend, use @privy-io/privy-node.

build npm version




npm i @privy-io/privy-browser

Basic usage

Initialize the Privy client using a session that can fetch tokens from Privy through your backend.

import axios from 'axios';
import {PrivyClient, CustomSession} from '@privy-io/privy-browser';

const session = new CustomSession(async function authenticate() {
const response = await<{token: string}>(`/your/custom/endpoint`);

const client = new PrivyClient({
session: session,

Using the Privy client, read and write some data for a given user.

const userId = '0x123';

// To write...
const [email, ssn] = await client.put(userId, [
{field: 'email', value: ''},
{field: 'ssn', value: '123-45-6789'},

// To read...
const [email, ssn] = await client.get(userId, ['email', 'ssn']);


The test runner looks for files with a .test.ts extension. There are two groups of tests: unit and integration.


To run unit tests:

npm test


Some of the tests are currently expected to be run against a running instance of the API.

Reset data in the API instance before running tests, e.g. by recreating and seeding the test database.

To successfully run tests, you will need to create a .env file in the root of ./privy-browser with the following fields:

PRIVY_API_URL=<privy api url>
PRIVY_KMS_URL=<privy kms url>
PRIVY_API_KEY=<your public key>
PRIVY_API_SECRET=<your private key>

To run integration tests:

npm run test-integration