> ## Documentation Index
> Fetch the complete documentation index at: https://cobo.com/developers/llms.txt
> Use this file to discover all available pages before exploring further.

# Estimate swap fee

> This operation estimates the network fee of a swap activity. You can use this operation to estimate the network fee before initiating swap activities from MPC Wallets or Custodial Wallets (Web3 Wallets).

It requires a valid `wallet_id` and `quote_id`, so you need to [get a swap quote](https://www.cobo.com/developers/v2/api-references/swaps/get-swap-quote) first.


> [!TIP]
>
> Try [Cobo WaaS Skill](https://cobo.com/developers/v2/guides/overview/cobo-waas-skill.md) in your AI coding assistant (Claude Code, Cursor, etc.). Describe your needs in natural language to auto-generate production-ready SDK code and debug faster 🚀

```python Python theme={null}
import cobo_waas2
from cobo_waas2.models.estimated_fee import EstimatedFee
from cobo_waas2.models.swap_estimate_fee import SwapEstimateFee
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.SwapsApi(api_client)
    swap_estimate_fee = cobo_waas2.SwapEstimateFee(
        wallet_id="123e4567-e89b-12d3-a456-426614174000",
        address="19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku",
        quote_id="123e4567-e89b-12d3-a456-426614174001",
        fee_type="Fixed"
    )

    try:
        # Estimate swap fee
        api_response = api_instance.estimate_swap_fee(swap_estimate_fee)
        print("The response of SwapsApi->estimate_swap_fee:\n")
        pprint(api_response)
    except Exception as e:
        print("Exception when calling SwapsApi->estimate_swap_fee: %s\n" % e)

```

```java Java theme={null}
// 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.SwapsApi;
import com.cobo.waas2.model.*;
import java.util.UUID;

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>");
    SwapsApi apiInstance = new SwapsApi();
    SwapEstimateFee swapEstimateFee =
        new SwapEstimateFee()
            .walletId("123e4567-e89b-12d3-a456-426614174000")
            .quoteId(UUID.fromString("123e4567-e89b-12d3-a456-426614174001"));
    try {
      EstimatedFee result = apiInstance.estimateSwapFee(swapEstimateFee);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling SwapsApi#estimateSwapFee");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

```

```go Go theme={null}
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() {
	swapEstimateFee := *coboWaas2.NewSwapEstimateFee("123e4567-e89b-12d3-a456-426614174000", "123e4567-e89b-12d3-a456-426614174001")

	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.SwapsAPI.EstimateSwapFee(ctx).
		SwapEstimateFee(swapEstimateFee).
		Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `SwapsAPI.EstimateSwapFee``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `EstimateSwapFee`: EstimatedFee
	fmt.Fprintf(os.Stdout, "Response from `SwapsAPI.EstimateSwapFee`: %v\n", resp)
}

```

```javascript JavaScript theme={null}
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.SwapsApi();
const SwapEstimateFee = new CoboWaas2.SwapEstimateFee();
apiInstance.estimateSwapFee(SwapEstimateFee).then(
  (data) => {
    console.log("API called successfully. Returned data: " + data);
  },
  (error) => {
    console.error(error);
  },
);

```

```python Python theme={null}
import cobo_waas2
from cobo_waas2.models.estimated_fee import EstimatedFee
from cobo_waas2.models.swap_estimate_fee import SwapEstimateFee
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.SwapsApi(api_client)
    swap_estimate_fee = cobo_waas2.SwapEstimateFee(
        wallet_id="123e4567-e89b-12d3-a456-426614174000",
        quote_id="123e4567-e89b-12d3-a456-426614174001",
    )

    try:
        # Estimate swap fee
        api_response = api_instance.estimate_swap_fee(swap_estimate_fee)
        print("The response of SwapsApi->estimate_swap_fee:\n")
        pprint(api_response)
    except Exception as e:
        print("Exception when calling SwapsApi->estimate_swap_fee: %s\n" % e)

```

```java Java theme={null}
// 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.SwapsApi;
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>");
    SwapsApi apiInstance = new SwapsApi();
    SwapEstimateFee swapEstimateFee =
        new SwapEstimateFee()
            .walletId("123e4567-e89b-12d3-a456-426614174000")
            .quoteId("123e4567-e89b-12d3-a456-426614174001");
    try {
      EstimatedFee result = apiInstance.estimateSwapFee(swapEstimateFee);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling SwapsApi#estimateSwapFee");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

```

```go Go theme={null}
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() {
	swapEstimateFee := *coboWaas2.NewSwapEstimateFee("123e4567-e89b-12d3-a456-426614174000", "123e4567-e89b-12d3-a456-426614174001")

	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.SwapsAPI.EstimateSwapFee(ctx).
		SwapEstimateFee(swapEstimateFee).
		Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `SwapsAPI.EstimateSwapFee``: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// response from `EstimateSwapFee`: EstimatedFee
	fmt.Fprintf(os.Stdout, "Response from `SwapsAPI.EstimateSwapFee`: %v\n", resp)
}

```

```javascript JavaScript theme={null}
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.SwapsApi();
const SwapEstimateFee = new CoboWaas2.SwapEstimateFee();
apiInstance.estimateSwapFee(SwapEstimateFee).then(
  (data) => {
    console.log("API called successfully. Returned data: " + data);
  },
  (error) => {
    console.error(error);
  },
);

```


## OpenAPI

````yaml post /swaps/estimate_fee
openapi: 3.0.3
info:
  title: Cobo Wallet as a Service 2.0
  description: >
    The Cobo Wallet-as-a-Service (WaaS) 2.0 API is the latest version of Cobo's
    WaaS API offering. It enables you to access Cobo's full suite of crypto
    wallet technologies with powerful and flexible access controls. By
    encapsulating complex security protocols and streamlining blockchain
    interactions, this API allows you to concentrate on your core business
    activities without worrying about the safety of your assets. The WaaS 2.0
    API presents the following key features:


    - A unified API for Cobo's [all wallet
    types](https://manuals.cobo.com/en/portal/introduction#an-all-in-one-wallet-platform)

    - Support for 80+ chains and 3000+ tokens

    - A comprehensive selection of webhook events

    - Flexible usage models for MPC Wallets, including [Organization-Controlled
    Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/ocw/introduction)
    and [User-Controlled
    Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/ucw/introduction)

    - Seamlessly transfer funds across multiple exchanges, including Binance,
    OKX, Bybit, Deribit, and more


    For more information about the WaaS 2.0 API, see [Introduction to WaaS
    2.0](https://www.cobo.com/developers/v2/guides/overview/introduction).
  termsOfService: https://cobo.com/waas/tos/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    name: Cobo WaaS
    url: https://www.cobo.com/waas
    email: help@cobo.com
  version: 1.0.0
servers:
  - url: https://api.dev.cobo.com/v2
    description: Development environment
  - url: https://api.cobo.com/v2
    description: Production environment
security:
  - CoboAuth: []
tags:
  - name: Organizations
    description: Operations related to Organizations.
  - name: Wallets
    description: Operations related to all wallets.
  - name: Wallets - MPC Wallets
    description: Operations related to mpc wallet.
  - name: Wallets - Exchange Wallet
    description: Operations related to exchange wallet.
  - name: Transactions
    description: Operations related to all transactions.
  - name: Developers - Webhooks
    description: Operations related to webhooks.
  - name: Stakings
    description: Operations related to staking.
  - name: OAuth
    description: Operations related to OAuth.
  - name: Developers
    description: Operations related to developers.
  - name: AddressBooks
    description: Operations related to address books.
  - name: TravelRule
    description: Operations related to travel rule.
  - name: GraphQL
    description: Operations related to executing GraphQL queries and mutations.
  - name: PrimeBroker
    description: Operations related to prime broker.
  - name: AppWorkflows
    description: Operations related to app workflow.
  - name: FeeStation
    description: Operations related to fee station.
  - name: Payment
    description: Operations related to payment.
  - name: Batch Payouts
    description: Operations related to batch payouts.
  - name: Tokenization
    description: Operations related to tokenization.
  - name: AutoSweep
    description: Operations related to auto sweep.
  - name: Compliance
    description: Operations related to compliance.
  - name: Reconciliation
    description: Operations related to reconciliation.
  - name: Internal - FeeEngine
    description: Internal operations related to fee engine .
  - name: Internal - Tokens
    description: Internal operations related to tokens.
  - name: Internal - Package
    description: Internal operations related to package management.
paths:
  /swaps/estimate_fee:
    post:
      tags:
        - Swaps
      summary: Estimate swap fee
      description: >
        This operation estimates the network fee of a swap activity. You can use
        this operation to estimate the network fee before initiating swap
        activities from MPC Wallets or Custodial Wallets (Web3 Wallets).


        It requires a valid `wallet_id` and `quote_id`, so you need to [get a
        swap
        quote](https://www.cobo.com/developers/v2/api-references/swaps/get-swap-quote)
        first.
      operationId: estimate_swap_fee
      requestBody:
        $ref: '#/components/requestBodies/estimateSwapFeeBody'
      responses:
        '201':
          $ref: '#/components/responses/estimateSwapFeeResponse'
        4XX:
          $ref: '#/components/responses/badRequestError'
        5XX:
          $ref: '#/components/responses/internalServerError'
      security:
        - CoboAuth: []
        - OAuth2: []
components:
  requestBodies:
    estimateSwapFeeBody:
      description: The request body for estimating the network fee of a swap activity.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SwapEstimateFee'
  responses:
    estimateSwapFeeResponse:
      description: The estimated service fee for swap activity successfully retrieved.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/EstimatedFee'
    badRequestError:
      description: >-
        Bad request. Your request contains malformed syntax or invalid
        parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    internalServerError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    SwapEstimateFee:
      type: object
      required:
        - wallet_id
        - quote_id
      properties:
        wallet_id:
          type: string
          description: The ID of the wallet to pay.
          example: 123e4567-e89b-12d3-a456-426614174000
        address:
          type: string
          description: >-
            The wallet address. This property is required when the wallet to pay
            is not a Custodial Wallet (Asset Wallet).
          example: 19AR6YWEGbSoY8UT9Ksy9WrmrZPD5sL4Ku
        quote_id:
          type: string
          description: The ID of the swap quote.
          example: 123e4567-e89b-12d3-a456-426614174001
        fee_type:
          $ref: '#/components/schemas/FeeType'
    EstimatedFee:
      oneOf:
        - $ref: '#/components/schemas/EstimatedFixedFee'
        - $ref: '#/components/schemas/EstimatedEvmEip1559Fee'
        - $ref: '#/components/schemas/EstimatedEvmLegacyFee'
        - $ref: '#/components/schemas/EstimatedUtxoFee'
        - $ref: '#/components/schemas/EstimatedSOLFee'
        - $ref: '#/components/schemas/EstimatedFILFee'
      discriminator:
        propertyName: fee_type
        mapping:
          Fixed: '#/components/schemas/EstimatedFixedFee'
          EVM_EIP_1559: '#/components/schemas/EstimatedEvmEip1559Fee'
          EVM_Legacy: '#/components/schemas/EstimatedEvmLegacyFee'
          UTXO: '#/components/schemas/EstimatedUtxoFee'
          SOL: '#/components/schemas/EstimatedSOLFee'
          FIL: '#/components/schemas/EstimatedFILFee'
    ErrorResponse:
      type: object
      description: The response of a failed request.
      required:
        - error_code
        - error_message
        - error_id
      properties:
        error_code:
          type: integer
          description: >-
            The error code. Refer to [Error codes and status
            codes](https://www.cobo.com/developers/v2/api-references/error-codes)
            for more details.
        error_message:
          type: string
          description: The error description.
        error_id:
          type: string
          description: >-
            The error log ID. You can provide the error ID when submitting a
            ticket to help Cobo to locate the issue.
          example: 0b6ddf19083c4bd1a9ca01bec44b24dd
    FeeType:
      type: string
      enum:
        - Fixed
        - EVM_EIP_1559
        - EVM_Legacy
        - UTXO
        - SOL
        - FIL
      example: EVM_EIP_1559
      default: EVM_EIP_1559
      description: >
        The fee model. Possible values include:

        - `Fixed`: The fixed fee model. 

        - `EVM_EIP_1559`: The EIP-1559 fee model.

        - `EVM_Legacy`: The legacy fee model.

        - `UTXO`: The fee model used in UTXO-based blockchains, such as Bitcoin.

        - `SOL`: The fee model used in Solana.

        - `FIL`: The fee model used in Filecoin.



        Each fee model requires a different set of properties. Switch between
        the above tabs for details.


        To learn more about the fee models, refer to [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
    EstimatedFixedFee:
      type: object
      description: >
        The estimated transaction fee based on the fixed fee model.


        For more details about the fixed fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: Fixed
      required:
        - fee_type
        - token_id
        - fee_amount
      allOf:
        - type: object
          properties:
            fee_type:
              $ref: '#/components/schemas/FeeType'
            token_id:
              type: string
              description: The token used to pay the transaction fee.
              example: TRON
            is_loop:
              type: boolean
              description: >
                Whether the transaction was executed as a [Cobo
                Loop](https://manuals.cobo.com/en/portal/custodial-wallets/cobo-loop)
                transfer.

                - `true`: The transaction was executed as a Cobo Loop transfer.

                - `false`: The transaction was not executed as a Cobo Loop
                transfer.
              example: false
        - $ref: '#/components/schemas/FeeAmount'
    EstimatedEvmEip1559Fee:
      type: object
      description: >
        The estimated transaction fee based on the EIP-1559 fee model.


        For more details about the EIP-1559 fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: EVM_EIP_1559
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: ETH
        slow:
          required:
            - max_fee_per_gas
            - max_priority_fee_per_gas
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmEip1559FeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
            - $ref: '#/components/schemas/FeeFallback'
        recommended:
          required:
            - max_fee_per_gas
            - max_priority_fee_per_gas
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmEip1559FeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
            - $ref: '#/components/schemas/FeeFallback'
        fast:
          required:
            - max_fee_per_gas
            - max_priority_fee_per_gas
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmEip1559FeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
            - $ref: '#/components/schemas/FeeFallback'
    EstimatedEvmLegacyFee:
      type: object
      description: >
        The estimated transaction fee based on the Legacy fee model.


        For more details about the Legacy fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: EVM_Legacy
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: ETH
        slow:
          required:
            - gas_price
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmLegacyFeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
            - $ref: '#/components/schemas/FeeFallback'
        recommended:
          required:
            - gas_price
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmLegacyFeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
            - $ref: '#/components/schemas/FeeFallback'
        fast:
          required:
            - gas_price
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/EvmLegacyFeeBasePrice'
            - $ref: '#/components/schemas/FeeGasLimit'
            - $ref: '#/components/schemas/FeeReserved'
            - $ref: '#/components/schemas/FeeFallback'
    EstimatedUtxoFee:
      type: object
      description: >
        The estimated transaction fee for UTXO-based chains.


        For more details about the UTXO fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: UTXO
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: BTC
        slow:
          required:
            - fee_rate
            - fee_amount
          allOf:
            - $ref: '#/components/schemas/UtxoFeeBasePrice'
            - $ref: '#/components/schemas/FeeAmount'
        recommended:
          required:
            - fee_rate
            - fee_amount
          allOf:
            - $ref: '#/components/schemas/UtxoFeeBasePrice'
            - $ref: '#/components/schemas/FeeAmount'
        fast:
          required:
            - fee_rate
            - fee_amount
          allOf:
            - $ref: '#/components/schemas/UtxoFeeBasePrice'
            - $ref: '#/components/schemas/FeeAmount'
    EstimatedSOLFee:
      type: object
      description: >
        The estimated transaction fee based on the SOL fee model.


        For more details about the SOL fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: SOL
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: ETH
        slow:
          required:
            - compute_unit_price
            - compute_unit_limit
            - base_fee
          allOf:
            - $ref: '#/components/schemas/SOLComputeUnit'
            - $ref: '#/components/schemas/SOLBase'
        recommended:
          required:
            - compute_unit_price
            - compute_unit_limit
            - base_fee
          allOf:
            - $ref: '#/components/schemas/SOLComputeUnit'
            - $ref: '#/components/schemas/SOLBase'
        fast:
          required:
            - compute_unit_price
            - compute_unit_limit
            - base_fee
          allOf:
            - $ref: '#/components/schemas/SOLComputeUnit'
            - $ref: '#/components/schemas/SOLBase'
    EstimatedFILFee:
      type: object
      description: >
        The estimated transaction fee based on the FIL fee model.


        For more details about the FIL fee model, see [Fee
        models](https://www.cobo.com/developers/v2/guides/transactions/estimate-fees#fee-models).
      title: FIL
      required:
        - fee_type
        - token_id
        - recommended
      properties:
        fee_type:
          $ref: '#/components/schemas/FeeType'
        token_id:
          type: string
          description: The token used to pay the transaction fee.
          example: ETH
        slow:
          required:
            - gas_premium
            - gas_fee_cap
            - gas_base
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/FILPrice'
            - $ref: '#/components/schemas/FILBase'
        recommended:
          required:
            - gas_premium
            - gas_fee_cap
            - gas_base
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/FILPrice'
            - $ref: '#/components/schemas/FILBase'
        fast:
          required:
            - gas_premium
            - gas_fee_cap
            - gas_base
            - gas_limit
          allOf:
            - $ref: '#/components/schemas/FILPrice'
            - $ref: '#/components/schemas/FILBase'
    FeeAmount:
      type: object
      description: The transaction fee.
      properties:
        fee_amount:
          type: string
          description: The transaction fee that you need to pay for the transaction.
          example: '0.1'
    EvmEip1559FeeBasePrice:
      type: object
      properties:
        max_fee_per_gas:
          type: string
          description: The maximum gas fee per gas unit used on the chain, in wei.
          example: '9000000000000'
        max_priority_fee_per_gas:
          type: string
          description: >-
            The maximum priority fee per gas unit used, in wei. The maximum
            priority fee represents the highest amount of miner tips that you
            are willing to pay for your transaction.
          example: '1000000000000'
    FeeGasLimit:
      type: object
      properties:
        gas_limit:
          type: string
          description: >-
            The gas limit. It represents the maximum number of gas units that
            you are willing to pay for the execution of a transaction or
            Ethereum Virtual Machine (EVM) operation. The gas unit cost of each
            operation varies.
          example: '21000'
    FeeReserved:
      type: object
      properties:
        reserved_fee:
          type: string
          description: >-
            The estimated fee required for submitting the transaction data to L1
            (Layer 1), measured in wei.
          example: '1000000000000'
    FeeFallback:
      type: object
      description: The fallback information of an estimated transaction fee.
      properties:
        fallback:
          type: boolean
          description: >
            Whether the estimated transaction fee is generated by Cobo's
            fallback mechanism. Cobo uses the fallback mechanism when a normal
            fee estimation cannot be completed, for example when the blockchain
            node fails to estimate the gas limit.

            - `true`: The returned `gas_limit` is produced by Cobo's internal
            fallback strategy instead of a node estimation. It can differ
            significantly from the gas units that the transaction actually
            consumes, and a transaction submitted with this value may fail.
            Check `fallback_reason` and use the value with caution.

            - `false`: The returned fee values are generated by a normal fee
            estimation.
          example: true
        fallback_reason:
          type: string
          description: >
            The reason why Cobo's fallback mechanism was used, such as the error
            message returned by the blockchain node. This property is returned
            only when `fallback` is `true`.
          example: 'execution reverted: ERC20: transfer amount exceeds balance'
    EvmLegacyFeeBasePrice:
      type: object
      properties:
        gas_price:
          type: string
          description: >-
            The gas price, in wei. The gas price represents the amount of ETH
            that must be paid to validators for processing transactions per gas
            unit used.
          example: '100000000'
    UtxoFeeBasePrice:
      type: object
      properties:
        fee_rate:
          type: string
          description: >-
            The fee rate in sat/vByte. The fee rate represents the satoshis you
            are willing to pay for each byte of data that your transaction will
            consume on the blockchain.
          example: '50'
    SOLComputeUnit:
      type: object
      properties:
        compute_unit_price:
          type: string
          description: >-
            The price paid per compute unit. This value determines the priority
            fee for the transaction, allowing you to increase inclusion
            probability in congested conditions.
          example: '0.0001'
        compute_unit_limit:
          type: string
          description: >-
            The maximum number of compute units your transaction is allowed to
            consume. It sets an upper bound on computational resource usage to
            prevent overload.
          example: '200000'
    SOLBase:
      type: object
      properties:
        base_fee:
          type: string
          description: >-
            A fixed fee, in lamports, charged per signature. The default is
            5,000 per signature.
          example: '5000'
        rent_amount:
          type: string
          description: >
            The one-time rent, in lamports, required to create the destination's
            Associated Token Account (ATA) for this token when it does not exist
            yet.


            In fee estimate responses, this field returns the current on-chain
            rent if the destination address has no ATA for the token, and is
            empty otherwise. You can call [Estimate transaction
            fee](https://www.cobo.com/developers/v2/api-references/transactions/estimate-transaction-fee)
            before submitting a transaction to check whether it will incur ATA
            rent. The result reflects the destination at estimation time; if the
            ATA is closed before the transaction is built, the transaction still
            creates it and incurs the rent.


            In transaction records, this field keeps the value estimated when
            the transaction was created and is not updated from on-chain data.
            `estimated_fee_used` includes this rent, while `fee_used` does not.
          example: '1488440'
    FILPrice:
      type: object
      properties:
        gas_premium:
          type: string
          description: >-
            An optional additional fee that users can include to prioritize
            their transactions over others. It acts like a tip to incentivize
            miners to select and include your transaction over transactions with
            only the base fee.
          example: '522508'
        gas_fee_cap:
          type: string
          description: >-
            The gas_fee_cap is a user-defined limit on how much they are willing
            to pay per unit of gas.
          example: '522768'
        gas_limit:
          type: string
          description: The maximum amount of gas your transaction is allowed to consume.
          example: '500'
    FILBase:
      type: object
      properties:
        gas_base:
          type: string
          description: >-
            This is the minimum fee required to include a transaction in a
            block. It is determined by the network's congestion level, which
            adjusts to maintain a target block utilization rate. The base fee is
            burned, reducing the total supply of Filecoin over time.
          example: '100'
  securitySchemes:
    CoboAuth:
      type: apiKey
      in: header
      name: BIZ-API-KEY
      description: >
        The API key. For more details, refer to [API
        key](https://www.cobo.com/developers/v2/guides/overview/cobo-auth#api-key).


        In the API playground, enter your [API
        secret](https://www.cobo.com/developers/v2/guides/overview/cobo-auth#api-secret),
        and your API key will be accordingly calculated.
    OAuth2:
      type: oauth2
      description: >-
        The [Org Access
        Token](https://www.cobo.com/developers/v2/apps/org-access-tokens). Use
        this authorization method only if you are developing Cobo Portal Apps
        for installation and use across different organizations.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.cobo.com/authorize
          tokenUrl: https://auth.cobo.com/oauth/token
          scopes:
            address_book.read: Read address book
            api_key.read: Read API key information
            callback.read: Read callback message
            callback.resend: Resend callback message
            wallet.create: Create wallet
            wallet.read: Read wallet information
            wallet.update: Update wallet information
            wallet.delete: Delete wallet information
            wallet.create_address: Create wallet address
            wallet.manage_utxo: Manage UTXO
            mpc_project.create: Create MPC project
            mpc_project.read: Read MPC project information
            mpc_project.update: Update MPC project information
            mpc_vault.create: Create MPC Vault
            mpc_vault.read: Read MPC Vault information
            mpc_vault.update: Update MPC Vault information
            mpc_key_group.create: Create MPC key group
            mpc_key_group.read: Read MPC key group information
            mpc_key_group.update: Update MPC key group information
            mpc_key_group.delete: Delete MPC key group information
            transaction.read: Read transaction information
            transaction.withdraw: Make withdrawals
            transaction.estimate_fee: Estimate transaction fee
            transaction.contract_call: Initiate contract calls
            transaction.message_sign: Initiate message signings
            transaction.stake: Stake assets
            transaction.unstake: Unstake assets
            transaction.unstake_withdraw: Withdraw unstaked assets
            transaction.manage: Manage ongoing transactions
            transaction.update: Update transaction notes
            travel_rule.read: Read travel rule information
            travel_rule.edit: Edit travel rule information
            webhook.read: Read webhook URLs/events
            webhook.edit: Edit webhook URLs
            webhook.resend: Resend webhook events
            payment_orders_payin.create: Create pay-in order
            payment_orders_payin.read: Read pay-in order information
            payment_orders_payin.update: Update pay-in order
            payment_orders_refund.create: Create payment refund order
            payment_orders_refund.read: Read payment refund order information
            payment_settlement.create: Create payment settlement request
            payment_settlement.read: Read payment settlement request information
            payment_merchant.create: Create payment merchant
            payment_merchant.read: Read payment merchant information
            payment_merchant.update: Update payment merchant
            payment_forced_sweep.create: Create payment force sweep request
            payment_forced_sweep.read: Read payment force sweep request information
            compliance_funds.refund: Refund compliance funds request
            compliance_funds.isolate: Isolate compliance funds request
            compliance_funds.unfreeze: Unfreeze compliance funds request
            compliance_funds.read: Read compliance funds request information
            compliance_kyt_review.update: Update KYT review status
            compliance_kyt_decisions.update: Update KYT decision status
            compliance_kyt_status.read: Read KYT screening status
            compliance_kya_screenings.create: Create KYA address screening requests
            compliance_kya_screenings.read: Read KYA address screening results

````