Skip to main content
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.
ChainSlugChain IDNative Token
Ethereumethereum1ETH
Optimismoptimism10ETH
Flareflare14FLR
Cronoscronos25CRO
Rootstockrootstock30RBTC
Telostelos40TLOS
BNB Chainbsc56BNB
Gnosisgnosis100xDAI
Unichainunichain130ETH
Polygonpolygon137POL
Sonicsonic146S
X Layerx-layer196OKB
opBNBopbnb204BNB
Fraxtalfraxtal252frxETH
Bobaboba288ETH
zkSync Erazksync324ETH
PulseChainpulsechain369PLS
World Chainworld-chain480ETH
Flowflow747FLOW
HyperEVMhyperevm999HYPE
Plasmaplasma1012ETH
Metismetis1088METIS
Lisklisk1135ETH
Moonbeammoonbeam1284GLMR
Seisei1329SEI
Gravitygravity1625G
Soneiumsoneium1868ETH
Roninronin2020RON
Abstractabstract2741ETH
Mantlemantle5000MNT
Basebase8453ETH
Monadmonad10143MON
Immutable zkEVMimmutable13371IMX
Apechainapechain33139APE
Modemode34443ETH
Arbitrumarbitrum42161ETH
Celocelo42220CELO
Avalancheavalanche43114AVAX
Inkink57073ETH
Linealinea59144ETH
BOBbob60808ETH
Berachainberachain80094BERA
Blastblast81457ETH
Taikotaiko167000ETH
Scrollscroll534352ETH

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.
ChainSlugChain IDNative TokenDeposit Mode
Solanasolana1151111081099710SOLWallet
Bitcoinbitcoin20000000000001BTCWallet
Suisui9270000000000000SUIWallet
TONton900000002TONWallet
Trontron900000003TRXWallet
NEARnear900000001NEARManual
XRP Ledgerxrp900000004XRPManual
Dogecoindoge900000005DOGEManual
Litecoinlitecoin900000006LTCManual
Bitcoin Cashbitcoin-cash900000007BCHManual
Stellarstellar900000008XLMManual
Cardanocardano900000009ADAManual
Aptosaptos900000010APTManual
StarkNetstarknet900000011STRKManual
Dashdash900000012DASHManual
Zcashzcash900000013ZECManual
Aleoaleo900000014ALEOManual
ADIadi900000015ADIManual
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.