Wallets

wallets

Methods

Get All Wallets -> Cursor<>
get/v1/wallets

Get all wallets in your app.

Create Wallet ->
post/v1/wallets

Creates a new wallet on the requested chain and for the requested owner.

header Parameters
privy-idempotency-key: string
Optional

Idempotency keys ensure API requests are executed only once within a 24-hour window.

Response fields
Request example
200Example
Create Wallets In Batch ->
post/v1/wallets/batch

Creates multiple wallets in a single request. Each wallet creation is independent; failures for one wallet do not affect others. Maximum batch size is 100 wallets.

Get Wallet ->
get/v1/wallets/{wallet_id}

Get a wallet by wallet ID.

Get Wallet By Address ->
post/v1/wallets/address

Look up a wallet by its blockchain address. Returns the wallet object if found.

Authenticate Wallet Session ->
post/v1/wallets/authenticate

Exchange a user JWT for a session key authorized to act on the user's wallets. Returns the encrypted authorization key and the list of wallets it can access.

Create Wallets With Recovery ->
Deprecated
post/v1/wallets_with_recovery

Create one or more wallets associated with a recovery user, so the user can later regain wallet access via the linked accounts. Deprecated; prefer the standard wallet creation flow combined with a separate recovery setup.

Create A Signature Or Transaction ->
post/v1/wallets/{wallet_id}/rpc

Sign a message or transaction with a wallet by wallet ID.

Raw Sign ->
post/v1/wallets/{wallet_id}/raw_sign

Sign a message with a wallet by wallet ID.

Update Wallet ->
patch/v1/wallets/{wallet_id}

Update a wallet's policies or authorization key configuration.

Export Wallet ->
post/v1/wallets/{wallet_id}/export

Export a wallet's private key

Archive A Wallet ->
post/v1/wallets/{wallet_id}/archive

Archives a wallet, preventing it from being used in any write or signing operations. Archived wallets are hidden from list endpoints by default. Returns 404 if the wallet does not exist or is already archived.

Initialize Import -> { encryption_public_key, encryption_type }
post/v1/wallets/import/init

Initialize a wallet import. Complete by submitting the import.

Submit Import ->
post/v1/wallets/import/submit

Submit a wallet import request.

post/v1/wallets/{wallet_id}/transfer

Transfer tokens from a wallet to a destination address.

Domain types

AccessListEntry = { address, storage_keys }

An entry in an EIP-2930 access list, specifying an address and its storage keys.

AdditionalSignerInput = Array<>

Additional signers for the wallet.

AdditionalSignerItemInput = { signer_id, override_policy_ids }

A single additional signer for a wallet, with an optional policy override.

Address = string

A blockchain wallet address. Ethereum addresses are normalized to EIP-55 checksum format. Solana addresses are validated as base58. All other chain addresses (Stellar, Tron, Sui, Aptos, etc.) are accepted as-is.

AdvancedSwapPlatformFee = { token, amount, bps }

Platform fee collected on a swap.

AdvancedSwapRequestBody = { amount, input_token, output_token, 5 more... }

Request body for initiating a synchronous Solana token swap through an embedded wallet.

AdvancedSwapResponse = { in_amount, input_token, min_out_amount, 8 more... }

Response from the synchronous Solana swap endpoint.

AmountType = "exact_input" | "exact_output"

Whether the amount refers to the input token or output token.

AuthorizationKeyDashboardResponse = { id, created_at, display_name, 2 more... }

Dashboard response for a wallet authorization key (includes role, which is an internal-only concept).

AuthorizationKeyResponse = { id, created_at, display_name, 1 more... }

Public-facing response for a wallet authorization key.

AuthorizationKeyRole = "root" | "manager" | "delegated-actions"

The role of an authorization key, controlling what actions it can authorize on a wallet.

CurveSigningChainType = "cosmos" | "stellar" | "sui" | 9 more...

The wallet chain types that support curve-based signing.

CurveType = "secp256k1" | "ed25519" | "starknet"

The cryptographic curve type used by the wallet.

CustodialWallet = { id, address, chain_type, 4 more... }

Information about a custodial wallet.

CustodialWalletChainType = "ethereum" | "solana"

The chain type of the custodial wallet.

CustodialWalletCreateInput = { chain_type, provider, provider_user_id, 3 more... }

The input for creating a custodial wallet.

CustodialWalletProvider = "bridge"

The provider of the custodial wallet.

CustomTokenTransferSource = { asset_address, chain, amount }

Source for a transfer identified by a token contract address (EVM) or mint address (Solana). Use this variant for tokens that are not first-class assets.

DeveloperFee = { amount, type, recipient }

Estimated fee paid to the developer.

EncryptedAuthorizationKey = { ciphertext, encapsulated_key, encryption_type }

HPKE-encrypted authorization key with encapsulated key and ciphertext.

EncryptedBoundAuthenticateResponse = { bindings, encrypted_authorization_key, expires_at, 1 more... }

