HTTP API · Discovery
List tokens on a chain
The curated token list for one chain: natives first, then the ERC-20s SwapsPro resolves by symbol.
curl "https://www.swaps.pro/api/sdk/v1/tokens?chainId=8453"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#
| Name | In | Type | Description |
|---|---|---|---|
chainIdREQUIRED | query | number | symbol | Numeric 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#
| Field | Meaning |
|---|---|
caip | CAIP-19 asset id — the key /prices takes |
isToken | false for the chain's native asset |
contract | ERC-20 address, EVM token assets only |
mint | SPL mint, Solana only |
decimals | only 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
decimalsonly to read balances, not to build the amount parameter.
