Skip to main content

Solver Currencies and Swap Support

How to check if a route is supported?

To determine if a route is supported (also referred to as whether a token is supported for bridging), use the Chains API to check for an available route between a given token pair.
curl -X GET "https://api.relay.link/chains"
The response will return a list of chains, each containing supported token pairs. To verify if a route is supported, follow these steps:

Step 1: Check Token Support Level

Look for the tokenSupport field in the response for a given chain:
  • If tokenSupport is "All", then routes involving this chain as either the origin or destination are supported for tokens where Solver or DEX liquidity is available.
  • If tokenSupport is "Limited", proceed to step 2.

Step 2: Check Individual Token Support

If tokenSupport is "Limited", check the erc20Currencies and currency fields in the response. These fields contain token objects with metadata indicating whether a token supports bridging.

Step 3: Verify Bridging Support

Locate the supportsBridging field in the token object:
  • If supportsBridging is true, the token is supported for bridging.
  • If supportsBridging is false or if the token pair is not listed in erc20Currencies or currency, then the route is not supported.

Examples of Supported and Limited Token Routes

Example: All Tokens Supported

{
  "chains": [
        {
            "id": 10,
            "name": "optimism",
            "displayName": "Optimism",
            "tokenSupport": "All",
            "currency": {
                "id": "eth",
                "symbol": "ETH",
                "name": "Ether",
                "address": "0x0000000000000000000000000000000000000000",
                "decimals": 18,
                "supportsBridging": true
            },
            "erc20Currencies": [
                {
                    "id": "wbtc",
                    "symbol": "WBTC",
                    "name": "Wrapped BTC",
                    "address": "0x68f180fcce6836688e9084f035309e29bf0a2095",
                    "decimals": 8,
                    "supportsBridging": false,
                    "withdrawalFee": 0,
                    "depositFee": 0,
                    "surgeEnabled": false
                },
                {
                    "id": "usdt",
                    "symbol": "USDT",
                    "name": "Tether USD",
                    "address": "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58",
                    "decimals": 6,
                    "supportsBridging": true,
                    "withdrawalFee": 0,
                    "depositFee": 0,
                    "surgeEnabled": false
                },
                {
                    "id": "dai",
                    "symbol": "DAI",
                    "name": "Dai Stablecoin",
                    "address": "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1",
                    "decimals": 18,
                    "supportsBridging": false,
                    "withdrawalFee": 0,
                    "depositFee": 0,
                    "surgeEnabled": false
                },
                {
                    "id": "usdc",
                    "symbol": "USDC",
                    "name": "USD Coin",
                    "address": "0x0b2c639c533813f4aa9d7837caf62653d097ff85",
                    "decimals": 6,
                    "supportsBridging": true,
                    "supportsPermit": true,
                    "withdrawalFee": 0,
                    "depositFee": 0,
                    "surgeEnabled": false
                }
            ]
        }
  ]
}
Since the tokenSupport field is "All", routes involving this chain are supported for tokens where Solver or DEX liquidity is available.

Example: Limited Token Support

{
  "chains": [
        {
            "id": 7777777,
            "name": "zora",
            "displayName": "Zora",
            "tokenSupport": "Limited",
            "currency": {
                "id": "eth",
                "symbol": "ETH",
                "name": "Ether",
                "address": "0x0000000000000000000000000000000000000000",
                "decimals": 18,
                "supportsBridging": true
            },
            "erc20Currencies": [
                {
                    "id": "usdc",
                    "symbol": "USDzC",
                    "name": "USD Coin (Bridged from Ethereum)",
                    "address": "0xcccccccc7021b32ebb4e8c08314bd62f7c653ec4",
                    "decimals": 6,
                    "supportsBridging": true,
                    "withdrawalFee": 0,
                    "depositFee": 0,
                    "surgeEnabled": false
                }
            ]
        }
  ]
}
Here, tokenSupport is "Limited", meaning only specific tokens can be bridged. In this case, usdc is listed under erc20Currencies with supportsBridging: true, so routes involving usdc as an origin or destination token on Zora are supported.

Gas Top-Up

Gas top-up automatically includes a small amount of the destination chain’s native gas token (e.g., ETH) with the bridged tokens. This ensures recipients have gas to interact with their received tokens immediately.

Enabling Gas Top-Up

To enable gas top-up in your quote request:
  • Set topupGas to true
  • Optionally specify the gas amount using topupGasAmount

Checking Gas Top-Up Support

A chain supports gas top-up when all of the following are true:
  1. EVM chain only - The chain’s vmType must be "evm"
  2. Non-native currency - You cannot top up gas when bridging the chain’s native token (e.g., ETH on Ethereum)
  3. Bridging enabled - Either:
    • tokenSupport is "All", OR
    • currency.supportsBridging is true
You can verify support by checking the Gas Top Up Supported column in the table above or by querying the Chains API.

API Reference

For the most up-to-date information on supported tokens and routes, always refer to the Chains API endpoint, as token support can change over time.