HTTP API · Discovery

List tokens on a chain

Open in Claude

The curated token list for one chain: natives first, then the ERC-20s SwapsPro resolves by symbol.

GET/api/sdk/v1/tokens
queryREQUIRED
curl "https://www.swaps.pro/api/sdk/v1/tokens?chainId=8453"
not rate limitedcached · 3600s at the edgeno API keyCORS open

Curated, not exhaustive. A token that is not here can still be quoted by passing its contract address as sellToken or buyToken — the list is what resolves by SYMBOL.

decimals is present only when known statically. For anything else, resolve on chain before you convert human amounts.

Parameters#

NameInTypeDescription
chainIdREQUIREDquerynumber | symbolNumeric EVM chain id or SwapsPro chain symbol (BASE, ETH, BTC…). chain is accepted as an alias.

Responses#

Success is the body below. Every error is { "error": string, "code": string } with a matching HTTP status — never a 200 that says no.

When: the chain is known. 23 tokens in the live response for Base; six shown.

{
  "chain": "BASE",
  "chainId": 8453,
  "tokens": [
    {
      "symbol": "ETH",
      "name": "Base",
      "caip": "eip155:8453/slip44:60",
      "chain": "BASE",
      "isToken": false,
      "decimals": 18
    },
    {
      "symbol": "USDC",
      "name": "USD Coin",
      "caip": "eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "chain": "BASE",
      "isToken": true,
      "contract": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "decimals": 6
    },
    {
      "symbol": "WETH",
      "name": "Wrapped Ether",
      "caip": "eip155:8453/erc20:0x4200000000000000000000000000000000000006",
      "chain": "BASE",
      "isToken": true,
      "contract": "0x4200000000000000000000000000000000000006",
      "decimals": 18
    },
    {
      "symbol": "cbBTC",
      "name": "Coinbase Wrapped BTC",
      "caip": "eip155:8453/erc20:0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf",
      "chain": "BASE",
      "isToken": true,
      "contract": "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf",
      "decimals": 8
    },
    {
      "symbol": "cbETH",
      "name": "Coinbase Wrapped Staked ETH",
      "caip": "eip155:8453/erc20:0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22",
      "chain": "BASE",
      "isToken": true,
      "contract": "0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22",
      "decimals": 18
    },
    {
      "symbol": "DAI",
      "name": "Dai Stablecoin",
      "caip": "eip155:8453/erc20:0x50c5725949a6f0c72e6c4a641f24049a917db0cb",
      "chain": "BASE",
      "isToken": true,
      "contract": "0x50c5725949a6f0c72e6c4a641f24049a917db0cb",
      "decimals": 18
    }
  ]
}

Fields worth knowing#

FieldMeaning
caipCAIP-19 asset id — the key /prices takes
isTokenfalse for the chain's native asset
contractERC-20 address, EVM token assets only
mintSPL mint, Solana only
decimalsonly when known statically

For agents#

The brief below is what Copy for agents puts on the clipboard: the parameters, one example, the 200 body and the rules. It is Markdown, and it is short on purpose — everything in it is load-bearing.

  • Symbols resolve case-insensitively on /quote; a contract address always wins over a symbol.
  • Amounts on /quote are HUMAN decimals ("0.1"), never base units — use decimals only to read balances, not to build the amount parameter.