Rango Docs
API SwaggerWidget PlaygroundAppWebsite
  • 👋Welcome to Rango
  • 🏠Introduction
  • 💁How It Works
  • ✅Integrations
  • ⚖️Rango vs. Competitors
  • 🔐Security
  • 🛣️Roadmap
  • 🦎Tokenomics
  • 💰Airdrop
  • ❓FAQ
  • 🐞Bug Bounty
  • API Integration
    • 🔡Terminology
    • 🚄API Key & Rate Limits
    • 🤝Choosing the Right API
    • 🦄Basic API - Single Step
      • 🛝API Flow
      • ⚙️API Reference
        • Get Blockchains & Tokens
        • Get Quote
        • Create Transaction (Swap)
        • Check Transaction Status
        • Check Approve Transaction Status
        • Get Address Assets & Balances
        • Get Token Balance
        • Report Transaction Failure
        • Get Direct Tokens
        • Get Custom Token
        • Message Passing
      • 🎓Tutorial
        • 🍰SDK Example
      • 💰Monetization
      • 🎹Sample Transactions
      • ✅Integration Checklist
    • 🦎Main API - Multi Step
      • 🛝API Flow
      • ⚙️API Reference
        • Get Blockchains & Tokens
        • Get Best Route
        • Get All Possible Routes
        • Confirm Route
        • Create Transaction
        • Check Transaction Status
        • Check Approve Transaction Status
        • Report Transaction Failure
        • Get Custom Token
        • Get Address Token Balance
      • 🎓Tutorial
        • 🍰SDK Example
      • 💰Monetization
      • 🎹Sample Transactions
  • ℹ️API Troubleshooting
  • Technical Docs
    • 🍔Swap Aggregation
    • 💰Monetization
    • ⛽Fee Structure
    • ⛽Network Fees and Gas Estimates
    • ⌛Stuck Transactions
  • Widget Integration
    • 🧩Overview
    • 🎇Quick Start
    • ⚙️Customization
    • 💰Monetization
    • 🛣️React Router
    • 🎵Events
    • 💳External Wallets
  • Smart Contracts
    • 👩‍💼Architecture
    • 🔎Audit Reports
    • 🏗️Deployment Addresses
    • 📩Message Passing
  • Ask for Integration
    • 🙋‍♂️DEXs & DEX Aggregators
    • 📱Rango Mobile SDK
  • Useful Links
    • Twitter
    • Discord Server
    • TG Announcements
    • TG Group
  • Terms of Use
  • Privacy policy
Powered by GitBook
On this page
  • Get Full Metadata API
  • Metadata Request
  • Metadata Response
  • Get Specific Part of Metadata
  • Get List of Blockchains API
  • Get List of Swappers API
  • Get List of Cross-Chain Messaging Protocols API

Was this helpful?

  1. API Integration
  2. Basic API - Single Step
  3. API Reference

Get Blockchains & Tokens

Get all supported blockchains, tokens and swappers meta data

PreviousAPI ReferenceNextGet Quote

Last updated 7 months ago

Was this helpful?

Get Full Metadata API

This service gathers all the essential data needed for a swap's UI, including list of all , and (DEXes & Bridges) metadata.

// basic usage
const meta = await rango.meta()
const response = await axios.get('https://api.rango.exchange/basic/meta', {
  params: {
    'apiKey': 'c6381a79-2817-4602-83bf-6a641a409e32'
  }
});
curl --request GET \
     --url 'https://api.rango.exchange/basic/meta?apiKey=c6381a79-2817-4602-83bf-6a641a409e32'
// sample for filtering response
const meta = await rango.meta({
    blockchains: ['ETH', 'POLYGON'],
    blockchainsExclude: false,
    swappers: ['Across', 'OneInchEth'],
    swappersExclude: false,
    swappersGroups: ['Across', '1Inch'],
    swappersGroupsExclude: false,
    transactionTypes: ['EVM'],
    transactionTypesExclude: false,
    excludeNonPopulars: false
})
const response = await axios.get('https://api.rango.exchange/basic/meta', {
  params: {
    'apiKey': 'c6381a79-2817-4602-83bf-6a641a409e32',
    'blockchains': 'ETH,POLYGON',
    'blockchainsExclude': false,
    'swappers': 'Across,OneInchEth',
    'swappersExclude': false,
    'swapperGroups': 'Across,1Inch',
    'swappersGroupsExclude': false,
    'transactionTypes': 'EVM',
    'transactionTypesExclude': false,
    'excludeNonPopulars': false
  }
});
curl --request GET \
     --url 'https://api.rango.exchange/basic/meta?apiKey=c6381a79-2817-4602-83bf-6a641a409e32&blockchains=ETH,POLYGON&blockchainsExclude=false&swappers=Across,OneInchEth&swappersExclude=false&swapperGroups=Across,1Inch&swappersGroupsExclude=false&transactionTypes=EVM&transactionTypesExclude=false&excludeNonPopulars=false'

