Call Contract Example


  • contractAddress - string Contract address to interact with

  • functionName - string Smart contract function to interact with

  • abi - Array<AbiItem> (Optional) ABI of the contract to call

  • params - Array<string> (Optional) Params to call the smart contract function with

  • valueInWei - string (Optional) Amount of wei to send

  • gasLimit - string (Optional) Gas limit for the function call

  • chain - Object used to ensure the user is on the correct chain (follows the MetaMask specification)

    • chainId - string Base 10 string matching the chain id on Chainlist

    • chainMetadata (Optional) - Object used to add the chain if the user does not have the chain added to their wallet

      • chainName - string

      • nativeCurrency - Object

        • name - string is the currency's name

        • symbol - string 2-6 characters long symbol for the chain

        • decimals - 18

      • rpcUrls - Array<string> is an array of rpc node urls that can be used to make requests. We recommend selecting a few from the listing on Chainlist

      • blockExplorerUrls (Optional) - Array<string> is an array of block explorers that can be used with the chain

      • iconUrls (Optional) - Array<string> is currently unused by MetaMask


This request reads the name of a contract.

curl --location --request POST "localhost:9680/callContract" \
--header 'Content-Type: application/json' \
--data-raw '{
    "contractAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7",
    "functionName": "totalSupply",
    "params": [],
    "abi": [
        "inputs": [],
        "name": "totalSupply",
        "outputs": [
            "internalType": "uint256",
            "name": "",
            "type": "uint256"
        "stateMutability": "view",
        "type": "function"
    "chain": { "chainId": "1", "chainMetadata": { "chainName": "Ethereum", "nativeCurrency": { "name": "ETH", "symbol": "ETH", "decimals": 18 }, "rpcUrls": [""] } }


The response value(s) of the smart contract method are mixed. If it returns a single value, itโ€™s returned as is. If it has multiple return values they are returned as an object with properties and indices:


Last updated