Encrypted response from bound wallet authentication, with bindings.

EncryptedWalletAuthenticateResponse = { encrypted_authorization_key, expires_at, wallets }

The response from authenticating a wallet with HPKE encryption, containing an encrypted authorization key and wallet data.

EthereumPersonalSignRpcInput = { method, params, address, 4 more... }

Executes the EVM personal_sign RPC (EIP-191) to sign a message.

EthereumPersonalSignRpcInputParams = { encoding, message }

Parameters for the EVM personal_sign RPC.

EthereumPersonalSignRpcResponse = { data, method }

Response to the EVM personal_sign RPC.

EthereumPersonalSignRpcResponseData = { encoding, signature }

Data returned by the EVM personal_sign RPC.

Request body for Ethereum wallet RPC operations, discriminated by method.

Response body for Ethereum wallet RPC operations, discriminated by method.

EthereumSecp256k1SignRpcInput = { method, params, address, 2 more... }

Signs a raw hash on the secp256k1 curve.

EthereumSecp256k1SignRpcInputParams = { hash }

Parameters for the EVM secp256k1_sign RPC.

EthereumSecp256k1SignRpcResponse = { data, method }

Response to the EVM secp256k1_sign RPC.

EthereumSecp256k1SignRpcResponseData = { encoding, signature }

Data returned by the EVM secp256k1_sign RPC.

EthereumSendCallsCall = { to, data, value }

A single call within a batched wallet_sendCalls request.

EthereumSendCallsRpcInput = { caip2, method, params, 5 more... }

Executes the wallet_sendCalls RPC (EIP-5792) to batch multiple calls into a single atomic transaction.

EthereumSendCallsRpcInputParams = { calls }

Parameters for the wallet_sendCalls RPC.

EthereumSendCallsRpcResponse = { data, method }

Response to the wallet_sendCalls RPC.

EthereumSendCallsRpcResponseData = { caip2, transaction_id }

Data returned by the wallet_sendCalls RPC.

EthereumSendTransactionRpcInput = { caip2, method, params, 6 more... }

Executes the EVM eth_sendTransaction RPC to sign and broadcast a transaction.

EthereumSendTransactionRpcInputParams = { transaction }

Parameters for the EVM eth_sendTransaction RPC.

EthereumSendTransactionRpcResponse = { data, method }

Response to the EVM eth_sendTransaction RPC.

EthereumSendTransactionRpcResponseData = { caip2, hash, reference_id, 3 more... }

Data returned by the EVM eth_sendTransaction RPC.

EthereumSign7702Authorization = { chain_id, contract, nonce, 3 more... }

A signed EIP-7702 authorization that delegates code execution to a contract address.

EthereumSign7702AuthorizationRpcInput = { method, params, address, 2 more... }

Signs an EIP-7702 authorization.

EthereumSign7702AuthorizationRpcInputParams = { chain_id, contract, executor, 1 more... }

Parameters for the EVM eth_sign7702Authorization RPC.

EthereumSign7702AuthorizationRpcResponse = { data, method }

Response to the EVM eth_sign7702Authorization RPC.

EthereumSign7702AuthorizationRpcResponseData = { authorization }

Data returned by the EVM eth_sign7702Authorization RPC.

EthereumSignTransactionRpcInput = { method, params, address, 2 more... }

Executes the EVM eth_signTransaction RPC to sign a transaction.

EthereumSignTransactionRpcInputParams = { transaction }

Parameters for the EVM eth_signTransaction RPC.

EthereumSignTransactionRpcResponse = { data, method }

Response to the EVM eth_signTransaction RPC.

EthereumSignTransactionRpcResponseData = { encoding, signed_transaction }

Data returned by the EVM eth_signTransaction RPC.

EthereumSignTypedDataRpcInput = { method, params, address, 4 more... }

Executes the EVM eth_signTypedData_v4 RPC (EIP-712) to sign a typed data object.

EthereumSignTypedDataRpcInputParams = { typed_data }

Parameters for the EVM eth_signTypedData_v4 RPC.

EthereumSignTypedDataRpcResponse = { data, method }

Response to the EVM eth_signTypedData_v4 RPC.

EthereumSignTypedDataRpcResponseData = { encoding, signature }

Data returned by the EVM eth_signTypedData_v4 RPC.

EthereumSignUserOperationRpcInput = { method, params, address, 2 more... }

Executes an RPC method to hash and sign a UserOperation.

EthereumSignUserOperationRpcInputParams = { chain_id, contract, user_operation }

Parameters for the EVM eth_signUserOperation RPC.

EthereumSignUserOperationRpcResponse = { data, method }

Response to the EVM eth_signUserOperation RPC.

EthereumSignUserOperationRpcResponseData = { encoding, signature }

Data returned by the EVM eth_signUserOperation RPC.

EthereumTypedDataInput = { domain, message, primary_type, 1 more... }

EIP-712 typed data object.

ExportPrivateKeyRpcInput = { address, method, params }

Exports the private key of the wallet.

