Chains (v1)
Coverage
Section titled “Coverage”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.
curl -s https://api.hyperstream.dev/v1/chains | jq -r '.[] | "\(.id)\t\(.type)\t\(.name)"'List chains
Section titled “List chains”GET /v1/chainsReturns 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.
Chain icon
Section titled “Chain icon”GET /v1/chain/{chainId}/iconReturns 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
200with 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 againstGET /v1/chains. - A non-numeric id returns
400 ValidationExceptionas JSON.