> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ravn.exchange/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported Chains & Venues

> Every chain RAVN swaps across, and the venues it routes through.

## Chains

RAVN spans EVM chains, Solana, and **native Bitcoin**. One integration covers all of them. Use
the chain ID in every request.

<Tip>
  Building a chain or token picker? Read [`GET /chains`](/api-reference/chains) and
  [`GET /tokens`](/api-reference/tokens-list) instead of hardcoding these tables, they're the
  same data, live.
</Tip>

### EVM

| Chain | ID | Chain | ID |
| - | - | - | - |
| Ethereum | `1` | Base | `8453` |
| Optimism | `10` | Arbitrum | `42161` |
| BNB Chain | `56` | Linea | `59144` |
| Unichain | `130` | Avalanche | `43114` |
| Polygon | `137` | Robinhood | `4663` |
| zkSync Era | `324` | HyperEVM | `999` |
| World Chain | `480` | Monad | `143` |
| Tempo | `4217` | | |

### Non-EVM

| Chain | ID | Notes |
| - | - | - |
| **Solana** | `-2` | SPL and native SOL. Use the mint `So1111...1112` for native SOL. |
| **Bitcoin** | `-1` | Native BTC in and out. Your users never have to wrap it or hold cbBTC. |

<Note>
  Native coin on any EVM chain uses the sentinel address
  `0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE`. Amounts are always strings in the token's smallest
  unit (wei, lamports, satoshis).
</Note>

<Note>
  **Tempo**'s native currency is literally `USD` (18 decimals): a non-transferable unit of account,
  not a market-priced asset, so no venue lists it as swappable, only its ERC-20 tokens
  (USDC.e, pathUSD, USDT0, PRIME) route. Its explorer also has a dedicated payment receipt view at
  `https://explore.tempo.xyz/receipt/{txHash}`, alongside the usual `/tx/{txHash}` transaction page.
  And Tempo's `PRIME` is Hastra's liquid-staking receipt for Figure's tokenized HELOC pool, not
  Echelon Prime / Parallel's governance token of the same ticker.
</Note>

Not every venue serves every chain. The router automatically selects venues that can serve a
given route, and it returns `NO_LIQUIDITY` if none can.

## Venues

RAVN aggregates the venues below. On every quote, the venues eligible for that specific route,
never all of them at once, are queried in parallel and the best real output wins:

```mermaid theme={null}
flowchart LR
  Q["POST /quote"] --> R{{"Eligible venues for\nthis route, in parallel"}}
  R --> V1["RFQ market makers"]
  R --> V2["Intent networks"]
  R --> V3["Solver & relayer networks"]
  R --> V4["Validator-vault networks"]
  R --> V5["On-chain DEX aggregators"]
  V1 --> W(["Best real output wins"])
  V2 --> W
  V3 --> W
  V4 --> W
  V5 --> W
```

Most venues return one fixed [execution type](/execution-types); a few return different types
depending on the source chain or execution mode, noted per row below. The `id` column is the
value you'll see in `venue.id` on a quote and `/health`, and what `excludeVenues` takes. Exclude and identify venues by `id`, not `name`: RAVN's own multi-step routes are all named `RAVN` (`venue.id` `compose`, or `relay` for Relay with a DEX on arrival).

