> ## 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.

# List supported chains

> This operation retrieves all the chains supported by a specified exchange for a given asset. 

You can use this operation to confirm whether you can transfer an asset from or to your Exchange Wallet when using a specific chain.


<Tip>
  Try [Cobo WaaS Skill](/v2/guides/overview/cobo-waas-skill) 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 🚀
</Tip>

<RequestExample>
  ```python Python theme={null}
  import cobo_waas2
  from cobo_waas2.models.chain_info import ChainInfo
  from cobo_waas2.models.exchange_id import ExchangeId
  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.WalletsExchangeWalletApi(api_client)
      exchange_id = cobo_waas2.ExchangeId()
      asset_id = "USDT"

      try:
          # List supported chains
          api_response = api_instance.list_supported_chains_for_exchange(
              exchange_id, asset_id
          )
          print(
              "The response of WalletsExchangeWalletApi->list_supported_chains_for_exchange:\n"
          )
          pprint(api_response)
      except Exception as e:
          print(
              "Exception when calling WalletsExchangeWalletApi->list_supported_chains_for_exchange: %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.WalletsExchangeWalletApi;
  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>");
      WalletsExchangeWalletApi apiInstance = new WalletsExchangeWalletApi();
      ExchangeId exchangeId = ExchangeId.fromValue("binance");
      String assetId = "USDT";
      try {
        List<ChainInfo> result = apiInstance.listSupportedChainsForExchange(exchangeId, assetId);
        System.out.println(result);
      } catch (ApiException e) {
        System.err.println(
            "Exception when calling WalletsExchangeWalletApi#listSupportedChainsForExchange");
        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() {
  	exchangeId := coboWaas2.ExchangeId("binance")
  	assetId := "USDT"

  	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.WalletsExchangeWalletAPI.ListSupportedChainsForExchange(ctx, exchangeId, assetId).
  		Execute()
  	if err != nil {
  		fmt.Fprintf(
  			os.Stderr,
  			"Error when calling `WalletsExchangeWalletAPI.ListSupportedChainsForExchange``: %v\n",
  			err,
  		)
  		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
  	}
  	// response from `ListSupportedChainsForExchange`: []ChainInfo
  	fmt.Fprintf(
  		os.Stdout,
  		"Response from `WalletsExchangeWalletAPI.ListSupportedChainsForExchange`: %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.WalletsExchangeWalletApi();
  const exchange_id = new CoboWaas2.ExchangeId();
  const asset_id = "USDT";
  apiInstance.listSupportedChainsForExchange(exchange_id, asset_id).then(
    (data) => {
      console.log("API called successfully. Returned data: " + data);
    },
    (error) => {
      console.error(error);
    },
  );

  ```
</RequestExample>


## OpenAPI

````yaml get /wallets/exchanges/{exchange_id}/assets/{asset_id}/chains
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 four 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)

    - Programmatic control of smart contract wallets such as Safe{Wallet} with
    fine-grained access controls

    - 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: Wallets - Smart Contract Wallets
    description: Operations related to smart contract 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.
paths:
  /wallets/exchanges/{exchange_id}/assets/{asset_id}/chains:
    parameters:
      - $ref: '#/components/parameters/exchangeIdParam'
      - name: asset_id
        in: path
        required: true
        description: >-
          (This concept applies to Exchange Wallets only) The asset ID. An asset
          ID is the unique identifier of the asset held within your linked
          exchange account. You can get the ID of the assets supported by an
          exchanges by calling [List supported
          assets](https://www.cobo.com/developers/v2/api-references/wallets--exchange-wallet/list-supported-assets).
        schema:
          type: string
        example: USDT
    get:
      tags:
        - Wallets - Exchange Wallet
      summary: List supported chains
      description: >
        This operation retrieves all the chains supported by a specified
        exchange for a given asset. 


        You can use this operation to confirm whether you can transfer an asset
        from or to your Exchange Wallet when using a specific chain.
      operationId: list_supported_chains_for_exchange
      responses:
        '200':
          $ref: '#/components/responses/getChainsByAssetIdResponse'
        4XX:
          $ref: '#/components/responses/badRequestError'
        5XX:
          $ref: '#/components/responses/internalServerError'
components:
  parameters:
    exchangeIdParam:
      name: exchange_id
      in: path
      required: true
      description: |
        The ID of the exchange. Possible values include:
          - `binance`: Binance.
          - `okx`: OKX.
          - `deribit`: Deribit.
          - `bybit`: Bybit.
          - `gate`: Gate.io
          - `bitget`: Bitget
          - `bitmart`: BitMart
          - `bitfinex`: Bitfinex
      schema:
        $ref: '#/components/schemas/ExchangeId'
  responses:
    getChainsByAssetIdResponse:
      description: The request was successful.
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ChainInfo'
    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:
    ExchangeId:
      type: string
      enum:
        - binance
        - okx
        - deribit
        - bybit
        - gate
        - bitget
        - bitmart
        - bitfinex
      description: |
        The ID of the exchange. Possible values include:
          - `binance`: Binance.
          - `okx`: OKX.
          - `deribit`: Deribit.
          - `bybit`: Bybit.
          - `gate`: Gate.io
          - `bitget`: Bitget
          - `bitmart`: BitMart
          - `bitfinex`: Bitfinex
      example: binance
    ChainInfo:
      type: object
      description: The chain information.
      required:
        - chain_id
      properties:
        chain_id:
          type: string
          description: The chain ID, which is the unique identifier of a blockchain.
          example: ETH
        symbol:
          type: string
          description: >-
            The chain symbol for display purposes, which is the abbreviated name
            of a chain.
          example: ETH
        icon_url:
          type: string
          description: The URL of the chain icon.
          example: https://d.cobo.com/public/logos/ETH.png
        chain_identifier:
          type: string
          description: >-
            A functional identifier used to group blockchains with similar
            execution logic. For example, `ETH` for all EVM-compatible chains
            (Ethereum, BNB Smart Chain, Polygon).
          example: ETH
        explorer_tx_url:
          type: string
          description: >-
            The transaction URL pattern on the blockchain explorer. You can use
            it to concatenate the transaction URLs.
          example: https://etherscan.io/tx/{txn_id}
        explorer_address_url:
          type: string
          description: >-
            The address URL pattern on the blockchain explorer. You can use it
            to concatenate the address URLs.
          example: https://etherscan.io/address/{address}
        require_memo:
          type: boolean
          description: Whether the chain requires a memo.
          example: false
        confirming_threshold:
          type: integer
          format: int32
          description: >-
            The number of confirmations required for an on-chain transaction,
            such as 64 for Ethereum.
          example: 15
        coinbase_maturity:
          type: integer
          format: int32
          description: >-
            The number of confirmations required before a coinbase transaction
            is considered mature and can be spent, for example, 100
            confirmations for BTC.
          example: 15
        caip2_chain_id:
          type: string
          description: >-
            A standardized, unique identifier for blockchain networks (like
            eip155:1 for Ethereum) that combines a namespace and a reference to
            ensure cross-chain compatibility.
          example: eip155:1
    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
  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.

````