sendTransaction method submits a fully signed transaction to the cluster for processing.
The transaction must be signed and serialized before calling this method. On success, the method returns the first transaction signature embedded in the transaction (base58 encoded), which serves as the transaction identifier.
sendTransaction calls through the bloXroute relay network for optimized propagation to the current leader. See Solana Trader Nodes for details.transaction (string, required) — fully signed transaction, as a base64 or base58 encoded string.config (object, optional) — configuration object containing the following fields:
encoding (string) — encoding used for the transaction data. Values: base58 (slow, deprecated), base64 (recommended). Default: base58.skipPreflight (bool) — when true, skip the preflight transaction checks (signature verification and simulation). Default: false. When true, the preflightCommitment field is ignored and the node internally uses processed.preflightCommitment (string) — commitment level to use for the preflight simulation. Default: finalized. Ignored when skipPreflight is true.maxRetries (integer) — maximum number of times the RPC node retries sending the transaction to the leader. If not provided, the node retries the transaction until it is finalized or the blockhash expires.minContextSlot (integer) — the minimum slot at which the request can be evaluated.skipPreflight is false:
preflightCommitment level. If simulation fails, the response returns the same error structure as simulateTransaction, including err, logs, and unitsConsumed.result (string) — the first transaction signature embedded in the transaction, as a base58 encoded string. Use this signature with getSignatureStatuses to confirm the transaction.error object with simulation failure details including err, logs, and unitsConsumed.
sendTransaction method is the primary way to submit transactions to the Solana network. Common patterns include:
sendTransaction.skipPreflight: true to bypass this check when you need maximum speed (e.g., arbitrage, sniping).TransactionExpiredBlockheightExceededError), rebuild with a fresh getLatestBlockhash and resend. See How to handle the transaction expiry error.