ExportPrivateKeyRpcResponse = { data, method }

Response to the exportPrivateKey RPC.

ExportSeedPhraseRpcInput = { address, method, params }

Exports the seed phrase of the wallet.

ExportSeedPhraseRpcResponse = { data, method }

Response to the exportSeedPhrase RPC.

ExportType = "display" | "client"

The export type. 'display' is for showing the key to the user in the UI, 'client' is for exporting to the client application.

ExtendedChainType = "cosmos" | "stellar" | "sui" | 10 more...

The wallet chain types that are not first class chains.

FeeConfiguration = { type, value }

Total fees assessed on a transfer, in BPS

FeeLineItem = | |

An individual fee assessed on a transfer.

FirstClassChainType = "ethereum" | "solana"

The wallet chain types that offer first class support.

Gas = { amount, base_amount, gas_asset }

Gas cost for a blockchain action. Includes both raw base-unit amount and a human-readable decimal string, plus the gas token symbol.

GetByWalletAddressRequestBody = { address, include_archived }

Request body for looking up a wallet by its blockchain address.

HDInitInput = { address, chain_type, encryption_type, 2 more... }

The input for HD wallets.

HDPath = string

A BIP-32 hierarchical deterministic wallet derivation path.

HDSubmitInput = { address, chain_type, ciphertext, 5 more... }

The submission input for importing an HD wallet.

Hex = string

A hex-encoded string prefixed with '0x', capped at 100002 characters (50,000 bytes).

HpkeAeadAlgorithm = "CHACHA20_POLY1305" | "AES_GCM256"

The AEAD algorithm used for HPKE encryption.

HpkeEncryption = "HPKE"

The encryption type of the wallet to import. Currently only supports HPKE.

HpkeImportConfig = { aad, aead_algorithm, info }

Optional HPKE configuration for wallet import decryption. These parameters allow importing wallets encrypted by external providers that use different HPKE configurations.

IntentBinding = { intentId, type }

A binding that scopes a user signing key to a specific intent.

NamedTokenTransferSource = { asset, chain, amount }

Source for a transfer identified by a named asset (e.g. "usdc", "eth"). Use this variant for first-class assets maintained by Privy.

OutputWithPreviousTransactionData = { previous_transaction_hash, previous_transaction_vout, output }

A Spark token output with its previous transaction data.

PolicyInput = Array<string>

An optional list of up to one policy ID to enforce on the wallet.

PrivateKeyExportInput = { encryption_type, recipient_public_key, export_seed_phrase, 1 more... }

Input for exporting a wallet (private key or seed phrase) with HPKE encryption.

PrivateKeyExportResponse = { ciphertext, encapsulated_key, encryption_type }

Response containing HPKE-encrypted wallet data (private key or seed phrase).

PrivateKeyInitInput = { address, chain_type, encryption_type, 1 more... }

The input for private key wallets.

PrivateKeySubmitInput = { address, chain_type, ciphertext, 4 more... }

The submission input for importing a private key wallet.

PrivyFee = { amount, type, recipient }

Estimated fee paid to Privy.

Quantity = | number

A quantity value that can be either a hex string starting with '0x' or a non-negative integer.

RawBoundAuthenticateResponse = { authorization_key, bindings, expires_at, 1 more... }

Unencrypted response from bound wallet authentication, with bindings.

RawSignBytesEncoding = "utf-8" | "hex" | "base64"

Encoding scheme for bytes in the raw_sign RPC.

RawSignBytesHashFunction = "keccak256" | "sha256" | "blake2b256"

Hash function for bytes in the raw_sign RPC.

RawSignBytesParams = { bytes, encoding, hash_function }

Parameters for hashing and signing bytes with the raw_sign RPC.

RawSignHashParams = { hash }

Parameters for signing a pre-computed hash with the raw_sign RPC.

RawSignInput = { params }

Provide either hash (to sign a pre-computed hash) OR bytes, encoding, and hash_function (to hash and then sign). These options are mutually exclusive.

RawSignInputParams = |

Parameters for the raw_sign RPC.

RawSignResponse = { data, method }

Response to the raw_sign RPC.

RawSignResponseData = { encoding, signature }

Data returned by the raw_sign RPC.

RawWalletAuthenticateResponse = { authorization_key, expires_at, wallets }

The response from authenticating a wallet without encryption, containing a raw authorization key and wallet data.

RecipientPublicKey = string

The recipient public key for HPKE encryption, in PEM or DER (base64-encoded) format.

RelayerFee = { amount, type, recipient }

Estimated fee paid to the relayer.

SeedPhraseExportInput = { encryption_type, recipient_public_key, export_seed_phrase, 1 more... }

Input for exporting a wallet (private key or seed phrase) with HPKE encryption.

SeedPhraseExportResponse = { ciphertext, encapsulated_key, encryption_type }

Response containing HPKE-encrypted wallet data (private key or seed phrase).

SignatureOptions = { type }

Options controlling signature production for personal_sign and eth_signTypedData_v4.

