Skip to main content

@privy-io/privy-node

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.

https://www.privy.io

build npm version

Documentationโ€‹

See https://docs.privy.io/.

Requirementsโ€‹

Node 14 and higher is supported.

Installationโ€‹

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(
process.env.PRIVY_API_KEY,
process.env.PRIVY_API_SECRET,
);

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: "foo@example.com"},
{field: "ssn", value: "123-45-6789"},
]);

// To read...
const [email, ssn] = await client.get(userId, ["email", "ssn"]);
console.log(email.text());
console.log(ssn.text());

Testingโ€‹

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

Unitโ€‹

To run unit tests:

npm test

Integrationโ€‹

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