Prerequisites
- An API key from LayerZero
- A funded wallet on the source chain
Base URL
Check chains and tokens
Before requesting a quote, verify your source and destination chains are supported and discover available tokens.
List supported chains
- cURL
- TypeScript
- Python
Response
| Field | Description |
|---|---|
chainKey | Unique chain identifier (e.g., ethereum, base) |
chainType | Blockchain type (EVM, SOLANA, STARKNET) |
chainId | Native chain ID (e.g., 1 for Ethereum, 8453 for Base) |
See the Chains API reference for complete endpoint documentation.
List supported tokens
Query tokens with optional filters. Without parameters, the API returns all tokens across all supported chains.- cURL
- TypeScript
- Python
Query parameters
| Parameter | Type | Description |
|---|---|---|
transferrableFromChainKey | string | Source chain key (e.g., base, ethereum). Must be combined with transferrableFromTokenAddress to filter results. |
transferrableFromTokenAddress | string | Source token address. Must be combined with transferrableFromChainKey to filter results. |
Response
| Field | Description |
|---|---|
isSupported | Whether the token is available for transfers |
chainKey | Chain identifier (e.g., ethereum, base) |
address | Token contract address |
decimals | Token decimal places |
symbol | Token symbol (e.g., ETH, USDC) |
name | Full token name |
price.usd | Current price in USD |
Get a quote
Request a quote for your cross-chain transfer. The API returns available routes with fees, estimated duration, and the steps needed to execute.
Quote response: The quote includes
userSteps with transaction or signature data to execute. See Quotes for the full request/response schema.- cURL
- TypeScript
- Python
Build user steps (Solana only)
For EVM transfers, the quote response already includes
userSteps with transaction data - skip to Step 4.For Solana transfers, you must call /build-user-steps to get the encoded transaction data. Solana transactions have short blockhash validity (~60 seconds), so this step generates fresh transaction data.EVM vs Solana:
See Build User Steps for complete documentation.
| Chain type | Where to get userSteps |
|---|---|
| EVM | Directly from the quote response |
| Solana | Must call /build-user-steps first |
- cURL
- TypeScript
- Python
Execute the transfer
Process each user step in order. For transactions, sign and submit to the blockchain. For signatures, sign and submit to the API.Where to get
Never approve the LZMulticall (Wrapper) as a token spenderLZMulticall executes bridge transactions. It is not the right spender, and approving it will lose you tokens. The correct spender is the TransferDelegate, and the API’s approve step already has this set in the calldata. Execute every
userStep as returned.See Contracts Overview for details on the contract architecture.No cURL for execution: Executing requires a wallet to sign and broadcast the transaction. This step cannot be done with cURL alone - you need a signing library (viem, web3.py, @solana/web3.js) and an RPC connection.
userSteps:- EVM: Use
quote.userStepsdirectly from the quote response - Solana: Use
userStepsfrom the/build-user-stepsresponse
Execute transaction steps
Loop through everyuserStep and execute each one in order. ERC20 transfers return two transaction steps (approve + bridge) — you must execute both.- TypeScript (viem)
- Python (web3.py)
Submit a signature step
For intent-based routes, sign the EIP-712 data and submit to the API.- TypeScript (viem)
- Python
Track the transfer
After executing all user steps, poll the status endpoint to monitor completion.
- cURL
- TypeScript
- Python
Status values
| Status | Description |
|---|---|
PENDING | Transfer initiated, waiting for confirmation |
PROCESSING | Transfer in progress across chains |
SUCCEEDED | Transfer completed successfully |
FAILED | Transfer failed |
UNKNOWN | Status cannot be determined |
Next steps
- EVM Example: Complete TypeScript example with viem
- Solana Example: Complete TypeScript example for Solana transfers
- API Reference: Explore all endpoints with interactive testing