SignatureType = "ecdsa" | "erc1271"

The type of cryptographic signature to produce. Use "ecdsa" for standard ECDSA signatures, or "erc1271" for ERC-1271 compliant signatures for smart account wallets.

SigningAlgorithm = "ECDSA" | "EdDSA" | "Schnorr"

The signing algorithm used by the wallet.

Request body for Solana wallet RPC operations, discriminated by method.

Response body for Solana wallet RPC operations, discriminated by method.

SolanaSignAndSendTransactionRpcInput = { caip2, method, params, 6 more... }

Executes the SVM signAndSendTransaction RPC to sign and broadcast a transaction.

SolanaSignAndSendTransactionRpcInputParams = { encoding, transaction }

Parameters for the SVM signAndSendTransaction RPC.

SolanaSignAndSendTransactionRpcResponse = { data, method }

Response to the SVM signAndSendTransaction RPC.

SolanaSignAndSendTransactionRpcResponseData = { caip2, hash, reference_id, 2 more... }

Data returned by the SVM signAndSendTransaction RPC.

SolanaSignMessageRpcInput = { method, params, address, 2 more... }

Executes the SVM signMessage RPC to sign a message.

SolanaSignMessageRpcInputParams = { encoding, message }

Parameters for the SVM signMessage RPC.

SolanaSignMessageRpcResponse = { data, method }

Response to the SVM signMessage RPC.

SolanaSignMessageRpcResponseData = { encoding, signature }

Data returned by the SVM signMessage RPC.

SolanaSignTransactionRpcInput = { method, params, address, 2 more... }

Executes the SVM signTransaction RPC to sign a transaction.

SolanaSignTransactionRpcInputParams = { encoding, transaction }

Parameters for the SVM signTransaction RPC.

SolanaSignTransactionRpcResponse = { data, method }

Response to the SVM signTransaction RPC.

SolanaSignTransactionRpcResponseData = { encoding, signed_transaction }

Data returned by the SVM signTransaction RPC.

SolanaWalletDerivationStrategy = "ENTROPY_TO_SEED" | "ENTROPY_TO_MNEMONIC_TO_SEED"

The derivation strategy used for Solana wallets.

SparkBalance = { balance, token_balances }

The balance of a Spark wallet.

SparkClaimStaticDepositRpcInput = { method, params, network }

Claims a static deposit into the Spark wallet.

SparkClaimStaticDepositRpcInputParams = { credit_amount_sats, signature, transaction_id, 1 more... }

Parameters for the Spark claimStaticDeposit RPC.

SparkClaimStaticDepositRpcResponse = { method, data }

Response to the Spark claimStaticDeposit RPC.

SparkClaimStaticDepositRpcResponseData = { transfer_id }

Data returned by the Spark claimStaticDeposit RPC.

SparkCoopExitFeeQuote = { id, created_at, expires_at, 9 more... }

A fee quote for a cooperative exit from Spark to Bitcoin L1.

SparkCoopExitRequest = { id, coop_exit_txid, created_at, 8 more... }

A cooperative exit request from Spark to Bitcoin L1.

SparkCreateLightningInvoiceRpcInput = { method, params, network }

Creates a Lightning invoice for the Spark wallet.

SparkCreateLightningInvoiceRpcInputParams = { amount_sats, description_hash, expiry_seconds, 3 more... }

Parameters for the Spark createLightningInvoice RPC.

SparkCreateLightningInvoiceRpcResponse = { method, data }

Response to the Spark createLightningInvoice RPC.

SparkCurrencyAmount = { original_unit, original_value }

A currency amount with its original value and unit.

SparkExitSpeed = "FAST" | "MEDIUM" | "SLOW"

The exit speed for a cooperative withdrawal from Spark to L1.

SparkGetBalanceRpcInput = { method, network }

Gets the balance of the Spark wallet.

SparkGetBalanceRpcResponse = { method, data }

Response to the Spark getBalance RPC.

SparkGetClaimStaticDepositQuoteRpcInput = { method, params, network }

Gets a quote for claiming a static deposit.

SparkGetClaimStaticDepositQuoteRpcInputParams = { transaction_id, output_index }

Parameters for the Spark getClaimStaticDepositQuote RPC.

SparkGetClaimStaticDepositQuoteRpcResponse = { method, data }

Response to the Spark getClaimStaticDepositQuote RPC.

SparkGetClaimStaticDepositQuoteRpcResponseData = { credit_amount_sats, network, output_index, 2 more... }

Data returned by the Spark getClaimStaticDepositQuote RPC.

SparkGetStaticDepositAddressRpcInput = { method, network }

Gets a static deposit address for the Spark wallet.

SparkGetStaticDepositAddressRpcResponse = { method, data }

Response to the Spark getStaticDepositAddress RPC.

SparkGetStaticDepositAddressRpcResponseData = { address }

Data returned by the Spark getStaticDepositAddress RPC.

SparkGetWithdrawalFeeQuoteRpcInput = { method, params, network }

