Prerequisites

Before you begin, make sure you have set up your Privy app and obtained your app ID and app secret from the Privy Dashboard.

Getting the PrivyClient

Import the PrivyClient class and create an instance of it, passing the Privy app ID and app secret as parameters.
import io.privy.api.PrivyClient;

PrivyClient client = PrivyClient.builder()
        .appId("your-privy-app-id")
        .appSecret("your-app-secret")
        .build();
This client is now your entrypoint to manage Privy from your server. With the PrivyClient you can interact with wallets with methods for creating wallets, signing and sending transactions. You can also manage users with methods for getting a user object, verifying an auth token, and querying users.

Authorization

If a resource (i.e. wallet, policy, key quorum) has an owner, authorization signatures from the owner are required. Use the authorization context to specify authorization private keys and user JWTs of the wallet’s owners, and the Java SDK will generate signatures and sign requests under the hood.
We strongly recommend reading this guide before using the Java SDK for the best development experience.
AuthorizationContext context = AuthorizationContext.builder()
    .addUserJwts(Arrays.asList("jwt1", "jwt2"))
    .addAuthorizationPrivateKeys(Arrays.asList("privateKey1", "privateKey2"))
    .build();

Rate limits

Privy rate limits REST API endpoints that you may call from your server. If you suspect your team will require an increased rate limit, please reach out to support!
Learn more about optimizing your setup in our optimizing guide!