eth_call
curl --request POST \
--url https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/ \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "eth_call",
"params": [
{
"to": "0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541",
"data": "0x06fdde03"
},
"latest"
]
}
'import requests
url = "https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "eth_call",
"params": [
{
"to": "0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541",
"data": "0x06fdde03"
},
"latest"
]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
id: 1,
jsonrpc: '2.0',
method: 'eth_call',
params: [
{to: '0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541', data: '0x06fdde03'},
'latest'
]
})
};
fetch('https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'eth_call',
'params' => [
[
'to' => '0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541',
'data' => '0x06fdde03'
],
'latest'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_call\",\n \"params\": [\n {\n \"to\": \"0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541\",\n \"data\": \"0x06fdde03\"\n },\n \"latest\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_call\",\n \"params\": [\n {\n \"to\": \"0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541\",\n \"data\": \"0x06fdde03\"\n },\n \"latest\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_call\",\n \"params\": [\n {\n \"to\": \"0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541\",\n \"data\": \"0x06fdde03\"\n },\n \"latest\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": "<string>"
}Monad node API
eth_call | Monad
Monad API method that executes a new message call immediately without creating a transaction on the blockchain. Monad via Chainstack.
POST
/
eth_call
curl --request POST \
--url https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/ \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "eth_call",
"params": [
{
"to": "0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541",
"data": "0x06fdde03"
},
"latest"
]
}
'import requests
url = "https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "eth_call",
"params": [
{
"to": "0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541",
"data": "0x06fdde03"
},
"latest"
]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
id: 1,
jsonrpc: '2.0',
method: 'eth_call',
params: [
{to: '0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541', data: '0x06fdde03'},
'latest'
]
})
};
fetch('https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'eth_call',
'params' => [
[
'to' => '0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541',
'data' => '0x06fdde03'
],
'latest'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_call\",\n \"params\": [\n {\n \"to\": \"0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541\",\n \"data\": \"0x06fdde03\"\n },\n \"latest\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_call\",\n \"params\": [\n {\n \"to\": \"0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541\",\n \"data\": \"0x06fdde03\"\n },\n \"latest\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://monad-testnet.core.chainstack.com/9c5b265f20b3ea5df4f54f70eb74b800/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_call\",\n \"params\": [\n {\n \"to\": \"0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541\",\n \"data\": \"0x06fdde03\"\n },\n \"latest\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": "<string>"
}Monad API method that executes a new message call immediately without creating a transaction on the blockchain. This is useful for reading data from smart contracts or simulating transactions.
Monad-specific behavior:
- State is available only for a rolling window of recent blocks, several days long, on every node including Archive nodes. For a block older than that window, the call returns
-32602Block requested not found. See the Monad note on Networks. - Does not accept EIP-4844 (blob) transaction type, as EIP-4844 is not supported on Monad.
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.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
object— the transaction call object:from(optional) — address the transaction is sent fromto— address the transaction is directed togas(optional) — gas provided for the callgasPrice(optional) — gas price for the callvalue(optional) — value sent with the calldata(optional) — hash of the method signature and encoded parameters
quantity or tag— integer block number, or the stringlatest,earliest, orpending
State override (optional)
eth_call accepts an optional third parameter: a state override set that changes account state for this call only. Nothing is written to the chain. The set is an object keyed by account address, and each address can override:
balance— the account balance in wei, hex-encodednonce— the account nonce, hex-encodedcode— the bytecode to run at the addressstate— storage slot values that replace the account’s entire storagestateDiff— storage slot values to change, keeping the rest of the storage
42 at an unused address, then calls that address:
curl --request POST \
--url CHAINSTACK_NODE_URL \
--header 'Content-Type: application/json' \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "eth_call",
"params": [
{ "to": "0x00000000000000000000000000000000c0ffee42", "data": "0x" },
"latest",
{ "0x00000000000000000000000000000000c0ffee42": { "code": "0x602a60005260206000f3" } }
]
}'
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x000000000000000000000000000000000000000000000000000000000000002a"
}
Response
result— the return value of the executed contract call.
eth_call code examples
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("CHAINSTACK_NODE_URL");
async function callContract() {
// Call name() on Wrapped Monad (WMON) contract
const result = await provider.call({
to: "0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541",
data: "0x06fdde03" // name()
});
console.log(result);
}
callContract();
from web3 import Web3
node_url = "CHAINSTACK_NODE_URL"
web3 = Web3(Web3.HTTPProvider(node_url))
# Call name() on Wrapped Monad (WMON) contract
result = web3.eth.call({
'to': '0xFb8bf4c1CC7a94c73D209a149eA2AbEa852BC541',
'data': '0x06fdde03' # name()
})
print(result.hex())
Use case
A practical use case foreth_call is reading data from smart contracts, such as token balances, contract state variables, or simulating complex transactions before sending them.Last modified on October 1, 2026
Was this page helpful?