Gets a fee quote for withdrawing from Spark to a Bitcoin L1 address.

SparkGetWithdrawalFeeQuoteRpcInputParams = { amount_sats, onchain_address }

Parameters for the Spark getWithdrawalFeeQuote RPC.

SparkGetWithdrawalFeeQuoteRpcResponse = { method, data }

Response to the Spark getWithdrawalFeeQuote RPC.

SparkLightningFee = { original_unit, original_value }

The fee for a Spark Lightning payment.

SparkLightningReceiveRequest = { id, created_at, network, 7 more... }

A Spark Lightning receive request.

SparkLightningSendRequest = { id, created_at, encoded_invoice, 8 more... }

A Spark Lightning send request.

SparkNetwork = "MAINNET" | "REGTEST"

The Spark network.

SparkOutputSelectionStrategy = "SMALL_FIRST" | "LARGE_FIRST"

Strategy for selecting outputs in a Spark token transfer.

SparkPayLightningInvoiceRpcInput = { method, params, network }

Pays a Lightning invoice from the Spark wallet.

SparkPayLightningInvoiceRpcInputParams = { invoice, max_fee_sats, amount_sats_to_send, 1 more... }

Parameters for the Spark payLightningInvoice RPC.

SparkPayLightningInvoiceRpcResponse = { method, data }

Response to the Spark payLightningInvoice RPC.

Request body for Spark wallet RPC operations, discriminated by method.

Response body for Spark wallet RPC operations, discriminated by method.

SparkSignMessageWithIdentityKeyRpcInput = { method, params, network }

Signs a message with the Spark identity key.

SparkSignMessageWithIdentityKeyRpcInputParams = { message, compact }

Parameters for the Spark signMessageWithIdentityKey RPC.

SparkSignMessageWithIdentityKeyRpcResponse = { method, data }

Response to the Spark signMessageWithIdentityKey RPC.

SparkSignMessageWithIdentityKeyRpcResponseData = { signature }

Data returned by the Spark signMessageWithIdentityKey RPC.

SparkSigningKeyshare = { owner_identifiers, public_key, public_shares, 2 more... }

A Spark signing keyshare.

SparkTokenBalance = { balance, token_metadata }

Balance of a Spark token.

SparkTransfer = { id, leaves, receiver_identity_public_key, 8 more... }

A Spark transfer.

SparkTransferLeaf = { intermediate_refund_tx, secret_cipher, signature, 1 more... }

A Spark transfer leaf.

SparkTransferRpcInput = { method, params, network }

Transfers satoshis to a Spark address.

SparkTransferRpcInputParams = { amount_sats, receiver_spark_address }

Parameters for the Spark transfer RPC.

SparkTransferRpcResponse = { method, data }

Response to the Spark transfer RPC.

SparkTransferTokensRpcInput = { method, params, network }

Transfers tokens to a Spark address.

SparkTransferTokensRpcInputParams = { receiver_spark_address, token_amount, token_identifier, 2 more... }

Parameters for the Spark transferTokens RPC.

SparkTransferTokensRpcResponse = { method, data }

Response to the Spark transferTokens RPC.

SparkTransferTokensRpcResponseData = { id }

Data returned by the Spark transferTokens RPC.

SparkUserTokenMetadata = { decimals, max_supply, raw_token_identifier, 3 more... }

Metadata for a Spark user token.

SparkWalletLeaf = { id, network, node_tx, 9 more... }

A Spark wallet leaf node.

SparkWithdrawRpcInput = { method, params, network }

Withdraws from Spark to a Bitcoin L1 address (cooperative exit).

SparkWithdrawRpcInputParams = { exit_speed, onchain_address, amount_sats, 3 more... }

Parameters for the Spark withdraw RPC.

SparkWithdrawRpcResponse = { method, data }

Response to the Spark withdraw RPC.

SuiCommandName = "TransferObjects" | "SplitCoins" | "MergeCoins"

SUI transaction commands allowlist for raw_sign endpoint policy evaluation

SwapSubmissionStatus = "accepted" | "rejected" | "skipped"

"accepted" if the network has acknowledged the transaction, "rejected" if the network refused it, "skipped" if dry_run was set. Not an onchain confirmation.

TempoAaAuthorization = { chain_id, contract, nonce, 1 more... }

An AA authorization for Tempo transactions with P256/WebAuthn signatures.

TempoCall = { to, data, value }

A single call within a Tempo batched transaction.

TempoFeePayerSignature = { r, s, y_parity }

A fee payer signature for sponsored Tempo transactions (secp256k1 only).

TokenOutput = { owner_public_key, token_amount, id, 5 more... }

A Spark token output.

TokenTransferDestination = { address, asset, chain }

The destination address for a token transfer. Optionally specify a different asset or chain for cross-asset or cross-chain transfers.

The source asset, amount, and chain for a token transfer. Specify either asset (named) or asset_address (custom), not both.

TotalFeeConfigurationBps = { type, value }