Why is it recommended to obtain the list of supported blockchains from Rango API?

  • For working with other API methods like quote or swap, you need to have identifier (name) of each blockchain. You could hard code blockchain names if you want to have limited chains support or get them dynamically via the API. (You could store a map of each blockchain chainId to Rango name if required.)

  • Because of different reasons like blockchains maintenance, Rango maintenance, DeFi protocols hacks, and etc, a blockchain could be disabled in Rango. You could check which blockchains are enabled now using enabled flag for each blockchain in meta response.

When is it required to obtain the list of supported tokens from Rango API?

Even if dApp has its own list of tokens and blockchains, it's still useful to get list of supported tokens by Rango:

  • To avoid unnecessary API calls when a token is not supported by Rango: For EVM and Solana blockchains, Rango supports custom tokens, so it's fine to pass tokens outside the list of Rango token list. However, for the other blockchains, we currently only support tokens that are on our existing token list (meta response).

  • For Cosmos-based blockchains, the token's symbol is required to retrieve a quote for each token. Thi will be addressed in a future update.

Metadata Request

  • blockchains String

    • Description: Pass comma separated list of blockchains if you want to filter meta blockchains to some specific ones.

    • Example: POLYGON,ETH

  • blockchainsExclude Boolean

    • Description: A value indicating whether the specified blockchains should be excluded or included in the response.

    • Example: true

  • swappers String

    • Description: Pass comma separated list of swappers if you want to filter meta swappers to some specific ones.

    • Example: Across,OneInchEth

  • swappersExclude Boolean

    • Description: A boolean value indicating whether the specified swappers should be excluded or included in the response.

    • Example: false

  • swappersGroups String

    • Description: Pass comma separated list of swapper groups if you want to filter meta swapper groups to some specific ones.

    • Example: Across,1Inch

  • swappersGroupsExclude Boolean

    • Description: A boolean value indicating whether the specified swapper groups should be excluded or included in the response.

    • Example: false

  • transactionTypes String

    • Description: Pass comma separated list of transaction types if you want to filter blockchains types to some specific ones.

    • Example: EVM,COSMOS

  • transactionTypesExclude Boolean

    • Description: A boolean value indicating whether the specified transaction types should be excluded or included in the response.

    • Example: false

  • excludeSecondaries Boolean

    • Description: It indicates whether secondary tokens should be excluded from the response. By secondary tokens, we mean tokens that are imported from our secondary tokens lists.

    • Example: false

  • excludeNonPopulars Boolean

    • Description: It indicates whether non-popular tokens should be excluded from the response. By popular tokens, we mean native token and stable coins of each blockchain.

    • Example: false

  • enableCentralizedSwappers Boolean

    • Description: Set this flag to true if you want to enable routing through the centralized solutions and obtain the associated metadata, including related swappers and tokens. The default value for this argument is false.

    • Example: true

export type MetaRequest = {
  blockchains?: string[]
  blockchainsExclude?: boolean
  swappers?: string[]
  swappersExclude?: boolean
  swappersGroups?: string[]
  swappersGroupsExclude?: boolean
  transactionTypes?: TransactionType[]
  transactionTypesExclude?: boolean
  excludeSecondaries?: boolean
  excludeNonPopulars?: boolean
  ignoreSupportedSwappers?: boolean
  enableCentralizedSwappers?: boolean
}

export enum TransactionType {
  EVM = 'EVM',
  TRANSFER = 'TRANSFER',
  COSMOS = 'COSMOS',
  SOLANA = 'SOLANA',
  TRON = 'TRON',
  STARKNET = 'STARKNET',
  TON = 'TON',
}

Metadata Response

  • blockchains

  • tokens

  • swappers

export type MetaResponse = {
  blockchains: BlockchainMeta[]
  tokens: Token[]
  swappers: SwapperMeta[]
}

export type BlockchainMeta =
  | EvmBlockchainMeta
  | CosmosBlockchainMeta
  | TransferBlockchainMeta
  | SolanaBlockchainMeta
  | StarkNetBlockchainMeta
  | TronBlockchainMeta
  | TonBlockchainMeta
  
