Skip to main content


Privy's Node client allows you to interact with the Privy API from server-side Node applications.

For interacting with user data in the browser, use @privy-io/privy-browser.

build npm version




Node 14 and higher is supported.


npm i @privy-io/privy-node

Basic usageโ€‹

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

import {PrivyClient} from '@privy-io/privy-node';

const client = new PrivyClient(

Using the Privy node client, configure your Privy datastore.

// GET fields
const fields = await client.listFields();

// CREATE new field
const field = await client.createField({name: name, description: 'A field'});

// DELETE access group
await client.deleteAccessGroup(accessGroupId);

// GET permisions for a user
const permissions = await client.getUserPermissions(userId);

Using privy-node, you can also 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. To successfully run those, you will need to create a .env file in the root of ./privy-node 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