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

# simulateBundle

> Simulate a JITO bundle without executing it on the blockchain.

## Request Parameters

<ParamField body="params[0]" type="object" required>
  First configuration object. Contains the encoded transactions for the simulation.
</ParamField>

<ParamField body="params[0].encodedTransactions" type="array">
  Array of encoded, serialized transactions for simulation. The encoding is determined by the `transactionEncoding` field (base-64 by default).
</ParamField>

<ParamField body="params[1]" type="object">
  Second configuration object. Optional.
</ParamField>

<ParamField body="params[1].preExecutionAccountsConfigs" type="array" required>
  Specifies which accounts to capture during simulation.

  This captures the account states *before* the transaction is executed.

  An array element at an index configures the transaction that is at the same index in the bundle.

  For each transaction in the bundle:

  * Pass `null` if you do not want any account state to be returned.
  * Or, provide an object describing which accounts to return.

  The array length must be equal to the number of transactions in the bundle.
</ParamField>

<ParamField body="params[1].postExecutionAccountsConfigs" type="array" required>
  Specifies which accounts to capture during simulation.

  This captures the account states *after* the transaction is executed.

  An array element at an index configures the transaction that is at the same index in the bundle.

  For each transaction in the bundle:

  * Pass `null` if you do not want any account state to be returned.
  * Or, provide an object describing which accounts to return.

  The array length must be equal to the number of transactions in the bundle.
</ParamField>

<ParamField body="params[1].transactionEncoding" type="string" default="base64">
  The transaction encoding used in `encodedTransactions`.

  * `base64`
  * `base58`
</ParamField>

<ParamField body="params[1].simulationBank" type="any">
  Specified which bank to run the simulation against. Can be the tip, a slot, or a commitment level.
</ParamField>

<ParamField body="params[1].skipSigVerify" type="boolean" default="false">
  Whether to skip signature verification before simulation.
</ParamField>

<ParamField body="params[1].replaceRecentBlockhash" type="boolean" default="false">
  Whether to replace the simulated transaction's recent blockhash with the latest blockhash.
</ParamField>


## OpenAPI

````yaml openapi/rpc-http/simulateBundle.yaml POST /
openapi: 3.1.0
info:
  title: Solana RPC API
  version: 1.0.0
  description: >-
    JITO Bundle Simulation API for testing and validating bundle execution
    before submission to the Solana network via JITO validators.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://mainnet.helius-rpc.com
    description: Mainnet RPC endpoint
  - url: https://devnet.helius-rpc.com
    description: Devnet RPC endpoint
