curl --request GET \
--url https://api.sim.dune.com/v1/evm/supported-chains \
--header 'X-Sim-Api-Key: YOUR_API_KEY'
const response = await fetch('https://api.sim.dune.com/v1/evm/supported-chains', {
method: 'GET',
headers: {
'X-Sim-Api-Key': 'YOUR_API_KEY'
}
});
const data = await response.json();
console.log(data);
import requests
url = "https://api.sim.dune.com/v1/evm/supported-chains"
headers = {"X-Sim-Api-Key": "YOUR_API_KEY"}
response = requests.get(url, headers=headers)
data = response.json()
print(data)
{
"chains": [
{
"name": "ethereum",
"chain_id": 1,
"tags": ["default", "mainnet"],
"balances": {"supported": true},
"transactions": {"supported": true},
"activity": {"supported": true},
"token_info": {"supported": true},
"token_holders": {"supported": true},
"collectibles": {"supported": true}
},
{
"name": "polygon",
"chain_id": 137,
"tags": ["default", "mainnet"],
"balances": {"supported": true},
"transactions": {"supported": true},
"activity": {"supported": true},
"token_info": {"supported": true},
"token_holders": {"supported": true},
"collectibles": {"supported": true}
}
]
}
{
"error": "Bad Request"
}
{
"error": "Unauthorized"
}
{
"error": "Not Found"
}
{
"error": "Too many requests"
}
{
"error": "Internal Server Error"
}
Ethereum & EVM Chains
Supported Chains
Explore chains supported by Sim’s EVM API endpoints.
GET
/
v1
/
evm
/
supported-chains
curl --request GET \
--url https://api.sim.dune.com/v1/evm/supported-chains \
--header 'X-Sim-Api-Key: YOUR_API_KEY'
const response = await fetch('https://api.sim.dune.com/v1/evm/supported-chains', {
method: 'GET',
headers: {
'X-Sim-Api-Key': 'YOUR_API_KEY'
}
});
const data = await response.json();
console.log(data);
import requests
url = "https://api.sim.dune.com/v1/evm/supported-chains"
headers = {"X-Sim-Api-Key": "YOUR_API_KEY"}
response = requests.get(url, headers=headers)
data = response.json()
print(data)
{
"chains": [
{
"name": "ethereum",
"chain_id": 1,
"tags": ["default", "mainnet"],
"balances": {"supported": true},
"transactions": {"supported": true},
"activity": {"supported": true},
"token_info": {"supported": true},
"token_holders": {"supported": true},
"collectibles": {"supported": true}
},
{
"name": "polygon",
"chain_id": 137,
"tags": ["default", "mainnet"],
"balances": {"supported": true},
"transactions": {"supported": true},
"activity": {"supported": true},
"token_info": {"supported": true},
"token_holders": {"supported": true},
"collectibles": {"supported": true}
}
]
}
{
"error": "Bad Request"
}
{
"error": "Unauthorized"
}
{
"error": "Not Found"
}
{
"error": "Too many requests"
}
{
"error": "Internal Server Error"
}
curl --request GET \
--url https://api.sim.dune.com/v1/evm/supported-chains \
--header 'X-Sim-Api-Key: YOUR_API_KEY'
const response = await fetch('https://api.sim.dune.com/v1/evm/supported-chains', {
method: 'GET',
headers: {
'X-Sim-Api-Key': 'YOUR_API_KEY'
}
});
const data = await response.json();
console.log(data);
import requests
url = "https://api.sim.dune.com/v1/evm/supported-chains"
headers = {"X-Sim-Api-Key": "YOUR_API_KEY"}
response = requests.get(url, headers=headers)
data = response.json()
print(data)
{
"chains": [
{
"name": "ethereum",
"chain_id": 1,
"tags": ["default", "mainnet"],
"balances": {"supported": true},
"transactions": {"supported": true},
"activity": {"supported": true},
"token_info": {"supported": true},
"token_holders": {"supported": true},
"collectibles": {"supported": true}
},
{
"name": "polygon",
"chain_id": 137,
"tags": ["default", "mainnet"],
"balances": {"supported": true},
"transactions": {"supported": true},
"activity": {"supported": true},
"token_info": {"supported": true},
"token_holders": {"supported": true},
"collectibles": {"supported": true}
}
]
}
{
"error": "Bad Request"
}
{
"error": "Unauthorized"
}
{
"error": "Not Found"
}
{
"error": "Too many requests"
}
{
"error": "Internal Server Error"
}
Tags
Thetags property groups chains by category, such as mainnet, testnet, or default.
You can use these tags to filter or select chains in API requests.
Any endpoint that supports the chain_ids query parameter accepts a tag in place of explicit IDs, letting you fetch data for an entire group of chains in a single request.
When using chain_ids, you can request chains in several ways:
- By tags:
?chain_ids=mainnetreturns all chains tagged withmainnet. Using?chain_ids=mainnet,testnetreturns all chains that are tagged withmainnetortestnet. - Specific chain IDs:
?chain_ids=1,137,42161(Ethereum, Polygon, Arbitrum). - Mix tags and numeric IDs:
?chain_ids=1,8543,testnet - Default behavior: Omitting
chain_idsreturns only chains taggeddefault.
chain_ids by passing their numerical chain id (e.g. chain_ids=21000000 for corn).
Open the accordion above and scan the table to see which chains carry tags and which are untagged.
Compute Units
Chain selection directly determines CU cost for chain-dependent endpoints (like Balances and Collectibles). CU equals the number of distinct chains included after expanding any tags you pass inchain_ids.
If you omit chain_ids, the endpoint uses its default chain set. That is currently chains for Balances and chains for Collectibles (these values can change over time).
See Compute Units for the full rate card and guidance.
Using the API Endpoint
You can programmatically retrieve the list of supported chains to adapt to newly supported networks. The response includes an array of supported chains. Each item in the array includes the chain’sname, chain_id, an array of tags, and support for each endpoint.
Each endpoint (balances, transactions, activity, etc.) has a supported boolean value
Examples
Here are two practical examples of how you might use the API endpoint:1. Building a Dynamic Chain Selector
This example shows how to fetch supported chains and create a user-friendly dropdown menu that filters chains based on their capabilities. It can be useful for wallet UIs or dApp chain selection.// Fetch supported chains and build a dropdown for users
async function buildChainSelector() {
const response = await fetch('https://api.sim.dune.com/v1/evm/supported-chains', {
headers: { 'X-Sim-Api-Key': 'YOUR_API_KEY' }
});
const data = await response.json();
// Filter chains that support balances
const supportedChains = data.chains.filter(chain => chain.balances.supported);
// Build dropdown options
const chainOptions = supportedChains.map(chain => ({
value: chain.chain_id,
label: `${chain.name} (${chain.chain_id})`,
isMainnet: chain.tags.includes('mainnet')
}));
return chainOptions;
}
2. Validating Chain Support
This example demonstrates how to validate whether a specific chain supports a particular endpoint before making API calls. This helps prevent errors and improves user experience by showing appropriate messages.async function validateChainSupport(chainId, endpointName) {
// Check if a chain supports a specific endpoint before making requests
try {
const response = await fetch('https://api.sim.dune.com/v1/evm/supported-chains', {
headers: { 'X-Sim-Api-Key': 'YOUR_API_KEY' }
});
const data = await response.json();
// Find the chain
const chain = data.chains.find(c => c.chain_id === chainId);
if (!chain) {
return { supported: false, message: `Chain ${chainId} not found` };
}
// Check if the endpoint is supported
if (!chain[endpointName] || !chain[endpointName].supported) {
return {
supported: false,
message: `Endpoint '${endpointName}' not supported on ${chain.name}`
};
}
return {
supported: true,
message: `Chain ${chain.name} supports ${endpointName}`
};
} catch (error) {
return { supported: false, message: `Error validating chain: ${error.message}` };
}
}
// Usage
const result = await validateChainSupport(1, 'balances');
console.log(result.message); // "Chain ethereum supports balances"
Was this page helpful?