| Venue | `id` | Type | Execution | Serves |
| - | - | - | - | - |
| **0x Gasless** | `0x_gasless` | RFQ market maker | `SIGNATURE` | EVM same-chain, ERC-20 input |
| **0x Swap** | `0x_swap` | On-chain DEX aggregator (0x Swap API) | `TRANSACTION` | EVM same-chain, ERC-20 or native input. Reaches Linea, Avalanche, World Chain, Unichain, Monad, HyperEVM, and Tempo as well as the majors |
| **Bebop** | `bebop` | RFQ market maker | `SIGNATURE` or `TRANSACTION` | EVM same-chain |
| **CoW Protocol** | `cow` | Batch auction and RFQ | `SIGNATURE` | EVM same-chain |
| **Nordstern** | `nordstern` | On-chain DEX aggregator | `TRANSACTION` | EVM same-chain, ERC-20 input only: Ethereum, Arbitrum, Base, Optimism, Polygon, BNB Chain, Robinhood |
| **Fly Trade** | `flytrade` | On-chain DEX aggregator | `TRANSACTION` | EVM same-chain, ERC-20 input only: Ethereum, Arbitrum, Base, Optimism, Polygon, BNB Chain, Robinhood. Takes the integrator fee from the *input* token, see [Pricing](/pricing#the-fee-object-on-every-quote) |
| **KyberSwap** | `kyberswap` | On-chain DEX aggregator | `TRANSACTION` | EVM same-chain, ERC-20 input only: Ethereum, Arbitrum, Base, Optimism, Polygon, BNB Chain, Robinhood |
| **OKX DEX** | `okx` | On-chain DEX aggregator | `TRANSACTION` | Same-chain. EVM, ERC-20 input only: Ethereum, Arbitrum, Base, Optimism, Polygon, BNB Chain, Avalanche, Linea, Unichain, zkSync Era, HyperEVM, Monad, Robinhood. Solana, SOL or SPL input. No integrator fee yet: races only on requests with no fee set |
| **Jupiter Ultra** | `jupiter` | On-chain DEX aggregator | `TRANSACTION` | Solana |
| **0x Solana** | `0x_solana` | On-chain DEX aggregator (0x Swap API on Solana) | `TRANSACTION` | Solana same-chain, SOL or SPL on either side. No integrator fee yet: a fee set on your key isn't charged on its fills |
| **Across** | `across` | Intent and solver network | `TRANSACTION` | EVM cross-chain, cross-ecosystem |
| **Relay** | `relay` | Relayer network | `TRANSACTION`, `SIGNATURE`, or `DEPOSIT` | EVM and Solana, same and cross-chain, plus native BTC either direction |
| **Mayan** | `mayan` | Intent and auction | `TRANSACTION` | Same-chain, cross-chain, cross-ecosystem. Takes the integrator fee from the *input* token |
| **NEAR Intents** | `near_intents` | Intent network (1Click) | `DEPOSIT` | Any to any, including native BTC |
| **Eco Routes** | `eco` | Intent network (ERC-7683 vault) | `TRANSACTION` | Stablecoin-to-stablecoin: Ethereum, Optimism, Unichain, Polygon, HyperEVM, Base, Arbitrum, and into Solana (destination only). No integrator fee |
| **Chainflip** | `chainflip` | Validator-vault JIT AMM | `DEPOSIT` | Native BTC ↔ Ethereum, Arbitrum, Solana |
| **THORChain** | `thorchain` | Validator-vault AMM | `TRANSACTION` | Ethereum, Avalanche → native BTC. BTC as the *source* depends on a THORChain network flag, see below |
| **Rift** | `rift` | Route aggregator, picks its route when the deposit lands | `DEPOSIT` | Native BTC ↔ Ethereum, Arbitrum, Base, either direction; also same-chain and cross-chain between those three. **No minimum output**, see below. No integrator fee |
| **Houdini Swap** | `houdini` | Private route through two partner exchanges | `DEPOSIT` | [Private swaps](#private-swaps) only. EVM (Ethereum, BNB Chain, Polygon, Arbitrum, Optimism, Base, Avalanche, zkSync Era, Linea, HyperEVM, Monad) and Solana in any direction, plus native BTC as the destination only. About \$25 minimum. No integrator fee |
| **Layerswap** | `layerswap` | 1:1 wrap | `DEPOSIT` | Native BTC ↔ WBTC on Ethereum, Base, Unichain, or Monad, and only when WBTC is the token the user asked for. Reports on `/health`, but as of this writing does not yet enter quote races in production. No integrator fee |

<Note>
  Every venue delivers the asset the user asked for, never a wrapped copy. The one wrap in the
  list, Layerswap, exists only for pairs where WBTC itself is the requested output. RAVN runs no
  bridge of its own. NEAR Intents moves coins in and out through its own bridge, so on its routes
  the deposit is held as a matching token on NEAR for the minutes the swap takes. RFQ and gasless
  venues let the user swap with zero native gas, because they sign an off-chain message and a
  solver covers the gas.
</Note>

<Note>
  **THORChain with BTC as the source** requires THORChain's *memoless* feature, which THORChain can
  disable network-wide with its `HALTMEMOLESS` flag, and currently has. RAVN checks that flag on
  every quote and simply leaves THORChain out of the race while it is set, so you never receive a
  quote that cannot execute.

  This changes nothing you need to handle: **selling BTC still works**, because Chainflip, Relay
  and NEAR Intents all serve it and keep competing. THORChain sending funds *to* native BTC is
  unaffected either way: that path uses an ordinary memo with no registration.
</Note>

<Note>
  **Rift enforces no minimum output.** It picks its route and rate when the deposit lands, so the
  user can receive more or less than quoted. Its quotes carry `slippage.noMinimum: true`: show
  that to the user before they send. Rift races only when you leave `slippageBps` out (Auto); a
  request with its own slippage limit never gets a Rift quote.
</Note>

### Private swaps

Set `confidential: true` on [`/quote`](/api-reference/quote) and the race narrows to the venues
with a private settlement path, NEAR Intents (Confidential Intents) and Houdini Swap, so the
deposit and the payout can't be linked on-chain. You get `NO_LIQUIDITY` rather than a public fill
if neither can quote. Houdini Swap only ever races on these requests. It settles through two of
its partner exchanges in turn, which hold the funds for the minutes to an hour the swap takes,
and prices about 3% below spot, so it usually wins only where NEAR Intents can't quote. See
`confidential` on [`/quote`](/api-reference/quote) for its compliance rules.

### Settlement models

<CardGroup cols={2}>
  <Card title="RFQ market makers" icon="handshake">
    Professional market makers quote a firm, signed price. The user signs and a solver settles.
    Zero slippage, zero gas.
  </Card>

  <Card title="Intent networks" icon="wand-magic-sparkles">
    The user expresses an intent, or deposits the origin asset, and solvers compete to fill and
    deliver on the destination.
  </Card>

  <Card title="Solver and relayer networks" icon="bolt">
    Relayers fill on the destination chain and deliver the canonical asset. This gives fast
    cross-chain execution without bridging.
  </Card>

  <Card title="Validator-vault networks" icon="vault">
    A decentralized, threshold-signed validator network custodies a deposit channel and swaps
    against its own AMM or vault liquidity. No single custodian ever holds the funds.
  </Card>

  <Card title="On-chain DEX aggregators" icon="route">
    One transaction the user signs and broadcasts, routed across on-chain pools by the
    aggregator's own router. Same-chain only. The transaction hash is the swap's settlement
    proof, so you report it to [`/status`](/api-reference/status#settlement) yourself.
  </Card>
</CardGroup>

Coverage grows over time. The [`/health`](/api-reference/health) endpoint always reports the
current live venue set.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.