security: []
paths:
  /:
    post:
      tags:
        - RPC
      summary: simulateBundle
      description: >
        Simulate a JITO bundle without executing it on the blockchain. This
        method allows developers

        to test bundle execution, verify transaction behavior within bundles,
        estimate compute unit

        consumption, detect errors, and preview account state changes before and
        after bundle execution.

        Exclusively available for JITO-Solana validators and essential for MEV
        strategy development

        and bundle optimization.
      operationId: simulateBundle
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  enum:
                    - '2.0'
                  description: The JSON-RPC protocol version.
                  example: '2.0'
                  default: '2.0'
                id:
                  type: string
                  description: A unique identifier for the request.
                  example: '1'
                  default: '1'
                method:
                  type: string
                  enum:
                    - simulateBundle
                  description: The name of the RPC method to invoke.
                  example: simulateBundle
                  default: simulateBundle
                params:
                  type: array
                  description: Parameters for simulating a JITO bundle.
                  items:
                    type: object
                    description: Bundle simulation configuration object.
                    required:
                      - params[0]
                    properties:
                      params[0]:
                        type: object
                        description: >-
                          First configuration object. Contains the encoded
                          transactions for the simulation.
                        properties:
                          encodedTransactions:
                            type: array
                            description: >-
                              Array of encoded, serialized transactions for
                              simulation. The encoding is determined by the
                              `transactionEncoding` field (base-64 by default).
                            items:
                              type: string
                              description: Encoded serialized transaction.
                              example: >-
                                5rqF8aHfs9JyEtKTvND6z8RgBtYxQwZLndS1kzHxV7D3kWm9VoYRzFtsP3qra5bM8rGhCv82LYo8fZpQoyQmtN1D9vxG2uEsMhV7jB4KdADRgxMXn5kRJzLZPt2LrPSmcUhfEmeQa7XrKeR9FHdKcXxZ1Hdq68oBr2AaPpTMuL85KDCt
                      params[1]:
                        type: object
                        description: Second configuration object. Optional.
                        required:
                          - preExecutionAccountsConfigs
                          - postExecutionAccountsConfigs
                        properties:
                          preExecutionAccountsConfigs:
                            type: array
                            description: >
                              Specifies which accounts to capture during
                              simulation.


                              This captures the account states *before* the
                              transaction is executed.


                              An array element at an index configures the
                              transaction that is at the same index in the
                              bundle.


                              For each transaction in the bundle:
                                - Pass `null` if you do not want any account state to be returned.
                                - Or, provide an object describing which accounts to return.

                              The array length must be equal to the number of
                              transactions in the bundle.
                            items:
                              type:
                                - object
                                - 'null'
                              required:
                                - addresses
                              properties:
                                addresses:
                                  type: array
                                  description: >-
                                    List of base-58 encoded account addresses
                                    whose state will be captured.
                                  items:
                                    type: string
                                    description: base-58 encoded account address.
                                    example: >-
                                      TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                                encoding:
                                  type: string
                                  description: >
                                    The encoding in which the captured account
                                    data will be returned.
                                  default: base64
                                  enum:
                                    - binary
                                    - base58
                                    - base64
                                    - jsonParsed
                                    - base64+zstd
                                  example: base64
                          postExecutionAccountsConfigs:
                            type: array
                            description: >
                              Specifies which accounts to capture during
                              simulation.


                              This captures the account states *after* the
                              transaction is executed.


                              An array element at an index configures the
                              transaction that is at the same index in the
                              bundle.


                              For each transaction in the bundle:
                                - Pass `null` if you do not want any account state to be returned.
                                - Or, provide an object describing which accounts to return.

                              The array length must be equal to the number of
                              transactions in the bundle.
                            items:
                              type:
                                - object
                                - 'null'
                              required:
                                - addresses
                              properties:
                                addresses:
                                  type: array
                                  description: >-
                                    List of base-58 encoded account addresses
                                    whose state will be captured.
                                  items:
                                    type: string
                                    description: base-58 encoded account address.
                                    example: >-
                                      TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                                encoding:
                                  type: string
                                  description: >
                                    The encoding in which the captured account
                                    data will be returned.
                                  default: base64
                                  enum:
                                    - binary
                                    - base58
                                    - base64
                                    - jsonParsed
                                    - base64+zstd
                                  example: base64
                          transactionEncoding:
                            type: string
                            description: >-
                              The transaction encoding used in
                              `encodedTransactions`.
                            enum:
                              - base64
                              - base58
                            default: base64
                          simulationBank:
                            description: >
                              Specified which bank to run the simulation
                              against. Can be the tip, a slot, or a commitment
                              level.
                            oneOf:
                              - type: string
                                description: >-
                                  Use the RPC's highest slot's bank, i.e. the
                                  working bank.
                                example: tip
                              - type: object
                                description: >-
                                  Simulate on the provided slot's bank (may not
                                  be available).
                                properties:
                                  slot:
                                    type: integer
                                    example: 373976835
                                required:
                                  - slot
                              - type: object
                                description: Define a commitment level to simulate against.
                                properties:
                                  commitment:
                                    type: object
                                    properties:
                                      commitment:
                                        type: string
                                        enum:
                                          - processed
                                          - confirmed
                                          - finalized
                                        description: Commitment level to simulate against.
                                        example: processed
                                    required:
                                      - commitment
                                required:
                                  - commitment
                          skipSigVerify:
                            type: boolean
                            description: >-
                              Whether to skip signature verification before
                              simulation.
                            default: false
                          replaceRecentBlockhash:
                            type: boolean
                            description: >-
                              Whether to replace the simulated transaction's
                              recent blockhash with the latest blockhash.
                            default: false
            example:
              jsonrpc: '2.0'
              id: '1'
              method: simulateBundle
              params:
                - encodedTransactions:
                    - >-
                      5rqF8aHfs9JyEtKTvND6z8RgBtYxQwZLndS1kzHxV7D3kWm9VoYRzFtsP3qra5bM8rGhC
                      v82LYo8fZpQoyQmtN1D9vxG2uEsMhV7jB4KdADRgxMXn5kRJzLZPt2LrPSmcUhfEmeQa7X
                      rKeR9FHdKcXxZ1Hdq68oBr2AaPpTMuL85KDCt
                    - >-
                      5rqF8aHfs9JyEtKTvND6z8RgBtYxQwZLndS1kzHxV7D3kWm9VoYRzFtsP3qra5bM8rGhC
                      v82LYo8fZpQoyQmtN1D9vxG2uEsMhV7jB4KdADRgxMXn5kRJzLZPt2LrPSmcUhfEmeQa7X
                      rKeR9FHdKcXxZ1Hdq68oBr2AaPpTMuL85KDCt
                - preExecutionAccountsConfigs:
                    - addresses:
                        - TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                      encoding: base64
                    - null
                  postExecutionAccountsConfigs:
                    - addresses:
                        - TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
                      encoding: base64
                    - null
                  skipSigVerify: true
                  simulationBank:
                    commitment:
                      commitment: processed
                  transactionEncoding: base64
                  replaceRecentBlockhash: false
      responses:
        '200':
          description: Successfully simulated the bundle.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                    description: The JSON-RPC protocol version.
                    enum:
                      - '2.0'
                    example: '2.0'
                  id:
                    type: string
                    description: Identifier matching the request.
                    example: '1'
                  result:
                    type: object
                    description: Result of the simulated bundle.
                    properties:
                      context:
                        type: object
                        description: Context of the simulation response.
                        properties:
                          apiVersion:
                            type: string
                            description: The API version.
                            example: 2.30.10
                          slot:
                            type: integer
                            description: Slot in which the data was processed.
                            example: 373999891
                      value:
                        type: object
                        description: Details of the simulated bundle result.
                        properties:
                          summary:
                            description: >
                              Summary of the bundle simulation result.


                              If the simulation succeeded, this is set to
                              `"succeeded"`.


                              If the simulation failed, this is set to an object
                              with a single field `failed` that contains details
                              on that failure.
                            oneOf:
                              - type: string
                                example: succeeded
                              - type: object
                                required:
                                  - failed
                                properties:
                                  failed:
                                    type: object
                                    required:
                                      - error
                                    properties:
                                      error:
                                        description: >-
                                          Value containing details on the error.
                                          Structure may vary.
                                      tx_signature:
                                        type: string
                                        description: >-
                                          Signature of the failed transaction in
                                          base58. May be `null` if not applicable.
                          transactionResults:
                            type: array
                            description: >-
                              Array of results for each transaction in the
                              bundle. Can be empty if there was an error.
                            items:
                              type: object
                              properties:
                                err:
                                  type:
                                    - object
                                    - 'null'
                                  description: >-
                                    Error if the transaction failed, `null` if
                                    successful.
                                logs:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    Array of log messages from transaction
                                    execution.
                                  items:
                                    type: string
                                    example: >-
                                      Program
                                      4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      invoke [1]
                                preExecutionAccounts:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    Account states before the transaction's
                                    execution.
                                  items:
                                    type: object
                                    properties:
                                      data:
                                        type: string
                                        description: Data associated with the account.
                                      executable:
                                        type: boolean
                                        description: Whether the account contains a program.
                                        example: false
                                      lamports:
                                        type: integer
                                        description: >-
                                          Number of lamports assigned to this
                                          account.
                                        example: 1500000000
                                      owner:
                                        type: string
                                        description: >-
                                          Address of the program that owns this
                                          account.
                                        example: >-
                                          4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      rentEpoch:
                                        type: integer
                                        description: >-
                                          Epoch at which this account will next
                                          owe rent.
                                        example: 324
                                      space:
                                        type: integer
                                        description: The data size of the account.
                                        example: 1024
                                postExecutionAccounts:
                                  type:
                                    - array
                                    - 'null'
                                  description: >-
                                    Account states after the transaction's
                                    execution.
                                  items:
                                    type: object
                                    properties:
                                      data:
                                        type: string
                                        description: Data associated with the account.
                                      executable:
                                        type: boolean
                                        description: Whether the account contains a program.
                                        example: false
                                      lamports:
                                        type: integer
                                        description: >-
                                          Number of lamports assigned to this
                                          account.
                                        example: 1500000000
                                      owner:
                                        type: string
                                        description: >-
                                          Address of the program that owns this
                                          account.
                                        example: >-
                                          4Nd1mFvxhG1DQMLUKhMzrZ7yG1UrjC9xXH6kvvZtcg9R
                                      rentEpoch:
                                        type: integer
                                        description: >-
                                          Epoch at which this account will next
                                          owe rent.
                                        example: 324
                                      space:
                                        type: integer
                                        description: The data size of the account.
                                        example: 1024
                                unitsConsumed:
                                  type: integer
                                  description: >-
                                    Number of compute budget units consumed
                                    during processing.
                                  example: 200000
                                returnData:
                                  type:
                                    - object
                                    - 'null'
                                  description: >-
                                    Most recent return data generated by an
                                    instruction.
                                  properties:
                                    programId:
                                      type: string
                                      description: Program that generated the return data.
                                      example: >-
                                        Fx9Hp1gLzYj6Ryc4GaVoq2v6t4NxWg3GT1kP7quzZbVQ
                                    data:
                                      type: string
                                      description: >-
                                        Return data as base-64 encoded binary
                                        data.
                                      example: >-
                                        AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASjD8=
              example:
                jsonrpc: '2.0'
                id: '1'
                result:
                  context:
                    apiVersion: 2.30.10
                    slot: 373999891
                  value:
                    summary: succeeded
                    transactionResults:
                      - err: null
                        logs:
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            invoke [1]
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            success
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            invoke [1]
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            success
                          - Program 11111111111111111111111111111111 invoke [1]
                          - Program 11111111111111111111111111111111 success
                        preExecutionAccounts:
                          - data:
                              - ''
                              - base64
                            executable: true
                            lamports: 5299606121
                            owner: BPFLoader2111111111111111111111111111111111
                            rentEpoch: 324
                            space: 134080
                        postExecutionAccounts:
                          - data:
                              - ''
                              - base64
                            executable: true
                            lamports: 5299606121
                            owner: BPFLoader2111111111111111111111111111111111
                            rentEpoch: 324
                            space: 134080
                        returnData:
                          programId: Fx9Hp1gLzYj6Ryc4GaVoq2v6t4NxWg3GT1kP7quzZbVQ
                          data: AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASjD8=
                        unitsConsumed: 450
                      - err: null
                        logs:
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            invoke [1]
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            success
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            invoke [1]
                          - >-
                            Program ComputeBudget111111111111111111111111111111
                            success
                          - Program 11111111111111111111111111111111 invoke [1]
                          - Program 11111111111111111111111111111111 success
                        postExecutionAccounts: null
                        preExecutionAccounts: null
                        returnData: null
                        unitsConsumed: 450
        '400':
          description: Bad Request - Invalid request parameters or malformed request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32602
                  message: Invalid params
                id: '1'
        '401':
          description: Unauthorized - Invalid or missing API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32001
                  message: Unauthorized
                id: '1'
        '429':
          description: Too Many Requests - Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32005
                  message: Too many requests
                id: '1'
        '500':
          description: Internal Server Error - An error occurred on the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32603
                  message: Internal error
                id: '1'
        '503':
          description: Service Unavailable - The service is temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32002
                  message: Service unavailable
                id: '1'
        '504':
          description: Gateway Timeout - The request timed out.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                jsonrpc: '2.0'
                error:
                  code: -32003
                  message: Gateway timeout
                id: '1'
      security:
        - ApiKeyQuery: []
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        jsonrpc:
          type: string
          description: The JSON-RPC protocol version.
          enum:
            - '2.0'
          example: '2.0'
        error:
          type: object
          properties:
            code:
              type: integer
              description: The error code.
              example: -32602
            message:
              type: string
              description: The error message.
            data:
              type: object
              description: Additional data about the error.
        id:
          type: string
          description: Identifier matching the request.
          example: '1'
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key
      description: >-
        Your Helius API key. You can get one for free in the
        [dashboard](https://dashboard.helius.dev/api-keys).

````