Total fees assessed on a transfer, in BPS

TransactionChainNameInput = "ethereum" | "arbitrum" | "avalanche" | 9 more...

Chains supported for transaction history queries.

Details of a wallet transaction, varying by transaction type.

TransactionTokenAddressInput = string

Token contract address (EVM: 0x-prefixed hex) or mint address (Solana: base58), used to filter wallet transactions.

TransferQuoteRequestBody = { destination, source, amount, 3 more... }

Request body for requesting a quote for a cross-asset or cross-chain (DADC) transfer.

TransferQuoteResponse = { destination, estimated_fees, estimated_input_amount, 5 more... }

Response containing a quote for a cross-asset or cross-chain (DADC) transfer.

TransferReceivedTransactionDetail = { asset, chain, display_values, 7 more... }

Details for a received transfer transaction.

TransferRequestBody = { destination, source, amount, 3 more... }

Request body for initiating a sponsored token transfer from an embedded wallet.

TransferSentTransactionDetail = { asset, chain, display_values, 7 more... }

Details for a sent transfer transaction.

A Tron contract, discriminated by type. Supported types: TransferContract, TriggerSmartContract.

TronRawDataForSend = { contract, data, expiration, 4 more... }

Tron raw_data for tron_sendTransaction. Block reference fields are optional; Privy fetches fresh values if omitted.

TronRawDataForSign = { contract, expiration, ref_block_bytes, 4 more... }

Tron raw_data for tron_signTransaction. Block reference fields are required; caller is responsible for fetching them.

Request body for Tron wallet RPC operations, discriminated by method.

Response body for Tron wallet RPC operations, discriminated by method.

TronSendTransactionRpcInput = { method, params, caip2 }

Executes the Tron tron_sendTransaction RPC to sign and broadcast a transaction.

TronSendTransactionRpcInputParams = { raw_data, reference_id }

Parameters for the Tron tron_sendTransaction RPC.

TronSendTransactionRpcResponse = { data, method }

Response to the Tron tron_sendTransaction RPC.

TronSendTransactionRpcResponseData = { caip2, hash, transaction_id, 1 more... }

Data returned by the Tron tron_sendTransaction RPC.

TronSignTransactionRpcInput = { method, params }

Executes the Tron tron_signTransaction RPC to sign a transaction. The caller is responsible for broadcasting.

TronSignTransactionRpcInputParams = { raw_data }

Parameters for the Tron tron_signTransaction RPC.

TronSignTransactionRpcResponse = { data, method }

Response to the Tron tron_signTransaction RPC.

TronSignTransactionRpcResponseData = { encoding, signed_transaction }

Data returned by the Tron tron_signTransaction RPC.

TronTransferContract = { amount, owner_address, to_address, 1 more... }

Tron native TRX transfer contract.

TronTriggerSmartContract = { contract_address, owner_address, type, 4 more... }

Tron smart contract call (TRC-20 transfers and general contract interactions).

TypedDataDomainInputParams = Record<string, unknown>

The domain parameters for EIP-712 typed data signing.

TypedDataTypeFieldInput = { name, type }

A single field definition in an EIP-712 typed data type.

TypedDataTypesInputParams = Record<string, Array<>>

The type definitions for EIP-712 typed data signing.

An unsigned Ethereum transaction object. Supports standard EVM transaction types (0, 1, 2, 4) and Tempo transactions (type 118).

UnsignedStandardEthereumTransaction = { authorization_list, chain_id, data, 9 more... }

An unsigned standard Ethereum transaction object. Supports EVM transaction types 0, 1, 2, and 4.

UnsignedTempoTransaction = { calls, type, aa_authorization_list, 12 more... }

An unsigned Tempo transaction (type 118) with batched calls.

UserOperationInput = { call_data, call_gas_limit, max_fee_per_gas, 11 more... }

An ERC-4337 user operation.

UserSigningKeyBinding = { intentId, type }

A binding that scopes a user signing key to a specific intent.

Wallet = { id, additional_signers, address, 12 more... }

A wallet managed by Privy's wallet infrastructure.

WalletInitImportResponse = { encryption_public_key, encryption_type }
WalletAdditionalSigner = Array<>

Additional signers for the wallet.

WalletAdditionalSignerItem = { signer_id, override_policy_ids }

A single additional signer on a wallet, with an optional policy override.

WalletAPIRegisterAuthorizationKeyInput = { public_key, display_name, role }

Input for registering or updating an application public signing key for API-based wallet actions.

WalletAPIRevokeAuthorizationKeyInput = { id }

Input for revoking an application authorization key.

WalletAsset = "usdc" | "usdc.e" | "eth" | 9 more...

A named asset supported across all chains.

WalletAssetChainNameInput = "ethereum" | "arbitrum" | "avalanche" | 19 more...

Supported blockchain network names for wallet balance and transaction queries.

WalletAuthenticateBoundEncryptedRequestBody = { bindings, encryption_type, recipient_public_key, 1 more... }

