Skip to main content
POST
/
9de47db917d4f69168e3fed02217d15b
sendTransaction
curl --request POST \
  --url https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b \
  --header 'Content-Type: application/json' \
  --data '
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "sendTransaction",
  "params": [
    "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDArczbMia1tLmq7zz4DinMNN0pJ1JtLdqIJPUw3YrGCzYAMHBsgN27lcgB6H2WQvFgyZuJYHa46puOQo9yQ8CVQbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCp20C7Wj2aiuk5TReAXo+VTVg8QTHjs0UjNMMKCvpzZ+ABAgEBARU=",
    {
      "encoding": "base64",
      "skipPreflight": false,
      "preflightCommitment": "finalized"
    }
  ]
}
'
{
  "jsonrpc": "<string>",
  "id": 123,
  "result": "<string>"
}
The Solana 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.
Warp transactionsChainstack Solana nodes support Warp transactions for faster transaction landing. Warp transactions route your sendTransaction calls through the bloXroute relay network for optimized propagation to the current leader. See Solana Trader Nodes for details.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.

Parameters

  1. transaction (string, required) — fully signed transaction, as a base64 or base58 encoded string.
  2. 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.
The preflight checks performed when skipPreflight is false:
  1. Signature verification — confirms that all required signatures are present and valid.
  2. Transaction simulation — runs the transaction against the bank state at the preflightCommitment level. If simulation fails, the response returns the same error structure as simulateTransaction, including err, logs, and unitsConsumed.

Response

  • result (string) — the first transaction signature embedded in the transaction, as a base58 encoded string. Use this signature with getSignatureStatuses to confirm the transaction.
If the transaction fails preflight checks, the response contains an error object with simulation failure details including err, logs, and unitsConsumed.

Use case

The sendTransaction method is the primary way to submit transactions to the Solana network. Common patterns include:
  1. Build, sign, send — construct a transaction with instructions, sign it with the appropriate keypairs, serialize it, and submit via sendTransaction.
  2. Preflight simulation — by default, the node runs simulateTransaction before forwarding to the leader. Set skipPreflight: true to bypass this check when you need maximum speed (e.g., arbitrage, sniping).
  3. Confirmation polling — after sending, poll getSignatureStatuses until the transaction reaches the desired commitment level.
  4. Retry with fresh blockhash — if the transaction expires (TransactionExpiredBlockheightExceededError), rebuild with a fresh getLatestBlockhash and resend. See How to handle the transaction expiry error.
The Try it example uses a pre-built transaction with an expired blockhash. It will return a blockhash-related error. To test with a live transaction, serialize and sign your own transaction, then paste the base64-encoded string into the first parameter.

Body

application/json
id
integer
default:1
jsonrpc
string
default:2.0
method
string
default:sendTransaction
params
(string | object)[]

Fully signed transaction, as an encoded string

Response

200 - application/json

Transaction signature

jsonrpc
string
id
integer
result
string

First transaction signature embedded in the transaction (base58 encoded)

Last modified on April 16, 2026