export type SwapperMeta = {
  id: string
  title: string
  logo: string
  swapperGroup: string
  types: SwapperType[]
  enabled: boolean
}  

export type Token = {
  blockchain: string
  chainId: string | null
  address: string | null
  symbol: string
  name: string | null
  decimals: number
  image: string
  blockchainImage: string
  usdPrice: number | null
  isPopular: boolean
  supportedSwappers: string[]
}
{
  "tokens": [
    {
      "blockchain": "ETH",
      "symbol": "USDT",
      "name": "USDT",
      "isPopular": true,
      "chainId": "1",
      "address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
      "decimals": 6,
      "image": "https://rango.vip/i/r3Oex6",
      "blockchainImage": "https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/ETH/icon.svg",
      "usdPrice": 1.001,
      "supportedSwappers": [
        "ThorChain",
        "Arbitrum Bridge",
        "Hyphen"
      ]
    }
  ],
  "blockchains": [
    {
      "name": "ETH",
      "defaultDecimals": 18,
      "addressPatterns": [
        "^(0x)[0-9A-Fa-f]{40}$"
      ],
      "feeAssets": [
        {
          "blockchain": "ETH",
          "symbol": "ETH",
          "address": null
        }
      ],
      "type": "EVM",
      "chainId": "0x1",
      "logo": "https://raw.githubusercontent.com/rango-exchange/assets/main/blockchains/ETH/icon.svg",
      "displayName": "Ethereum",
      "shortName": "ETH",
      "sort": 0,
      "color": "#ecf0f1",
      "enabled": true,
      "info": {
        "infoType": "EvmMetaInfo",
        "chainName": "Ethereum Mainnet",
        "nativeCurrency": {
          "name": "ETH",
          "symbol": "ETH",
          "decimals": 18
        },
        "rpcUrls": [
          "https://rpc.ankr.com/eth"
        ],
        "blockExplorerUrls": [
          "https://etherscan.io"
        ],
        "addressUrl": "https://etherscan.io/address/{wallet}",
        "transactionUrl": "https://etherscan.io/tx/{txHash}",
        "enableGasV2": true
      }
    }
  ],
  "swappers": [
    {
      "id": "MDexHeco",
      "title": "MDex",
      "logo": "https://raw.githubusercontent.com/rango-exchange/assets/main/swappers/MDex/icon.svg",
      "swapperGroup": "MDex",
      "types": [
        "DEX"
      ],
      "enabled": true
    }
  ]
}

Get Specific Part of Metadata

If you only want to load a specific part of metadata rather than full metadata, i.e. only blockchains data, tokens list or supported protocols, you can use the following methods/endpoints:

Get List of Blockchains API

const chains = await rango.chains()
const response = await axios.get('https://api.rango.exchange/basic/meta/blockchains', {
  params: {
    'apiKey': 'c6381a79-2817-4602-83bf-6a641a409e32'
  }
});
curl --request GET \
     --url 'https://api.rango.exchange/basic/meta/blockchains?apiKey=c6381a79-2817-4602-83bf-6a641a409e32'

Get List of Swappers API

const swappers = await rango.swappers()
const response = await axios.get('https://api.rango.exchange/basic/meta/swappers', {
  params: {
    'apiKey': 'c6381a79-2817-4602-83bf-6a641a409e32'
  }
});
curl --request GET \
     --url 'https://api.rango.exchange/basic/meta/swappers?apiKey=c6381a79-2817-4602-83bf-6a641a409e32' 

Get List of Cross-Chain Messaging Protocols API

const protocols = await rango.messagingProtocols()
const response = await axios.get('https://api.rango.exchange/basic/meta/messaging-protocols', {
  params: {
    'apiKey': 'c6381a79-2817-4602-83bf-6a641a409e32'
  }
});
curl --request GET \
     --url 'https://api.rango.exchange/basic/meta/messaging-protocols?apiKey=c6381a79-2817-4602-83bf-6a641a409e32'

Description: List of all supported

List of all

List of all supported (DEXes & Bridges)

🦄
⚙️
Metadata (tokens, swappers, blockchains)rango-exchange
GET Metadata Swagger
Logo
Blockchains Metadatarango-exchange
GET Blockchains Swagger
Logo
Swappers Metadatarango-exchange
GET Swappers Swagger
Logo
Messaging Protocols Metadatarango-exchange
GET Messaging Protocols Swagger
Logo
blockchains
tokens
protocols
blockchains
tokens
protocols