> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# sendTransaction | Solana

> The Solana sendTransaction method submits a fully signed transaction to the cluster for processing. Use it on Solana via Chainstack.

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.

<Note>
  **Warp transactions**

  Chainstack Solana nodes support [Warp transactions](/docs/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](/docs/solana-trader-nodes) for details.
</Note>

## 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](/reference/solana-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](/reference/solana-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](/reference/solana-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](/reference/solana-getsignaturestatuses) until the transaction reaches the desired commitment level.
4. **Retry with fresh blockhash** — if the transaction expires (`TransactionExpiredBlockheightExceededError`), rebuild with a fresh [getLatestBlockhash](/reference/solana-getlatestblockhash) and resend. See [How to handle the transaction expiry error](/docs/solana-how-to-handle-the-transaction-expiry-error).

<Warning>
  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.
</Warning>


## OpenAPI

````yaml openapi/solana_node_api/sendTransaction.json POST /9de47db917d4f69168e3fed02217d15b
openapi: 3.0.0
info:
  title: sendTransaction example
  version: 1.0.0
  description: This is an API example for Solana's sendTransaction.
servers:
  - url: https://nd-326-444-187.p2pify.com
security: []
paths:
  /9de47db917d4f69168e3fed02217d15b:
    post:
      tags:
        - query
      summary: sendTransaction
      operationId: sendTransaction
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  default: 1
                jsonrpc:
                  type: string
                  default: '2.0'
                method:
                  type: string
                  default: sendTransaction
                params:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        description: Fully signed transaction, as an encoded string
                      - type: object
                        properties:
                          encoding:
                            type: string
                            default: base64
                          skipPreflight:
                            type: boolean
                            default: false
                          preflightCommitment:
                            type: string
                            default: finalized
                          maxRetries:
                            type: integer
                          minContextSlot:
                            type: integer
                  default:
                    - >-
                      AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDArczbMia1tLmq7zz4DinMNN0pJ1JtLdqIJPUw3YrGCzYAMHBsgN27lcgB6H2WQvFgyZuJYHa46puOQo9yQ8CVQbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCp20C7Wj2aiuk5TReAXo+VTVg8QTHjs0UjNMMKCvpzZ+ABAgEBARU=
                    - encoding: base64
                      skipPreflight: false
                      preflightCommitment: finalized
      responses:
        '200':
          description: Transaction signature
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                  id:
                    type: integer
                  result:
                    type: string
                    description: >-
                      First transaction signature embedded in the transaction
                      (base58 encoded)

````