Request body for creating an encrypted, bound user signing key.

Request body for creating a user signing key scoped to specific bindings. The returned USK can only authorize the bound values and cannot sign other RPC requests.

WalletAuthenticateBoundUnencryptedRequestBody = { bindings, user_jwt }

Request body for creating an unencrypted, bound user signing key.

The response from authenticating a wallet with intent bindings, containing an authorization key, wallet data, and the bindings the key is scoped to.

WalletAuthenticateRequestBody = { encryption_type, recipient_public_key, user_jwt }

Request body for wallet authentication with HPKE-encrypted response.

The response from authenticating a wallet, containing an authorization key and wallet data.

WalletAuthorizationHeaders = { privy-app-id, privy-authorization-signature, privy-request-expiry }

Headers required to authorize wallet operations.

WalletBatchCreateInput = { wallets }

Request body for batch wallet creation.

WalletBatchCreateResponse = { results }

Response for a batch wallet creation request.

WalletBatchCreateResult = { index, success, wallet } | { code, error, index, 1 more... }

A single result from a batch wallet creation operation.

WalletBatchItemInput = { chain_type, additional_signers, display_name, 4 more... }

Input for a single wallet in a batch creation request.

WalletChainType = "ethereum" | "solana" | "cosmos" | 12 more...

The wallet chain types.

WalletCreateWalletsWithRecoveryResponse = { recovery_user_id, wallets }

The response from creating wallets with an associated recovery user.

WalletCustodian = { provider, provider_user_id }

Information about the custodian managing this wallet.

WalletEntropyType = "hd" | "private-key"

The entropy type of the wallet.

WalletEthereumAsset = "usdc" | "usdc.e" | "eth" | 7 more...

A named asset on Ethereum-compatible chains.

WalletExportRequestBody = { encryption_type, recipient_public_key, export_seed_phrase }

Request body for exporting a wallet private key.

WalletExportResponseBody = { ciphertext, encapsulated_key, encryption_type }

Response body containing the encrypted wallet private key.

WalletImportInitResponse = { encryption_public_key, encryption_type, import_id }

Response from initializing a wallet import, containing the encryption public key.

WalletImportSupportedChains = "ethereum" | "solana" | "stellar" | 3 more...

The chain type of the wallet to import. Supports ethereum, solana, stellar, tron, sui, and aptos.

WalletImportSupportedEntropyTypes = "private-key" | "hd"

The entropy type of the wallet to import. Supports private-key for raw private keys and hd for HD wallet seed phrases.

WalletRevokeResponse = { message }

The response body from revoking a wallet delegation.

Request body for wallet RPC operations, discriminated by method.

Response body for wallet RPC operations, discriminated by method.

WalletSolanaAsset = "sol" | "usdc" | "eurc" | 1 more...

A named asset on Solana.

WalletTronAsset = "trx" | "usdt" | "usdc"

A named asset on Tron.

WalletUpdateRequestBody = { additional_signers, display_name, owner, 2 more... }

Request body for updating a wallet. owner and owner_id are mutually exclusive.

Wallets

Actions

wallets.actions

Methods

Get Wallet Action ->
get/v1/wallets/{wallet_id}/actions/{action_id}

Get the current status of a wallet action by its ID. Use ?include=steps to include step-level details.

Domain types

AaveVaultDetails = { id, admin_wallet_address, admin_wallet_id, 10 more... }

Vault details for an Aave earn vault, including fee visibility.

CustodianTransactionWalletActionStep = { custodian, status, type, 1 more... }

A wallet action step representing a transaction executed by a custodian (e.g. Bridge).

CustodianTransactionWalletActionStepStatus = "preparing" | "queued" | "custodian_reviewing" | 4 more...

Status of a custodian transaction step in a wallet action.

EarnAsset = { address, decimals, symbol }

Asset metadata for an earn vault position.

EarnDepositActionResponse = { id, asset_address, caip2, 13 more... }

Response for an earn deposit action.

EarnDepositRequestBody = { vault_id, amount, raw_amount }

Input for depositing assets into an ERC-4626 vault. Exactly one of amount or raw_amount must be provided.

EarnFeeCollectActionResponse = { id, asset_address, caip2, 12 more... }

Response for an earn fee collect action.

EarnFeeCollectRequestBody = { vault_id }

Input for collecting accumulated fees from an Aave vault.

EarnIncentiveClaimActionResponse = { id, chain, created_at, 6 more... }

Response for an earn incentive claim action.

EarnIncentiveClaimRequestBody = { chain }

Input for claiming incentive rewards.

EarnIncentiveRewardEntry = { amount_claimed, amount_unclaimed, token_address, 2 more... }

A reward token with claimed and unclaimed amounts.

EarnIncentiveRewardsQuery = { chain }

Query parameters for fetching incentive rewards.

EarnIncentiveRewardsResponse = { rewards }

All incentive rewards for a wallet, with claimed and unclaimed amounts per token.

