# eth\_call

Executes a new message call immediately without creating a transaction on the block chain.

{% hint style="warning" %}
To prevent API abuse, the `gas` parameter in [`eth_estimateGas`](broken://pages/YPZtPjpGxmgxdQO9V6cb) and [`eth_call`](broken://pages/TJoPcq7M2OaKW7DktRjq) is capped at 10x (1000%) the current block gas limit. You can recreate this behavior in your local test environment (Ganache, Besu, Geth, or other client) via the `rpc.gascap` command-line option.
{% endhint %}

### REQUEST

```
POST https://<network>.chainrpc.io/v3/YOUR-API-KEY
```

#### HEADERS

```
Content-Type: application/json
```

#### REQUEST PAYLOAD

* `TRANSACTION CALL OBJECT` *\[required]*
  * `from`: 20 Bytes - The address the transaction is sent from.
  * `to`: 20 Bytes - The address the transaction is directed to.
  * `gas`: *\[optional]* hexadecimal value of the gas provided for the transaction execution. `eth_call` consumes zero gas, but this parameter may be needed by some executions.
  * `gasPrice`: *\[optional]* hexadecimal value of the gasPrice used for each paid gas.
  * `maxPriorityFeePerGas`: *\[optional]* Maximum fee, in Wei, the sender is willing to pay per gas above the base fee. See [EIP-1559 transactions](broken://pages/aUFKFlNvRU6UyYoTAWv2#eip-1559-transactions).
  * `maxFeePerGas`: *\[optional]* Maximum total fee (base fee + priority fee), in Wei, the sender is willing to pay per gas. See [EIP-1559 transactions](broken://pages/aUFKFlNvRU6UyYoTAWv2#eip-1559-transactions).
  * `value`: *\[optional]* hexadecimal value of the value sent with this transaction.
  * `data`: *\[optional]* Hash of the method signature and encoded parameters. See the [Ethereum contract ABI specification](https://docs.soliditylang.org/en/latest/abi-spec.html).
* `BLOCK PARAMETER` *\[required]* - a hexadecimal block number, or the string "latest", "earliest" or "pending". See the [default block parameter](https://github.com/ethereum/wiki/wiki/JSON-RPC#the-default-block-parameter).

#### EXAMPLE

```bash
## JSON-RPC over HTTPS POST
## Replace YOUR-API-KEY with an API key from your chainRPC Dashboard
## You can also replace mainnet with a different supported network
curl https://eth.chainrpc.io/v3/YOUR-API-KEY \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","method":"eth_call","params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas": "0x76c0","gasPrice": "0x9184e72a000","value": "0x9184e72a","data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}, "latest"],"id":1}'

## JSON-RPC over WSS
## Replace YOUR-API-KEY with an API key from your Infura Dashboard
## You can also replace mainnet with a different supported network
wscat -c wss://eth.chainrpc.io/v3/YOUR-API-KEY
>{"jsonrpc":"2.0","method":"eth_call","params": [{"from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas": "0x76c0","gasPrice": "0x9184e72a000","value": "0x9184e72a","data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}, "latest"],"id":1}
```

### RESPONSE

#### RESULT FIELDS

* `RETURN VALUE` - the return value of the executed contract method.

#### BODY

```json
{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x"
}
```

On Mainnet, Rinkeby, Ropsten and Goerli, if this call causes the EVM to execute a `REVERT` operation, an error response of the following form is returned, with the revert reason pre-decoded as a string:

```json
{
    "jsonrpc": "2.0",
    "id": 1,
    "error": {
        "code": 3,
        "message": "execution reverted: Dai/insufficient-balance",
        "data": "0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000184461692f696e73756666696369656e742d62616c616e63650000000000000000"
    }
}
```

On Kovan, the actual revert reason is instead returned encoded as part of the `data` field in the response.

```json
{
    "jsonrpc": "2.0",
    "id": 1,
    "error": {
        "code": -32015,
        "data": "Reverted 0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000204f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
        "message": "VM execution error."
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chainrpc.io/chainrpc/networks/ethereum/json-rpc-methods/eth_call.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
