List supported chains
curl --request GET \
--url https://transfer.layerzero-api.com/v1/chainsimport requests
url = "https://transfer.layerzero-api.com/v1/chains"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://transfer.layerzero-api.com/v1/chains', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://transfer.layerzero-api.com/v1/chains",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://transfer.layerzero-api.com/v1/chains"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://transfer.layerzero-api.com/v1/chains")
.asString();require 'uri'
require 'net/http'
url = URI("https://transfer.layerzero-api.com/v1/chains")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"chains": [
{
"name": "Ethereum",
"shortName": "ETH",
"chainKey": "ethereum",
"chainType": "EVM",
"chainId": 1
},
{
"name": "Arbitrum",
"shortName": "ARB",
"chainKey": "arbitrum",
"chainType": "EVM",
"chainId": 42161
},
{
"name": "Solana",
"shortName": "SOL",
"chainKey": "solana",
"chainType": "SOLANA",
"chainId": 0
}
],
"pagination": {}
}API Reference
List Chains
Retrieve all supported blockchain networks with their identifiers and native currencies.
GET
/
chains
List supported chains
curl --request GET \
--url https://transfer.layerzero-api.com/v1/chainsimport requests
url = "https://transfer.layerzero-api.com/v1/chains"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://transfer.layerzero-api.com/v1/chains', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://transfer.layerzero-api.com/v1/chains",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://transfer.layerzero-api.com/v1/chains"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://transfer.layerzero-api.com/v1/chains")
.asString();require 'uri'
require 'net/http'
url = URI("https://transfer.layerzero-api.com/v1/chains")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"chains": [
{
"name": "Ethereum",
"shortName": "ETH",
"chainKey": "ethereum",
"chainType": "EVM",
"chainId": 1
},
{
"name": "Arbitrum",
"shortName": "ARB",
"chainKey": "arbitrum",
"chainType": "EVM",
"chainId": 42161
},
{
"name": "Solana",
"shortName": "SOL",
"chainKey": "solana",
"chainType": "SOLANA",
"chainId": 0
}
],
"pagination": {}
}Returns a list of all blockchain networks supported by the Value Transfer API.
Some supported chains enforce permissioned access and will reject transactions from non-whitelisted wallets. See Permissioned chains for details.
Reference
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
pagination[nextToken] | string | No | Pagination cursor from previous response |
Response
Returns achains array containing chain objects and a pagination object for cursor-based pagination.
Attributes
| Attribute | Type | Description |
|---|---|---|
name | string | Full chain name (for example, Ethereum Mainnet) |
shortName | string | Short display name (for example, Ethereum) |
chainKey | string | Unique chain identifier (for example, ethereum, base) |
nativeCurrency | object | Native currency details |
nativeCurrency.chainKey | string | Chain where currency exists |
nativeCurrency.address | string | Token address for native currency |
nativeCurrency.decimals | number | Decimal places |
nativeCurrency.symbol | string | Currency symbol (for example, ETH) |
nativeCurrency.name | string | Currency name |
chainType | enum | Blockchain type: EVM, SOLANA, STARKNET |
Code examples
- cURL
- TypeScript
- Python
curl -X GET "https://transfer.layerzero-api.com/v1/chains"
const response = await fetch('https://transfer.layerzero-api.com/v1/chains');
const {chains} = await response.json();
console.log(chains);
import requests
response = requests.get("https://transfer.layerzero-api.com/v1/chains")
chains = response.json()["chains"]
print(chains)
Response
{
"chains": [
{
"name": "Ethereum",
"shortName": "Ethereum",
"chainKey": "ethereum",
"nativeCurrency": {
"chainKey": "ethereum",
"address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"decimals": 18,
"symbol": "ETH",
"name": "ETH"
},
"chainType": "EVM"
},
{
"name": "Base",
"shortName": "Base",
"chainKey": "base",
"nativeCurrency": {
"chainKey": "base",
"address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"decimals": 18,
"symbol": "ETH",
"name": "Ether"
},
"chainType": "EVM"
},
{
"name": "Solana",
"shortName": "Solana",
"chainKey": "solana",
"nativeCurrency": {
"chainKey": "solana",
"address": "So11111111111111111111111111111111111111112",
"decimals": 9,
"symbol": "SOL",
"name": "SOL"
},
"chainType": "SOLANA"
},
{
"name": "Starknet",
"shortName": "Starknet",
"chainKey": "starknet",
"nativeCurrency": {
"chainKey": "starknet",
"address": "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",
"decimals": 18,
"symbol": "STRK",
"name": "Starknet Token"
},
"chainType": "STARKNET"
},
{
"name": "Avalanche",
"shortName": "Avalanche",
"chainKey": "avalanche",
"nativeCurrency": {
"chainKey": "avalanche",
"address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"decimals": 18,
"symbol": "AVAX",
"name": "Avalanche Token"
},
"chainType": "EVM"
}
],
"pagination": {}
}
Native token addresses
| Chain type | Native token | Address format | Example |
|---|---|---|---|
| EVM | ETH, MATIC, etc. | Standard address | 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE |
| SOLANA | SOL | Base58 public key | So11111111111111111111111111111111111111112 |
| STARKNET | STRK | Felt252 address | 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d |
Permissioned chains
Some chains supported by the Value Transfer API enforce permissioned access. Transactions sent to these chains through public RPC endpoints will be rejected unless your wallet has been approved. Check the table below before integrating with these chains.| Chain | Access model | Public RPC restriction | How to get access |
|---|---|---|---|
| Redbelly | Protocol-level KYC via verifiable credentials | governors.mainnet.redbelly.network is read-only; write operations (e.g., sending transactions) are blocked | Apply for whitelisting |
Related endpoints
Was this page helpful?
⌘I