Start building with Privy. Everything you need to integrate Privy wallets into your app.
From first API call to production.
What do you want to build? NodeJS
React
Swift
Android
Python
Java
Unity
Rest API
import { PrivyClient } from '@privy-io/node' ;
const privy = new PrivyClient ({ appId , appSecret });
// Create wallet
const wallet = await privy . wallets (). create ({ chain_type: 'ethereum' });
// Send transaction
await privy
. wallets ()
. ethereum ()
. sendTransaction ( wallet . id , {
caip2: 'eip155:11155111' ,
params: { transaction: { to: 'recipient' , value: '0x1' }}
});
import { usePrivy , useSendTransaction } from '@privy-io/react-auth' ;
export default function App () {
const { ready , authenticated , login } = usePrivy ();
const { sendTransaction } = useSendTransaction ();
if ( ! ready ) return < div > Loading... </ div > ;
// Log in
if ( ! authenticated ) return < button onClick = { login } > Log in </ button > ;
// Send transaction
return < button onClick = { () => sendTransaction ({ to: 'recipient' , value: 100000 }) } > Send </ button > ;
}
try await privy. sms . sendCode ( to : "+14155552671" )
let privyUser = try await privy. sms . loginWithCode (
"123456" ,
sentTo : "+14155552671"
)
let linkedAccounts = privyUser. linkedAccounts
privy.sms. sendCode (phoneNumber = "+14155552671" )
val result = privy.sms. loginWithCode (
code = "123456" ,
phoneNumber = "+14155552671"
)
val privyUser = result. getOrNull ()
from privy import PrivyClient
client = PrivyClient( app_id = app_id, app_secret = app_secret)
# Create wallet
wallet = client.wallets.create( chain_type = "ethereum" )
# Send transaction
tx = client.wallets.rpc(
wallet_id = wallet.id,
method = "eth_sendTransaction" ,
caip2 = "eip155:11155111" ,
params = { "transaction" : { "to" : "recipient" , "value" : "0x1" }},
)
WalletCreateRequestBody request =
WalletCreateRequestBody . builder ()
. chainType ( WalletChainType . ETHEREUM )
. build ();
WalletCreateResponse response =
privyClient . wallets (). create (request);
if ( response . wallet (). isPresent ()) {
Wallet wallet = response . wallet (). get ();
}
await PrivyManager . Instance . Email
. SendCode ( "[email protected] " );
await PrivyManager . Instance . Email
. LoginWithCode ( "[email protected] " , "123456" );
IPrivyUser privyUser =
await PrivyManager . Instance . GetUser ();
curl --request POST \
--url https://api.privy.io/v1/wallets \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"chain_type": "ethereum"
}'
Platform
Configure asset controls for you or your users Start with the approach that fits your app and architecture.
Secure assets for for your business Use Privy’s REST API to create and manage wallets across chains from your backend. Define
granular policies, control ownership of onchain resources, and integrate from any secure server
environment. Backend SDKs provide a streamlined way to access the full API surface.
Provision wallets for users Use Privy’s frontend SDKs to authenticate users, manage accounts, and create wallets directly
in your app. Built-in components and hooks handle login, sessions, and embedded wallets out
of the box. Extend with backend logic or API access as needed.
Products
Explore features Browse wallets, user management, and onchain capabilities.