Skip to content
API v1 is deprecated. It stays supported, but new integrations should use the Khalani API. See Migrate to v2.
API v1 · Deprecated

Chains (v1)

GET /v1/chains is the live list of chains v1 works with: the EVM chains where Khalani has deposit contracts (the spokes), plus Solana, TRON and Bitcoin. Read it rather than hard-coding a list.

The list does not tell you which pairs have a route. Support is per pair and per route, and it moves with liquidity: a pair can have a route at one moment and none the next. Request a quote to check a pair. An empty routes[] means no route serves that pair and amount right now.

As of 19 October 2026 the list held 21 chains:

Chain Chain id Type
Ethereum 1 eip155
OP Mainnet 10 eip155
BNB Smart Chain 56 eip155
Unichain 130 eip155
Polygon 137 eip155
Monad 143 eip155
ZKsync Era 324 eip155
Abstract 2741 eip155
Robinhood Chain 4663 eip155
Mantle 5000 eip155
Base 8453 eip155
0G Mainnet 16661 eip155
Arbitrum One 42161 eip155
Avalanche 43114 eip155
Linea Mainnet 59144 eip155
Berachain 80094 eip155
Katana 747474 eip155
Jovay Mainnet 5734951 eip155
Tron 728126428 tron
Solana 20011000000 solana
Bitcoin 0 bitcoin

Solana’s 20011000000 and Bitcoin’s 0 are ids that v1 assigns; neither is an EVM chain id. To ask for a chain, contact Khalani.

Terminal window
curl -s https://api.hyperstream.dev/v1/chains | jq -r '.[] | "\(.id)\t\(.type)\t\(.name)"'
GET /v1/chains

Returns an array of chain objects. The response is cached for 5 minutes (Cache-Control: public, max-age=300).

[
{
"type": "eip155",
"id": 1,
"name": "Ethereum",
"nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
"rpcUrls": { "default": { "http": ["https://ethereum.reth.rs/rpc"] } },
"blockExplorers": {
"default": { "name": "Etherscan", "url": "https://etherscan.io", "apiUrl": "https://api.etherscan.io/api" }
},
"blockTime": 12000
},
{
"type": "bitcoin",
"id": 0,
"name": "Bitcoin",
"nativeCurrency": { "name": "Bitcoin", "symbol": "BTC", "decimals": 8 },
"rpcUrls": { "default": { "http": [] } },
"blockExplorers": { "default": { "name": "mempool.space", "url": "https://mempool.space" } }
}
]

Values as of 19 October 2026. The Ethereum entry is shortened.

Field Type Description
type string eip155, solana, tron or bitcoin.
id integer The chain id the API uses in fromChainId, toChainId and token objects.
name string Display name.
nativeCurrency object name, symbol and decimals of the native currency.
rpcUrls.default.http string[] Public RPC endpoints. Empty for Bitcoin. Fine for a wallet’s add-chain prompt; use your own RPC for production traffic.
blockExplorers.default object Optional. name, url, and on some chains apiUrl.

EVM entries are viem chain definitions, so they can carry more fields: blockTime, contracts, sourceId, testnet, fees, formatters, serializers, ensTlds, network and custom. Rely only on the fields in the table.

GET /v1/chain/{chainId}/icon

Returns the chain’s icon as an SVG image (200, Content-Type: image/svg+xml). It is served directly, not through a redirect, so you can use the URL in an <img> tag:

<img src="https://api.hyperstream.dev/v1/chain/42161/icon" alt="Arbitrum One" />
  • An unknown numeric id returns 200 with a default icon, which is currently the same image as Ethereum’s. The icon alone does not tell you the chain exists, so check the id against GET /v1/chains.
  • A non-numeric id returns 400 ValidationException as JSON.