> ## 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.

# eth_callMany | Optimism

> Optimism API method eth_callMany executes a list of transaction bundles without creating transactions on the blockchain. On Optimism.

Optimism API method `eth_callMany` executes a list of transaction bundles without creating transactions on the blockchain. This method is particularly useful for simulating transactions to understand their potential outcomes. It supports simulating transactions at an intermediate state of a block, simulating multiple transactions with sequential dependencies, and overwriting block headers.

This examples simulates the transfer of 100 USDT to an address in block 116318465 at transaction position 1 in the block and does the balance check of the address for the USDT, all in one call.

<Note>
  When called against a block older than the latest \~128 blocks, this method is treated as an archive request (2 RUs instead of 1 RU). See [request units](/docs/request-units#archive-state-methods).
</Note>

## Parameters

* **BUNDLES** (array, required): A list of bundles where each bundle contains:

  * **transactions** (array): An array of transaction objects with parameters similar to `eth_call`.
  * **blockOverride** (object, optional): Overrides for the execution context block header, including `blockNumber`, `blockHash`, `coinbase`, `timestamp`, `difficulty`, `gasLimit`, and `baseFee`.
* **SIMULATION CONTEXT** (object, required): The context for the simulation, specifying the `blockNumber or Tag` and `transactionIndex`.
* **STATE OVERRIDES** (object, optional): An optional mapping for state overrides, following the `eth_call` standard.
* **TIMEOUT** (integer, optional): The maximum running time for the simulations in milliseconds, defaulting to 5000 milliseconds.

## Response

The method returns a list of lists containing either the return value of the executed contract call or the reverted error code.

* **array** - All the return/error values
  * **value** - The value if was successful
  * **error** - The error if the transaction failed

## Use case

The `eth_callMany` method is essential for:

* Developers who need to simulate the outcome of transactions at a specific block height without making actual state changes.
* Applications that require understanding the sequential dependencies between multiple transactions.
* Services that need to test the impact of block header changes on transaction execution.


## OpenAPI

````yaml openapi/optimism_node_api/eth_callMany.json POST /efb0a5eccd2caa5135eb54eba6f7f300
openapi: 3.0.0
info:
  title: eth_callMany example
  version: 1.0.0
  description: >-
    This is an API example for eth_callMany, a method to execute multiple calls
    in a single request. This can be  used to query the state of the blockchain
    at a specific block number without altering the blockchain state.
servers:
  - url: https://optimism-mainnet.core.chainstack.com
security: []
paths:
  /efb0a5eccd2caa5135eb54eba6f7f300:
    post:
      tags:
        - Ethereum Operations
      summary: eth_callMany
      operationId: callMany
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - jsonrpc
                - method
                - id
                - params
              properties:
                jsonrpc:
                  type: string
                  default: '2.0'
                method:
                  type: string
                  default: eth_callMany
                id:
                  type: integer
                  default: 1
                params:
                  type: array
                  default:
                    - - transactions:
                          - from: '0xacD03D601e5bB1B275Bb94076fF46ED9D753435A'
                            to: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58'
                            gas: '0xf4240'
                            gasPrice: '0x7896e72a'
                            data: >-
                              0xa9059cbb000000000000000000000000bc0E63965946815d105E7591407704e6e1964E590000000000000000000000000000000000000000000000000000000005f5e100
                          - to: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58'
                            gasPrice: '0x7896e72a'
                            data: >-
                              0x70a08231000000000000000000000000bc0E63965946815d105E7591407704e6e1964E59
                        blockOverride:
                          blockNumber: '0x6eee101'
                    - blockNumber: '0x6eee101'
                      transactionIndex: 1
                    - {}
                  items:
                    type: object
      responses:
        '200':
          description: The result of the multiple calls
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                  id:
                    type: integer
                  result:
                    type: array
                    items:
                      type: object
                    description: The results of the executed calls.

````