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

# Broadcasting

> Transaction construction, broadcast, and status monitoring for EVM and Solana.

## Construction and Broadcast

### EVM

A successful EVM transaction requires:

* **Transaction construction**: assembling the payload (recipient, value, calldata)
* **Nonce**: set correctly to order transactions and prevent conflicts
* **Gas and tip fee**: estimated to ensure inclusion even during network congestion
* **Signature**: cryptographically signing the transaction with the sender's private key
* **Broadcast**: submitting the signed transaction to the network and monitoring for inclusion

Turnkey handles all of this for you via `ethSendTransaction`. Whether or not you use sponsorship, you pass through minimal payloads and we take care of the rest. We auto-fill any fields you omit.

This endpoint supports arbitrary EVM transactions — not just simple sends. You can interact with smart contracts, deploy contracts, or execute any valid EVM operation.

### Solana

A successful Solana transaction requires:

* **Transaction construction**: assembling the list of instructions (program, accounts, data)
* **Recent blockhash**: fetched and attached at broadcast time to ensure the transaction is valid
* **Compute unit limit**: estimated and set to prevent failed transactions due to insufficient compute
* **Priority fee**: set to ensure timely inclusion under current network conditions
* **Signature**: cryptographically signing the transaction with the sender's private key
* **Broadcast**: submitting the signed transaction to the network and monitoring for confirmation

Turnkey handles all of this for you via `solSendTransaction`. Whether or not you use sponsorship, you pass through a minimal payload and we manage the rest.

<Note>
  On Solana, fee sponsorship and rent sponsorship are separate. `Sponsor Solana
      Rent` is disabled by default and must be enabled in the dashboard before
  Turnkey will pre-fund rent for account creation. If created accounts are later
  closed, refunded rent can go back to the signer rather than the sponsor. See
  [Solana Rent Sponsorship](/networks/solana-rent-refunds). For payer behavior,
  static-key requirements, and account-creation caveats in sponsored flows, see
  [Solana transaction construction for sponsored flows](/networks/solana-transaction-construction).
</Note>

## Transaction status and enriched errors

After you send a transaction, Turnkey monitors its status until it fails or is confirmed on-chain.

### Transaction Statuses

The following statuses apply to both EVM and Solana transactions:

| **Status**   | **Description**                                                                                          |
| ------------ | -------------------------------------------------------------------------------------------------------- |
| INITIALIZED  | Turnkey has constructed and signed the transaction and prepared fees, but it has not yet been broadcast. |
| BROADCASTING | Turnkey is actively broadcasting the transaction to the network and awaiting inclusion.                  |
| INCLUDED     | The transaction has been included in a block (EVM) or confirmed on-chain (Solana).                       |
| FAILED       | The transaction could not be included on-chain and will not be retried automatically.                    |

### EVM Smart Contract Transaction Errors

For EVM transactions that revert, Turnkey runs a simulation to produce structured execution traces and decode common revert reasons — giving you actionable error messages instead of opaque hex data.

| **Error type** | **Description**                                                                                                                                         |
| :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |
| UNKNOWN        | The transaction reverted during on-chain execution or simulation, but the revert reason could not be decoded (e.g. missing ABI or unverified contract). |
| NATIVE         | The transaction reverted due to a built-in Solidity error, such as `require()`, `assert()`, or a plain `revert()`.                                      |
| CUSTOM         | The transaction reverted due to a contract-defined custom error declared using Solidity's `error` keyword.                                              |

<Note>
  These error types describe how an EVM smart contract reverted during on-chain execution or pre-flight simulation. Turnkey application-level errors (e.g. signing failures, policy rejections) are not classified here and are instead surfaced via `Error.Message`.
</Note>
