Hypermid supports 90+ blockchains across EVM and non-EVM networks. Every chain has a slug (human-readable string) and a numeric ID. Both are accepted in all API params, widget config, and SDK methods.
You can also fetch the full list programmatically via GET /v1/chains.
EVM Chains
EVM chains support wallet mode — the execute endpoint returns a transactionRequest that you sign and broadcast directly from your app. No manual steps needed.
| Chain | Slug | Chain ID | Native Token |
|---|
| Ethereum | ethereum | 1 | ETH |
| Optimism | optimism | 10 | ETH |
| Flare | flare | 14 | FLR |
| Cronos | cronos | 25 | CRO |
| Rootstock | rootstock | 30 | RBTC |
| Telos | telos | 40 | TLOS |
| BNB Chain | bsc | 56 | BNB |
| Gnosis | gnosis | 100 | xDAI |
| Unichain | unichain | 130 | ETH |
| Polygon | polygon | 137 | POL |
| Sonic | sonic | 146 | S |
| X Layer | x-layer | 196 | OKB |
| opBNB | opbnb | 204 | BNB |
| Fraxtal | fraxtal | 252 | frxETH |
| Boba | boba | 288 | ETH |
| zkSync Era | zksync | 324 | ETH |
| PulseChain | pulsechain | 369 | PLS |
| World Chain | world-chain | 480 | ETH |
| Flow | flow | 747 | FLOW |
| HyperEVM | hyperevm | 999 | HYPE |
| Plasma | plasma | 1012 | ETH |
| Metis | metis | 1088 | METIS |
| Lisk | lisk | 1135 | ETH |
| Moonbeam | moonbeam | 1284 | GLMR |
| Sei | sei | 1329 | SEI |
| Gravity | gravity | 1625 | G |
| Soneium | soneium | 1868 | ETH |
| Ronin | ronin | 2020 | RON |
| Abstract | abstract | 2741 | ETH |
| Mantle | mantle | 5000 | MNT |
| Base | base | 8453 | ETH |
| Monad | monad | 10143 | MON |
| Immutable zkEVM | immutable | 13371 | IMX |
| Apechain | apechain | 33139 | APE |
| Mode | mode | 34443 | ETH |
| Arbitrum | arbitrum | 42161 | ETH |
| Celo | celo | 42220 | CELO |
| Avalanche | avalanche | 43114 | AVAX |
| Ink | ink | 57073 | ETH |
| Linea | linea | 59144 | ETH |
| BOB | bob | 60808 | ETH |
| Berachain | berachain | 80094 | BERA |
| Blast | blast | 81457 | ETH |
| Taiko | taiko | 167000 | ETH |
| Scroll | scroll | 534352 | ETH |
EVM Example (Wallet Mode)
All EVM swaps return a transactionRequest — sign it and broadcast:
const exec = await client.execute({
fromChain: 1, // Ethereum
toChain: 42161, // Arbitrum
fromToken: "0x0000000000000000000000000000000000000000",
toToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
fromAmount: "1000000000000000000",
fromAddress: "0xYourWallet",
toAddress: "0xYourWallet",
});
// Sign and broadcast — that's it
const tx = await wallet.sendTransaction(exec.data.transactionRequest);
PulseChain swaps use the same wallet mode but may require an extra confirmation step for inbound multi-step routes. See the SuperSwap guide for details.
Non-EVM Chains
Non-EVM chains support two deposit modes depending on the chain:
- Wallet — Returns a
transactionRequest you can sign programmatically (same as EVM). Works for Solana, Bitcoin, TON, and Tron.
- Manual — Returns a
depositAddress (and optional memo). The user sends tokens from their native wallet app.
| Chain | Slug | Chain ID | Native Token | Deposit Mode |
|---|
| Solana | solana | 1151111081099710 | SOL | Wallet |
| Bitcoin | bitcoin | 20000000000001 | BTC | Wallet |
| Sui | sui | 9270000000000000 | SUI | Wallet |
| TON | ton | 900000002 | TON | Wallet |
| Tron | tron | 900000003 | TRX | Wallet |
| NEAR | near | 900000001 | NEAR | Manual |
| XRP Ledger | xrp | 900000004 | XRP | Manual |
| Dogecoin | doge | 900000005 | DOGE | Manual |
| Litecoin | litecoin | 900000006 | LTC | Manual |
| Bitcoin Cash | bitcoin-cash | 900000007 | BCH | Manual |
| Stellar | stellar | 900000008 | XLM | Manual |
| Cardano | cardano | 900000009 | ADA | Manual |
| Aptos | aptos | 900000010 | APT | Manual |
| StarkNet | starknet | 900000011 | STRK | Manual |
| Dash | dash | 900000012 | DASH | Manual |
| Zcash | zcash | 900000013 | ZEC | Manual |
| Aleo | aleo | 900000014 | ALEO | Manual |
| ADI | adi | 900000015 | ADI | Manual |
Wallet chains can also use manual mode. Pass depositMode: "manual" in your execute request to force a deposit address for any chain. Useful if your app doesn’t have a native wallet integration for that chain.
Wallet Mode Example (Solana)
Wallet-mode non-EVM chains work the same as EVM — you get a transactionRequest:
const exec = await client.execute({
fromChain: "solana",
toChain: 1,
fromToken: "11111111111111111111111111111111", // native SOL
toToken: "0x0000000000000000000000000000000000000000",
fromAmount: "1000000000", // 1 SOL in lamports
fromAddress: "YourSolanaAddress",
toAddress: "0xYourEVMWallet",
});
// Sign with your Solana wallet
const tx = await solanaWallet.signAndSendTransaction(
exec.data.transactionRequest
);
Manual Deposit Example (XRP)
Manual-mode chains return a depositAddress and optional memo. Show these to the user so they can send from their native wallet:
const exec = await client.execute({
fromChain: "xrp",
toChain: 1,
fromToken: "XRP",
toToken: "0x0000000000000000000000000000000000000000",
fromAmount: "50000000", // 50 XRP in drops
fromAddress: "rYourXRPAddress",
toAddress: "0xYourEVMWallet",
});
// Display to user — they send manually from their XRP wallet
console.log("Send to:", exec.data.depositAddress);
console.log("Memo:", exec.data.memo); // Required for XRP
console.log("Deposit ID:", exec.data.depositId);
// Track with deposit status endpoint
const status = await client.getDepositStatus({
depositId: exec.data.depositId,
});
Memo is required for XRP and Stellar deposits. If the user omits the memo, the funds may be lost. Always display the memo prominently in your UI.
Forcing Manual Mode
Any wallet-mode chain can be switched to manual deposit by passing depositMode: "manual":
const exec = await client.execute({
fromChain: "solana",
toChain: 1,
fromToken: "11111111111111111111111111111111",
toToken: "0x0000000000000000000000000000000000000000",
fromAmount: "1000000000",
fromAddress: "YourSolanaAddress",
toAddress: "0xYourEVMWallet",
depositMode: "manual", // Force deposit address instead of transactionRequest
});
// Now returns depositAddress instead of transactionRequest
console.log("Send to:", exec.data.depositAddress);
Using Chain Identifiers
Both slugs and numeric IDs work in all API endpoints:
# Using numeric ID (common for EVM chains)
curl "https://api.hypermid.io/v1/quote?fromChain=1&toChain=42161&..."
# Using slug (recommended for non-EVM chains)
curl "https://api.hypermid.io/v1/quote?fromChain=ethereum&toChain=solana&..."
Use slugs for non-EVM chains — "solana" is much easier to read than 1151111081099710.