> ## Documentation Index
> Fetch the complete documentation index at: https://cobo-docs-feature-cobo-cli.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Estimate transaction fee

> This operation estimates the transaction fee rates of a token transfer or a contract call based on three different transaction speeds (slow, recommended, and fast), considering factors such as network congestion and transaction complexity.

You need to specify the transaction information, including the request ID, request type, source address, destination address, and token ID of the transaction fee.

The response can contain different properties based on the transaction fee model used by the chain, including EIP-1559 fee model, legacy fee model, UTXO fee model, and fixed fee model.


<RequestExample>
  ```python Python
  import cobo_waas2
  from cobo_waas2.models.estimate_fee_params import EstimateFeeParams
  from cobo_waas2.models.estimated_fee import EstimatedFee
  from cobo_waas2.rest import ApiException
  from pprint import pprint

  # See configuration.py for a list of all supported configurations.
  configuration = cobo_waas2.Configuration(
      # Replace `<YOUR_PRIVATE_KEY>` with your private key
      api_private_key="<YOUR_PRIVATE_KEY>",
      # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
      host="https://api.dev.cobo.com/v2",
  )
  # Enter a context with an instance of the API client
  with cobo_waas2.ApiClient(configuration) as api_client:
      # Create an instance of the API class
      api_instance = cobo_waas2.TransactionsApi(api_client)
      estimate_fee_params = cobo_waas2.EstimateFeeParams()

      try:
          # Estimate transaction fee
          api_response = api_instance.estimate_fee(
              estimate_fee_params=estimate_fee_params
          )
          print("The response of TransactionsApi->estimate_fee:\n")
          pprint(api_response)
      except Exception as e:
          print("Exception when calling TransactionsApi->estimate_fee: %s\n" % e)

  ```

  ```java Java
  // Import classes:
  import com.cobo.waas2.ApiClient;
  import com.cobo.waas2.ApiException;
  import com.cobo.waas2.Configuration;
  import com.cobo.waas2.Env;
  import com.cobo.waas2.api.TransactionsApi;
  import com.cobo.waas2.model.*;

  public class Example {
    public static void main(String[] args) {
      ApiClient defaultClient = Configuration.getDefaultApiClient();
      // Select the development environment. To use the production environment, replace `Env.DEV` with
      // `Env.PROD
      defaultClient.setEnv(Env.DEV);

      // Replace `<YOUR_PRIVATE_KEY>` with your private key
      defaultClient.setPrivKey("<YOUR_PRIVATE_KEY>");
      TransactionsApi apiInstance = new TransactionsApi();
      EstimateFeeParams estimateFeeParams = new EstimateFeeParams();
      try {
        EstimatedFee result = apiInstance.estimateFee(estimateFeeParams);
        System.out.println(result);
      } catch (ApiException e) {
        System.err.println("Exception when calling TransactionsApi#estimateFee");
        System.err.println("Status code: " + e.getCode());
        System.err.println("Reason: " + e.getResponseBody());
        System.err.println("Response headers: " + e.getResponseHeaders());
        e.printStackTrace();
      }
    }
  }

  ```

  ```go Go
  package main

  import (
  	"context"
  	"fmt"
  	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
  	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
  	"os"
  )

  func main() {
  	estimateFeeParams := coboWaas2.EstimateFeeParams{
  		EstimateContractCallFeeParams: coboWaas2.NewEstimateContractCallFeeParams(
  			"f47ac10b-58cc-4372-a567-0e02b2c3d479",
  			coboWaas2.EstimateFeeRequestType("Transfer"),
  			"ETH",
  			coboWaas2.ContractCallSource{
  				MpcContractCallSource: coboWaas2.NewMpcContractCallSource(
  					coboWaas2.ContractCallSourceType("Org-Controlled"),
  					"f47ac10b-58cc-4372-a567-0e02b2c3d479",
  					"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  				),
  			},
  			coboWaas2.ContractCallDestination{
  				EvmContractCallDestination: coboWaas2.NewEvmContractCallDestination(
  					coboWaas2.ContractCallDestinationType("EVM_Contract"),
  					"0x0406db8351aa6839169bb363f63c2c808fee8f99",
  					"0xa22cb4650000000000000000000000001e0049783f008a0085193e00003d00cd54003c71000000000000000000000000000000000000000000000000000000000000DEMO",
  				),
  			},
  		),
  	}

  	configuration := coboWaas2.NewConfiguration()
  	// Initialize the API client
  	apiClient := coboWaas2.NewAPIClient(configuration)
  	ctx := context.Background()

  	// Select the development environment. To use the production environment, replace coboWaas2.DevEnv with coboWaas2.ProdEnv
  	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
  	// Replace `<YOUR_PRIVATE_KEY>` with your private key
  	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
  		Secret: "<YOUR_PRIVATE_KEY>",
  	})
  	resp, r, err := apiClient.TransactionsAPI.EstimateFee(ctx).
  		EstimateFeeParams(estimateFeeParams).
  		Execute()
  	if err != nil {
  		fmt.Fprintf(os.Stderr, "Error when calling `TransactionsAPI.EstimateFee``: %v\n", err)
  		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
  	}
  	// response from `EstimateFee`: EstimatedFee
  	fmt.Fprintf(os.Stdout, "Response from `TransactionsAPI.EstimateFee`: %v\n", resp)
  }

  ```

  ```javascript JavaScript
  const CoboWaas2 = require('@cobo/cobo-waas2');
  // Initialize the API client
  const apiClient = CoboWaas2.ApiClient.instance
  // Select the development environment. To use the production environment, replace `Env.DEV` with `Env.PROD`
  apiClient.setEnv(CoboWaas2.Env.DEV);
  // Replace `<YOUR_PRIVATE_KEY>` with your private key
  apiClient.setPrivateKey("<YOUR_PRIVATE_KEY>");
  // Call the API
  const apiInstance = new CoboWaas2.TransactionsApi();
  const opts = {
    'EstimateFeeParams': new CoboWaas2.EstimateFeeParams()
  };
  apiInstance.estimateFee(opts).then((data) => {
    console.log('API called successfully. Returned data: ' + data);
  }, (error) => {
    console.error(error);
  });
  ```
</RequestExample>