EarnIncetiveClaimRewardEntry = { amount, token_address, token_symbol, 1 more... }

A specific reward token and amount associated with an earn incentive claim.

EarnWithdrawActionResponse = { id, asset_address, caip2, 13 more... }

Response for an earn withdraw action.

EarnWithdrawRequestBody = { vault_id, amount, raw_amount }

Input for withdrawing assets from an ERC-4626 vault. Exactly one of amount or raw_amount must be provided.

EthereumEarnPositionQuery = { vault_id, include_archived }

Query parameters for fetching an earn vault position.

EthereumEarnPositionResponse = { asset, assets_in_vault, shares_in_vault, 2 more... }

A wallet's position in an earn vault.

EthereumEarnProvider = "morpho" | "aave" | "veda"

Supported earn provider protocols.

EthereumEarnVaultDetailsResponse = | |

Detailed vault information including current APY, liquidity, and asset metadata. Discriminated on provider.

EvmTransactionWalletActionStep = { caip2, status, transaction_hash, 3 more... }

A wallet action step consisting of an EVM transaction.

EvmUserOperationEntrypointVersion = "0.6" | "0.7" | "0.8" | 1 more...

The ERC-4337 entrypoint contract version used by the user operation.

EvmUserOperationWalletActionStep = { bundle_transaction_hash, caip2, entrypoint_version, 6 more... }

A wallet action step consisting of an EVM user operation.

EvmWalletActionStepStatus = "preparing" | "queued" | "pending" | 6 more...

Status of an EVM step in a wallet action.

ExternalTransactionWalletActionStep = { status, type, failure_reason }

A wallet action step representing a cross-chain/cross-asset fill by an external provider.

ExternalTransactionWalletActionStepStatus = "preparing" | "queued" | "pending" | 3 more...

Status of an external transaction step in a wallet action.

FailureReason = { message, details }

A description of why a wallet action (or a step within a wallet action) failed.

ListWalletActionsQuery = { cursor, limit, type }

Query parameters for listing wallet actions.

ListWalletActionsResponse = { data, next_cursor }

Paginated list of wallet actions.

MorphoVaultDetails = { id, admin_wallet_address, admin_wallet_id, 10 more... }

Vault details for a Morpho earn vault.

SvmTransactionWalletActionStep = { caip2, status, transaction_signature, 4 more... }

A wallet action step consisting of an SVM (Solana) transaction.

SvmWalletActionStepStatus = "preparing" | "queued" | "pending" | 4 more...

Status of an SVM step in a wallet action.

SwapActionResponse = { id, caip2, created_at, 15 more... }

Response for a swap action.

TransferActionResponse = { id, created_at, destination_address, 18 more... }

Response for a transfer action.

TvmTransactionWalletActionStep = { caip2, status, transaction_id, 2 more... }

A wallet action step consisting of a TVM (Tron) transaction.

TvmWalletActionStepStatus = "preparing" | "queued" | "pending" | 4 more...

Status of a TVM (Tron) step in a wallet action.

VedaVaultDetails = { id, admin_wallet_address, admin_wallet_id, 9 more... }

Vault details for a Veda (BoringVault) earn vault.

WalletActionInclude = "steps"

Expandable relations to include on a wallet action response.

Response for a wallet action, discriminated on type.

WalletActionStatus = "pending" | "succeeded" | "rejected" | 1 more...

Status of a wallet action.

A step within a wallet action, representing a single onchain action.

WalletActionStepType = "evm_transaction" | "evm_user_operation" | "svm_transaction" | 3 more...

Type of a wallet action step.

WalletActionType = "swap" | "transfer" | "earn_deposit" | 3 more...

Type of wallet action

Wallets

Balance

wallets.balance

Methods

Get Balance -> { balances }
get/v1/wallets/{wallet_id}/balance

Get the balance of a wallet by wallet ID.

Domain types

BalanceGetResponse = { balances }

wallets.earn

WalletsEarn

Ethereum

wallets.earn.ethereum

Methods

post/v1/wallets/{wallet_id}/earn/ethereum/deposit

Deposit assets into an ERC-4626 vault.

post/v1/wallets/{wallet_id}/earn/ethereum/withdraw

Withdraw assets from an ERC-4626 vault.

wallets.earn.ethereum.incentive

Methods

Earn Incentive Claim ->
post/v1/wallets/{wallet_id}/earn/ethereum/incentive/claim

Claim incentive rewards for a wallet.

wallets.swap

Methods

Get Swap Quote ->
post/v1/wallets/{wallet_id}/swap/quote

Get a price quote for swapping tokens within a wallet.

Swap Tokens ->
post/v1/wallets/{wallet_id}/swap

Execute a token swap within a wallet.

Wallets

Transactions

wallets.transactions

Methods

Get Transactions -> { next_cursor, transactions }
get/v1/wallets/{wallet_id}/transactions

Get incoming and outgoing transactions of a wallet by wallet ID.

Domain types

TransactionGetResponse = { next_cursor, transactions }