sendTransaction - Solana
The sendTransaction JSON-RPC method broadcasts a signed transaction to the Solana network, enabling Web3 sendTransaction operations like token transfers, smart contract interactions, and NFT minting
The sendTransaction RPC Solana method submits a fully signed transaction (encoded as a string) to the blockchain.
As a core component of Solana’s JSON-RPC framework, it allows developers to execute on-chain actions while controlling parameters like preflight checks, retries, and encoding formats.
Unlike Ethereum’s viem sendTransaction
, which handles gas estimation and signing, Solana requires transactions to be pre-signed and serialized. This API method is critical for applications requiring real-time block inclusion, such as exchanges or gaming platforms.
Supported Networks
Access this method via Solana API Endpoints:
Mainnet
Devnet
Parameters
transaction (string
, required):
string
, required):The signed transaction, encoded as a base58
or base64
string.
config (object
, optional):
object
, optional):Customize transaction handling with these fields:
skipPreflight
(bool
, optional): Bypass preflight checks (default:false
). Use cautiously to speed up requests.preflightCommitment
(string
, optional): Commitment level for preflight verification (default:finalized
).encoding
(string
, optional): Transaction encoding:base58
(deprecated) orbase64
(recommended).maxRetries
(usize
, optional): Maximum retry attempts by the RPC node before abandoning the transaction.
Request
API Endpoints:
https://go.getblock.io/<ACCESS-TOKEN>/
sendTransaction example (cURL)
curl --location "https://go.getblock.io/<ACCESS-TOKEN>/" -XPOST \
--header "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "sendTransaction",
"params": [
"4hXTCkRzt9WyecNzV1XPgCDfGAZzQKNxLXgynz5QDuWWPSAZBZSHptvWRL3BjCvzUXRdKvHL2b7yGrRQcWyaqsaBCncVG7BFggS8w9snUts67BSh3EqKpXLUm5UMHfD7ZBe9GhARjbNQMLJ1QD3Spr6oMTBU6EhdB4RD8CP2xUxr2u3d6fos36PD98XS6oX8TQjLpsMwncs5DAMiD4nNnR8NBfyghGCWvCVifVwvA8B8TJxE1aiyiv2L429BCWfyzAme5sZW8rDb14NeCQHhZbtNqfXhcp2tAnaAT",
{"encoding": "base64", "skipPreflight": true}
]
}'
Response
A successful response returns the transaction signature. If the blockhash is expired or the node is out of sync, a sendTransaction error occurs.
Example Success Response:
{
"jsonrpc": "2.0",
"result": "2nBhEBYYvfaAe16UMNqRHre4YNSskvuYgx3M6E4JP1oDYvZEJHvoPzyUidNgNX5r9sTyN1J9UxtbCXy2rqYcuyuv",
"id": "getblock.io"
}
result
: a 64‑byte transaction signature which the RPC encodes inbase58
.
Example Error Response (sendTransaction error):
{
"jsonrpc": "2.0",
"error": {
"code": -32005,
"data": {"numSlotsBehind": 90384},
"message": "Node is behind by 90384 slots"
},
"id": "getblock.io"
}
Error Handling
Common sendTransaction error scenarios include:
Expired blockhash (transaction too old).
Insufficient balance for fees.
Invalid transaction encoding or signature.
RPC node synchronization issues.
Retry with maxRetries
or a fresh blockhash to resolve transient errors.
Use Cases
The sendTransaction RPC Solana method is ideal for:
Wallets executing user-initiated transfers or swaps.
dApps submitting on-chain votes or NFT actions.
DeFi protocols processing liquidations or staking.
Games minting in-game assets.
By configuring skipPreflight, developers reduce latency for time-sensitive transactions while accepting higher failure risks.
Code Example (JavaScript) – Web3 sendTransaction Integration
const axios = require('axios');
const url = "https://go.getblock.io/<ACCESS-TOKEN>/";
const headers = { "Content-Type": "application/json" };
const payload = {
jsonrpc: "2.0",
id: 1,
method: "sendTransaction",
params: [
"4hXTCkRzt9WyecNzV1XPgCDfGAZzQKNxLXgynz5QDuWWPSAZBZSHptvWRL3BjCvzUXRdKvHL2b7yGrRQcWyaqsaBCncVG7BFggS8w9snUts67BSh3EqKpXLUm5UMHfD7ZBe9GhARjbNQMLJ1QD3Spr6oMTBU6EhdB4RD8CP2xUxr2u3d6fos36PD98XS6oX8TQjLpsMwncs5DAMiD4nNnR8NBfyghGCWvCVifVwvA8B8TJxE1aiyiv2L429BCWfyzAme5sZW8rDb14NeCQHhZbtNqfXhcp2tAnaAT",
{ encoding: "base64", maxRetries: 5 }
]
};
const sendTransaction = async () => {
try {
const response = await axios.post(url, payload, { headers });
if (response.status === 200 && response.data.result) {
console.log("Transaction Signature:", response.data.result);
} else {
console.error("sendTransaction error:", response.data.error || "Unknown error");
}
} catch (error) {
console.error("Error:", error.response?.data || error.message);
}
};
sendTransaction();
Integration with Web3
Integrate the sendTransaction RPC Solana method into Web3 applications to enable seamless on-chain interactions. By leveraging Core API parameters like preflightCommitment and maxRetries, developers balance speed and reliability for transactions, ensuring optimal user experiences in wallets, dApps, and trading platforms.
Last updated