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

> This operation retrieves all tokens supported by a specific wallet type or subtype. 

It provides details such as token ID, token symbol, and other relevant information. If you do not specify a wallet type, this operation returns a combination of tokens supported by each wallet type. You can filter the result by token IDs or chain IDs. The token metadata is publicly available without any permission restrictions.

Cobo Portal currently supports over 80 blockchains and more than 3,000 tokens. In addition to this operation, you can also view the full list of supported tokens [here](https://www.cobo.com/tokens). We regularly update the list with new additions. If you want to request support for a specific chain or token, please [contact us](https://www.cobo.com/contact).


<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.list_supported_tokens200_response import (
      ListSupportedTokens200Response,
  )
  from cobo_waas2.models.wallet_subtype import WalletSubtype
  from cobo_waas2.models.wallet_type import WalletType
  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.WalletsApi(api_client)
      wallet_type = cobo_waas2.WalletType()
      wallet_subtype = cobo_waas2.WalletSubtype()
      chain_ids = "BTC,ETH"
      token_ids = "ETH_USDT,ETH_USDC"
      limit = 10
      before = "RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGmk1"
      after = "RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGSAk"

      try:
          # List supported tokens
          api_response = api_instance.list_supported_tokens(
              wallet_type=wallet_type,
              wallet_subtype=wallet_subtype,
              chain_ids=chain_ids,
              token_ids=token_ids,
              limit=limit,
              before=before,
              after=after,
          )
          print("The response of WalletsApi->list_supported_tokens:\n")
          pprint(api_response)
      except Exception as e:
          print("Exception when calling WalletsApi->list_supported_tokens: %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.WalletsApi;
  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>");
      WalletsApi apiInstance = new WalletsApi();
      WalletType walletType = WalletType.fromValue("Custodial");
      WalletSubtype walletSubtype = WalletSubtype.fromValue("Asset");
      String chainIds = "BTC,ETH";
      String tokenIds = "ETH_USDT,ETH_USDC";
      Integer limit = 10;
      String before = "RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGmk1";
      String after = "RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGSAk";
      try {
        ListSupportedTokens200Response result =
            apiInstance.listSupportedTokens(
                walletType, walletSubtype, chainIds, tokenIds, limit, before, after);
        System.out.println(result);
      } catch (ApiException e) {
        System.err.println("Exception when calling WalletsApi#listSupportedTokens");
        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() {
  	walletType := coboWaas2.WalletType("Custodial")
  	walletSubtype := coboWaas2.WalletSubtype("Asset")
  	chainIds := "BTC,ETH"
  	tokenIds := "ETH_USDT,ETH_USDC"
  	limit := int32(10)
  	before := "RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGmk1"
  	after := "RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGSAk"

  	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.WalletsAPI.ListSupportedTokens(ctx).
  		WalletType(walletType).
  		WalletSubtype(walletSubtype).
  		ChainIds(chainIds).
  		TokenIds(tokenIds).
  		Limit(limit).
  		Before(before).
  		After(after).
  		Execute()
  	if err != nil {
  		fmt.Fprintf(os.Stderr, "Error when calling `WalletsAPI.ListSupportedTokens``: %v\n", err)
  		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
  	}
  	// response from `ListSupportedTokens`: ListSupportedTokens200Response
  	fmt.Fprintf(os.Stdout, "Response from `WalletsAPI.ListSupportedTokens`: %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.WalletsApi();
  const opts = {
    wallet_type: "Custodial",
    wallet_subtype: "Asset",
    chain_ids: "BTC,ETH",
    token_ids: "ETH_USDT,ETH_USDC",
    limit: 10,
    before: "RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGmk1",
    after: "RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGSAk",
  };
  apiInstance.listSupportedTokens(opts).then(
    (data) => {
      console.log("API called successfully. Returned data: " + data);
    },
    (error) => {
      console.error(error);
    },
  );

  ```
</RequestExample>


## OpenAPI

````yaml get /wallets/tokens
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/tokens:
    get:
      tags:
        - Wallets
      summary: List supported tokens
      description: >
        This operation retrieves all tokens supported by a specific wallet type
        or subtype. 


        It provides details such as token ID, token symbol, and other relevant
        information. If you do not specify a wallet type, this operation returns
        a combination of tokens supported by each wallet type. You can filter
        the result by token IDs or chain IDs. The token metadata is publicly
        available without any permission restrictions.


        Cobo Portal currently supports over 80 blockchains and more than 3,000
        tokens. In addition to this operation, you can also view the full list
        of supported tokens [here](https://www.cobo.com/tokens). We regularly
        update the list with new additions. If you want to request support for a
        specific chain or token, please [contact
        us](https://www.cobo.com/contact).
      operationId: list_supported_tokens
      parameters:
        - $ref: '#/components/parameters/optionalWalletTypeParam'
        - $ref: '#/components/parameters/optionalWalletSubtypeParam'
        - $ref: '#/components/parameters/optionalChainIdListWithLimitParam'
        - $ref: '#/components/parameters/optionalTokenListIdWithLimitParam'
        - $ref: '#/components/parameters/limit500Param'
        - $ref: '#/components/parameters/beforeParam'
        - $ref: '#/components/parameters/afterParam'
      responses:
        '200':
          $ref: '#/components/responses/getTokensResponse'
        4XX:
          $ref: '#/components/responses/badRequestError'
        5XX:
          $ref: '#/components/responses/internalServerError'
components:
  parameters:
    optionalWalletTypeParam:
      name: wallet_type
      in: query
      required: false
      description: >
        The wallet type.


        - `Custodial`: [Custodial
        Wallets](https://manuals.cobo.com/en/portal/custodial-wallets/introduction)


        - `MPC`: [MPC
        Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/introduction)


        - `SmartContract`: [Smart Contract
        Wallets](https://manuals.cobo.com/en/portal/smart-contract-wallets/introduction)


        - `Exchange`: [Exchange
        Wallets](https://manuals.cobo.com/en/portal/exchange-wallets/introduction)
      schema:
        $ref: '#/components/schemas/WalletType'
    optionalWalletSubtypeParam:
      name: wallet_subtype
      in: query
      required: false
      description: |
        The wallet subtype.

        - `Asset`: Custodial Wallets (Asset Wallets)

        - `Web3`: Custodial Wallets (Web3 Wallets)

        - `Main`: Exchange Wallets (Main Account)

        - `Sub`: Exchange Wallets (Sub Account)

        - `Org-Controlled`: MPC Wallets (Organization-Controlled Wallets)

        - `User-Controlled`: MPC Wallets (User-Controlled Wallets)

        - `Safe{Wallet}`: Smart Contract Wallets (Safe{Wallet})
      schema:
        $ref: '#/components/schemas/WalletSubtype'
    optionalChainIdListWithLimitParam:
      name: chain_ids
      in: query
      required: false
      description: >-
        A list of chain IDs(Supports up to 500), separated by comma. The chain
        ID is the unique identifier of a blockchain. You can retrieve the IDs of
        all the chains you can use by calling [List enabled
        chains](https://www.cobo.com/developers/v2/api-references/wallets/list-enabled-chains).
      schema:
        type: string
        description: A list of chain IDs, separated by comma.
      example: BTC,ETH
    optionalTokenListIdWithLimitParam:
      name: token_ids
      in: query
      required: false
      description: >-
        A list of token IDs(Supports up to 500), separated by comma. The token
        ID is the unique identifier of a token. You can retrieve the IDs of all
        the tokens you can use by calling [List enabled
        tokens](https://www.cobo.com/developers/v2/api-references/wallets/list-enabled-tokens).
      schema:
        type: string
        description: A list of token IDs, separated by comma.
      example: ETH_USDT,ETH_USDC
    limit500Param:
      name: limit
      in: query
      description: The maximum number of objects to return. The value range is [1, 500].
      required: false
      schema:
        type: integer
        format: int32
        default: 10
      example: 10
    beforeParam:
      name: before
      in: query
      description: >
        A cursor indicating the position before the current page. This value is
        generated by Cobo and returned in the response. If you are paginating
        forward from the beginning, you do not need to provide it on the first
        request. When paginating backward (to the previous page), you should
        pass the before value returned from the last response.
      required: false
      schema:
        type: string
      example: RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGmk1
    afterParam:
      name: after
      in: query
      description: >
        A cursor indicating the position after the current page. This value is
        generated by Cobo and returned in the response. You do not need to
        provide it on the first request. When paginating forward (to the next
        page), you should pass the after value returned from the last response.
      required: false
      schema:
        type: string
      example: RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGSAk
  responses:
    getTokensResponse:
      description: The request was successful.
      content:
        application/json:
          schema:
            type: object
            properties:
              data:
                type: array
                items:
                  $ref: '#/components/schemas/ExtendedTokenInfo'
              pagination:
                $ref: '#/components/schemas/Pagination'
    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:
    WalletType:
      type: string
      enum:
        - Custodial
        - MPC
        - SmartContract
        - Exchange
      example: Custodial
      description: >
        The wallet type. Possible values include:


        - `Custodial`: [Custodial
        Wallets](https://manuals.cobo.com/en/portal/custodial-wallets/introduction)


        - `MPC`: [MPC
        Wallets](https://manuals.cobo.com/en/portal/mpc-wallets/introduction)


        - `SmartContract`: [Smart Contract
        Wallets](https://manuals.cobo.com/en/portal/smart-contract-wallets/introduction)


        - `Exchange`: [Exchange
        Wallets](https://manuals.cobo.com/en/portal/exchange-wallets/introduction)
    WalletSubtype:
      type: string
      enum:
        - Asset
        - Web3
        - Org-Controlled
        - User-Controlled
        - Safe{Wallet}
        - Main
        - Sub
      example: Asset
      description: >
        The wallet sub-type. Possible values include:

        - `Asset`: Custodial Wallets (Asset Wallets).

        - `Web3`: Custodial Wallets (Web3 Wallets).

        - `Org-Controlled`: MPC Wallets (Organization-Controlled Wallets).

        - `User-Controlled`: MPC Wallets (User-Controlled Wallets).

        - `Safe{Wallet}`: Smart Contract Wallets (Safe).

        - `Main`: Exchange Wallets (Main Account).

        - `Sub`: Exchange Wallets (Sub Account).


        Each wallet sub-type requires a different set of properties. Switch
        between the above tabs for details.
    ExtendedTokenInfo:
      type: object
      description: >-
        The token information, including whether the token can be deposited or
        withdrawn.
      allOf:
        - type: object
          properties:
            can_deposit:
              type: boolean
              description: |
                Whether the token can be deposited.

                - `true`: The token can be deposited.

                - `false`: The token cannot be deposited.
              default: false
              example: false
            can_withdraw:
              type: boolean
              description: |
                Whether the token can be withdrawn.

                - `true`: The token can be withdrawn.

                - `false`: The token cannot be withdrawn.
              default: false
              example: false
        - $ref: '#/components/schemas/TokenInfo'
    Pagination:
      type: object
      description: The pagination information of the returned data.
      required:
        - before
        - after
        - total_count
      properties:
        before:
          type: string
          example: RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGmk1
          description: >
            An object ID used to retrieve records before the specified object,
            indicating earlier or smaller records relative to the current
            dataset. You can use it to paginate backwards. 


            If empty, it means you have reached the start of the data.  


            Most API endpoints sort by object ID, but some use other fields
            depending on the endpoint.
        after:
          type: string
          example: RqeEoTkgKG5rpzqYzg2Hd3szmPoj2cE7w5jWwShz3C1vyGSAk
          description: >
            An object ID used to retrieve records after the specified object,
            indicating newer or larger records relative to the current dataset.
            You can use it to paginate forwards.  


            If empty, it means you have reached the end of the data.  


            Most API endpoints sort by object ID, but some use other fields
            depending on the endpoint.
        total_count:
          type: integer
          example: 10000
          description: >-
            The total number of records that match the query criteria,
            unaffected by the pagination parameters (`before` , `after`, and
            `limit`).
    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
    TokenInfo:
      type: object
      description: The token information.
      required:
        - token_id
        - chain_id
      properties:
        token_id:
          type: string
          description: The token ID, which is the unique identifier of a token.
          example: ETH_USDT
        chain_id:
          type: string
          description: The ID of the chain on which the token operates.
          example: ETH
        asset_id:
          type: string
          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.
          example: USDT
        symbol:
          type: string
          description: The token symbol, which is the abbreviated name of a token.
          example: USDT
        name:
          type: string
          description: The token name, which is the full name of a token.
          example: Tether USDT
        decimal:
          type: integer
          description: The token decimal.
          example: 18
        icon_url:
          type: string
          description: The URL of the token icon.
          example: https://d.cobo.com/public/logos/USDT.png
        token_address:
          type: string
          description: The token address, if applicable.
          example: '0xdAC17F958D2ee523a2206206994597C13D831ec7'
        fee_token_id:
          type: string
          description: >-
            The fee token ID. A fee token is the token with which you pay
            transaction fees.
          example: ETH
        can_deposit:
          type: boolean
          description: Whether deposits are enabled for this token.
          example: true
        can_withdraw:
          type: boolean
          description: Whether withdrawals are enabled for this token.
          example: true
        dust_threshold:
          type: string
          description: >
            The minimum withdrawal amount for Custodial Wallets. If your
            withdrawal amount is smaller than this threshold, the withdrawal
            request will receive an error.


            Note: [Cobo
            Loop](https://manuals.cobo.com/en/portal/custodial-wallets/cobo-loop)
            transfers do not have this limitation.
          example: '0.00000546'
        custodial_minimum_deposit_threshold:
          type: string
          description: >
            The minimum deposit amount for Custodial Wallets. If the amount you
            deposit to a Custodial Wallet is smaller than this threshold, the
            deposit will not show up on Cobo Portal or trigger any webhook
            events.


            Note: [Cobo
            Loop](https://manuals.cobo.com/en/portal/custodial-wallets/cobo-loop)transfers
            do not have this limitation.
          example: '0.0001'
        asset_model_type:
          $ref: '#/components/schemas/TokenAssetModelType'
    TokenAssetModelType:
      type: string
      enum:
        - Account
        - UTXO
      example: Account
      description: >
        The asset model type. Possible values include:


        - `Account`: The account model. This model tracks the balances of user
        accounts, similar to the traditional banking system.


        - `UTXO`: The UTXO model. This model tracks individual outputs of a
        transaction rather than account balances. Each transaction consists of
        inputs (previous UTXOs) and outputs (new UTXOs).
  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.

````