curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "eth_sendTransaction",
"caip2": "eip155:11155111",
"chain_type": "ethereum",
"params": {
"transaction": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000"
}
}
}'
curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "eth_sendTransaction",
"caip2": "eip155:11155111",
"chain_type": "ethereum",
"sponsor": true,
"params": {
"transaction": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000"
}
}
}'
{
"method": "eth_sendTransaction",
"data": {
"hash": "0xfc3a736ab2e34e13be2b0b11b39dbc0232a2e755a11aa5a9219890d3b2c6c7d8",
"caip2": "eip155:11155111",
"transaction_id": "y90vpg3bnkjxhw541c2zc6a9",
"transaction_request": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000",
"chain_id": 11155111,
"type": 2,
"nonce": 5,
"max_fee_per_gas": "0xF4834",
"max_priority_fee_per_gas": "0xF4240",
"gas_limit": "0xC350"
}
}
}
{
"method": "eth_sendTransaction",
"data": {
"hash": "",
"user_operation_hash": "0x8f3a4e7d2c1b9a5e6f4d3c2b1a9e8f7d6c5b4a3e2d1c0b9a8f7e6d5c4b3a2e1d",
"caip2": "eip155:11155111",
"transaction_id": "y90vpg3bnkjxhw541c2zc6a9"
}
}
Ethereum
eth_sendTransaction
Sign and send a transaction using the eth_sendTransaction method.
POST
/
v1
/
wallets
/
{wallet_id}
/
rpc
curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "eth_sendTransaction",
"caip2": "eip155:11155111",
"chain_type": "ethereum",
"params": {
"transaction": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000"
}
}
}'
curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "eth_sendTransaction",
"caip2": "eip155:11155111",
"chain_type": "ethereum",
"sponsor": true,
"params": {
"transaction": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000"
}
}
}'
{
"method": "eth_sendTransaction",
"data": {
"hash": "0xfc3a736ab2e34e13be2b0b11b39dbc0232a2e755a11aa5a9219890d3b2c6c7d8",
"caip2": "eip155:11155111",
"transaction_id": "y90vpg3bnkjxhw541c2zc6a9",
"transaction_request": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000",
"chain_id": 11155111,
"type": 2,
"nonce": 5,
"max_fee_per_gas": "0xF4834",
"max_priority_fee_per_gas": "0xF4240",
"gas_limit": "0xC350"
}
}
}
{
"method": "eth_sendTransaction",
"data": {
"hash": "",
"user_operation_hash": "0x8f3a4e7d2c1b9a5e6f4d3c2b1a9e8f7d6c5b4a3e2d1c0b9a8f7e6d5c4b3a2e1d",
"caip2": "eip155:11155111",
"transaction_id": "y90vpg3bnkjxhw541c2zc6a9"
}
}
SDK methods
Learn more about sending transactions using our SDKs here.Idempotency on errors: On 4xx or 5xx, Privy caches the response and replays it for the same
key. Generate a new key to retry after a server error. Policy violations are an exception and
allow same-key retries.
curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "eth_sendTransaction",
"caip2": "eip155:11155111",
"chain_type": "ethereum",
"params": {
"transaction": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000"
}
}
}'
curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "eth_sendTransaction",
"caip2": "eip155:11155111",
"chain_type": "ethereum",
"sponsor": true,
"params": {
"transaction": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000"
}
}
}'
{
"method": "eth_sendTransaction",
"data": {
"hash": "0xfc3a736ab2e34e13be2b0b11b39dbc0232a2e755a11aa5a9219890d3b2c6c7d8",
"caip2": "eip155:11155111",
"transaction_id": "y90vpg3bnkjxhw541c2zc6a9",
"transaction_request": {
"to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"value": "0x2386F26FC10000",
"chain_id": 11155111,
"type": 2,
"nonce": 5,
"max_fee_per_gas": "0xF4834",
"max_priority_fee_per_gas": "0xF4240",
"gas_limit": "0xC350"
}
}
}
{
"method": "eth_sendTransaction",
"data": {
"hash": "",
"user_operation_hash": "0x8f3a4e7d2c1b9a5e6f4d3c2b1a9e8f7d6c5b4a3e2d1c0b9a8f7e6d5c4b3a2e1d",
"caip2": "eip155:11155111",
"transaction_id": "y90vpg3bnkjxhw541c2zc6a9"
}
}
The wallet RPC endpoint is a synchronous endpoint, and a successful response indicates that the
transaction has been broadcasted to the network. Transactions may get broadcasted but still fail
to be confirmed by the network. The endpoint does not wait for confirmation or retry if the
transaction fails to be confirmed. To handle these scenarios, see our guide on speeding up
transactions.
Headers
string
required
ID of your Privy app.
string
Request authorization signature. If multiple signatures are required, they should be comma
separated.
string
Request expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the
request must be processed.
Path Parameters
string
required
ID of the wallet to get.
Body
string
required
Available options:
eth_sendTransactionstring
required
object
required
Hide child attributes
Hide child attributes
object
required
Hide child attributes
Hide child attributes
string
string | number
string | number
number
Available options:
0, 1, 2, 4.string | number
string | number
string | number
string
string
string | number
string | number
boolean
Optional parameter to enable gas sponsorship for this transaction. Learn
more.
object
Options for user pays gas sponsorship, in
which the wallet covers gas with a stablecoin balance instead of the app’s gas credits. Requires
sponsor: true and an app configured for user pays mode. Not supported on Tempo.Hide child attributes
Hide child attributes
string
required
The token the wallet pays gas with, such as
usdc or usdt. Must be enabled for this chain in
the dashboard. See the supported chains and
tokens.string
Optional developer-provided reference ID for transaction reconciliation. Must be unique per
transaction and up to 64 characters. Use this to correlate transactions with your own internal
records. The
reference_id is included in transaction
webhook payloads and can be used to look up
transactions.string
string
Available options:
ethereumReturns
enum<string>
required
Available options:
eth_sendTransactionobject
required
Hide child attributes
Hide child attributes
string
required
The transaction hash. For paymaster-sponsored transactions, returns an empty string until the
transaction confirms on-chain.
string
The user operation hash. Only present for standard EVM paymaster-sponsored transactions.
object
The full transaction object that was signed and broadcast. Contains the resolved transaction
fields including
to, value, chain_id, nonce, gas_limit, and fee parameters.string
required
string
string | null
The developer-provided reference ID, if one was provided in the request.
Was this page helpful?

