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

> Base API method eth_callMany executes a list of transaction bundles without creating transactions on the blockchain. Base via Chainstack.

Base 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 USDC to an address in block 12279785 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>

<Check>
  **Get your own node endpoint today**

  [Start for free](https://console.chainstack.com/) and get your app to production levels immediately. No credit card required.

  You can sign up with your GitHub, X, Google, or Microsoft account.
</Check>

## 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/base_node_api/eth_callMany.json POST /2fc1de7f08c0465f6a28e3c355e0cb14
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://base-mainnet.core.chainstack.com
security: []
paths:
  /2fc1de7f08c0465f6a28e3c355e0cb14:
    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: '0x1985EA6E9c68E1C272d8209f3B478AC2Fdb25c87'
                            to: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'
                            gas: '0xf4240'
                            gasPrice: '0x7896e72a'
                            data: >-
                              0xa9059cbb000000000000000000000000bc0E63965946815d105E7591407704e6e1964E590000000000000000000000000000000000000000000000000000000005f5e100
                          - to: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'
                            gasPrice: '0x7896e72a'
                            data: >-
                              0x70a08231000000000000000000000000bc0E63965946815d105E7591407704e6e1964E59
                        blockOverride:
                          blockNumber: '0xbb5fe9'
                    - blockNumber: '0xbb5fe9'
                      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.

````