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

# List tokens

> Returns every token the API can quote, with decimals and the gasless funding standards each supports.

Returns every token the API can quote, with decimals and the gasless standards each token supports for quote funding (`permit3`, `permit2`, `erc-3009`) and deposit-address funding (`erc-2612`, `erc-3009`). `chainId` filters to one chain. A listed token does not guarantee that every pair and amount can be quoted.

Requires `x-api-key`. Partner pricing, attribution, and enabled features are tied to the key. Without a key the gateway answers `403` with a plain JSON body (`{"Message": "User is not authorized ..."}`); a key that is unknown, revoked, or not enabled for v1 answers `401 invalid-api-key`. No requests-per-second quota is published. Handle `429` and honor `Retry-After` when present.

Examples use real mainnet token and contract addresses with placeholder wallets, hashes, signatures, and IDs.


## OpenAPI

````yaml api-v1.openapi.json GET /v1/tokens
openapi: 3.1.0
info:
  title: Eco API
  version: v1
  description: >-
    Reference for the Eco API at https://api.eco.com/v1: quotes, chain and token
    discovery, gasless funding, intent status, and Circle Gateway fast deposits.
    Every operation requires an API key except the Circle Gateway operations,
    which are open.
servers:
  - url: https://api.eco.com
    description: Eco API
security: []
tags:
  - name: quotes
  - name: intents
  - name: status
  - name: discovery
  - name: circle-gateway
paths:
  /v1/tokens:
    get:
      tags:
        - discovery
      summary: List tokens
      description: >-
        Returns every token the API can quote, with decimals and the gasless
        standards each token supports for quote funding (`permit3`, `permit2`,
        `erc-3009`) and deposit-address funding (`erc-2612`, `erc-3009`).
        `chainId` filters to one chain. A listed token does not guarantee that
        every pair and amount can be quoted.


        Requires `x-api-key`. Partner pricing, attribution, and enabled features
        are tied to the key. Without a key the gateway answers `403` with a
        plain JSON body (`{"Message": "User is not authorized ..."}`); a key
        that is unknown, revoked, or not enabled for v1 answers `401
        invalid-api-key`.


        No requests-per-second quota is published. Handle `429` and honor
        `Retry-After` when present.


        Examples use real mainnet token and contract addresses with placeholder
        wallets, hashes, signatures, and IDs.
      operationId: tokens.list
      parameters:
        - name: chainId
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
          description: 'Returns only tokens on this chain. Example: `8453` for Base.'
          example: 8453
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  tokens:
                    type: array
                    items:
                      type: object
                      properties:
                        chainId:
                          type: integer
                        address:
                          type: string
                          description: >-
                            Address on the relevant chain: `0x…` hex for EVM
                            chains, base58 for Solana, `T…` base58 for Tron.
                        symbol:
                          type:
                            - string
                            - 'null'
                        decimals:
                          type:
                            - integer
                            - 'null'
                        supports:
                          type: object
                          properties:
                            quote:
                              type: array
                              items:
                                type: string
                                enum:
                                  - permit3
                                  - permit2
                                  - erc-3009
                                  - erc-2612
                            depositAddress:
                              type: array
                              items:
                                type: string
                                enum:
                                  - permit3
                                  - permit2
                                  - erc-3009
                                  - erc-2612
                          required:
                            - quote
                            - depositAddress
                      required:
                        - chainId
                        - address
                        - symbol
                        - decimals
                        - supports
                  nextCursor:
                    type:
                      - string
                      - 'null'
                required:
                  - tokens
                  - nextCursor
              examples:
                tokens:
                  summary: >-
                    Abridged live response on 2026-09-15 (32 tokens across 13
                    chains in full)
                  value:
                    tokens:
                      - chainId: 1
                        address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
                        symbol: USDC
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                      - chainId: 1
                        address: '0xdAC17F958D2ee523a2206206994597C13D831ec7'
                        symbol: USDT
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                      - chainId: 10
                        address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'
                        symbol: USDC
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                      - chainId: 8453
                        address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                        symbol: USDC
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                      - chainId: 8453
                        address: '0x1217BfE6c773EEC6cc4A38b5Dc45B92292B6E189'
                        symbol: oUSDT
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                      - chainId: 42161
                        address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                        symbol: USDC
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                      - chainId: 1399811149
                        address: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                        symbol: USDC
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                    nextCursor: null
                one-chain:
                  summary: GET /v1/tokens?chainId=8453 (abridged)
                  value:
                    tokens:
                      - chainId: 8453
                        address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                        symbol: USDC
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                      - chainId: 8453
                        address: '0x1217BfE6c773EEC6cc4A38b5Dc45B92292B6E189'
                        symbol: oUSDT
                        decimals: 6
                        supports:
                          quote:
                            - erc-3009
                            - permit2
                            - permit3
                          depositAddress:
                            - erc-2612
                            - erc-3009
                    nextCursor: null
        '400':
          description: Request failed validation
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/invalid-request
                title: Request failed validation
                status: 400
                code: invalid-request
                requestId: f371e43e6fd4406b10e19487b3170edf
        '401':
          description: >-
            The supplied x-api-key is unknown, revoked, or not enabled for the
            v1 API. Returned for every v1 endpoint by the gateway, with
            Content-Type application/json.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/invalid-api-key
                title: API key is missing, unknown, or revoked
                status: 401
                code: invalid-api-key
                requestId: 98e4c42f-9c70-4539-843e-8d31803001e6
        '403':
          description: >-
            No API key supplied. The gateway rejects the request before it
            reaches the API, with a plain JSON body.
          content:
            application/json:
              example:
                Message: >-
                  User is not authorized to access this resource with an
                  explicit deny in an identity-based policy
        '429':
          description: Rate limit exceeded
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/rate-limit-exceeded
                title: Rate limit exceeded
                status: 429
                code: rate-limit-exceeded
                requestId: 1eac3d6cc2aafa524b0c47a039576f8c
        '500':
          description: Internal error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
              example:
                type: https://api.eco.com/v1/errors/internal-error
                title: Internal error
                status: 500
                code: internal-error
                requestId: 02dabcf0f4e3def9a6091526d3d21022
        default:
          description: Error (RFC 9457 problem+json; see x-error-catalog)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - ApiKey: []
components:
  schemas:
    Problem:
      type: object
      properties:
        type:
          type: string
          format: uri
        title:
          type: string
          minLength: 1
        status:
          type: integer
          minimum: 400
          maximum: 599
        code:
          type: string
          description: >-
            Stable, machine-readable error code from the catalog. Branch on this
            and `status`, not on `title` or `detail`.
        detail:
          type: string
        instance:
          type: string
        legacyCode:
          type: string
          description: >-
            The pre-v1 numeric error code this problem maps to, for integrations
            migrating from the older services.
        solverErrors:
          type: array
          items:
            type: object
            properties:
              solver:
                type: string
                description: >-
                  Address on the relevant chain: `0x…` hex for EVM chains,
                  base58 for Solana, `T…` base58 for Tron.
              solverName:
                type: string
                minLength: 1
              code:
                type: string
                minLength: 1
              message:
                type: string
            required:
              - solver
              - message
        errors:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
                minLength: 1
              detail:
                type: string
                minLength: 1
            required:
              - field
              - detail
          description: Field-level validation failures.
        requestId:
          type: string
          description: >-
            Correlation ID for support. Present on router-served errors;
            deposit-address-served errors carry a short numeric value.
      required:
        - type
        - title
        - status
        - code
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key

````