List tokens
Returns tokens supported by the Value Transfer API. Use query parameters to filter for tokens transferrable from a specific source chain and token.
GET/tokens
Returns a paginated list of tokens supported by the Value Transfer API. Use optional filters to narrow down results by chain or source token.
| Query Parameters | Value |
|---|---|
transferrableFromChainKey string Filter tokens by source chain (for example, 'ethereum', 'arbitrum') | |
transferrableFromTokenAddress string Filter by source token address |
Response
{"tokens": [{"isSupported": true,"chainKey": "ethereum","address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE","decimals": 18,"symbol": "ETH","name": "Ethereum"}],"pagination": {}}
Reference
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
transferrableFromChainKey | string | No | Source chain key (for example, base, ethereum). Must be combined with transferrableFromTokenAddress. |
transferrableFromTokenAddress | string | No | Source token address. Must be combined with transferrableFromChainKey. |
pagination[nextToken] | string | No | Pagination cursor from previous response |
Validate transfer routes
Provide both transferrableFromChainKey and transferrableFromTokenAddress to get only destination tokens you can transfer to.
Response
Returns a tokens array and a pagination object.
Attributes
| Attribute | Type | Description |
|---|---|---|
isSupported | boolean | Whether the token is available for transfers |
chainKey | string | Chain identifier (for example, ethereum, base) |
address | string | Token contract address |
decimals | number | Token decimal places |
symbol | string | Token symbol (for example, ETH, USDC) |
name | string | Full token name |
logoUrl | string | Optional token logo URL |
price | object | Optional price information |
price.usd | number | Current price in USD |
Code examples
List all tokens
Returns the complete token catalog across all chains.
- cURL
- TypeScript
- Python
curl -X GET "https://transfer.layerzero-api.com/v1/tokens"
const response = await fetch('https://transfer.layerzero-api.com/v1/tokens');
const {tokens} = await response.json();
console.log(tokens);
import requests
response = requests.get("https://transfer.layerzero-api.com/v1/tokens")
tokens = response.json()["tokens"]
print(tokens)
List transferrable destinations
Returns only tokens you can transfer to from a specific source.
- cURL
- TypeScript
- Python
curl -X GET "https://transfer.layerzero-api.com/v1/tokens?transferrableFromChainKey=base&transferrableFromTokenAddress=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
const params = new URLSearchParams({
transferrableFromChainKey: 'base',
transferrableFromTokenAddress: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE',
});
const response = await fetch(`https://transfer.layerzero-api.com/v1/tokens?${params}`);
const {tokens} = await response.json();
console.log(tokens);
import requests
response = requests.get(
"https://transfer.layerzero-api.com/v1/tokens",
params={
"transferrableFromChainKey": "base",
"transferrableFromTokenAddress": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
},
)
tokens = response.json()["tokens"]
print(tokens)
Response
{
"tokens": [
{
"isSupported": true,
"chainKey": "ethereum",
"address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"decimals": 18,
"symbol": "ETH",
"name": "Ether",
"logoUrl": "https://...",
"price": {
"usd": 2500.5
}
},
{
"isSupported": true,
"chainKey": "arbitrum",
"address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"decimals": 18,
"symbol": "ETH",
"name": "Ether",
"price": {
"usd": 2500.5
}
}
],
"pagination": {}
}
Validate transfer routes
Check if a transfer route exists before requesting quotes:
async function validatePath(
srcChain: string,
srcToken: string,
dstChain: string,
dstToken: string,
): Promise<boolean> {
const params = new URLSearchParams({
transferrableFromChainKey: srcChain,
transferrableFromTokenAddress: srcToken,
});
const response = await fetch(`https://transfer.layerzero-api.com/v1/tokens?${params}`);
const {tokens} = await response.json();
return tokens.some(
(t) => t.chainKey === dstChain && t.address.toLowerCase() === dstToken.toLowerCase(),
);
}
const isSupported = await validatePath(
'base',
'0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
'arbitrum',
'0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
);