GET /catalog is the only source of truth for them. This page explains how to read
what the catalog returns, and the formats every chain, asset and address takes on the wire.
Fetch, don’t hard-code
GET /v1/catalog is open to your project id as well as to your
secret key, so a page’s pickers render before your user signs in to anything. It is built once at
boot from configuration and changes only on restart, so cache it for the life of the page or the
process. The external aggregator lanes are not listed: quoting is their discovery mechanism.
Chain domains
A chain is named by its chain domain, the stringsourceChain, destChain and every on-chain
route take (Conventions — value formats):
The c8ntinuum networks map to these domains:
The Solana cluster’s domain is whatever the deployment’s catalog declares — read it from the
chainDomain of the row whose family is solana rather than assuming a name. The samples in
this reference use solana-localnet.Reading a chain row
chains[] is sorted by domain. Each row:
How to read it:
familydecides the rail. It tells you how the user signs and which lanes can serve the chain (Families and lanes below).nativeKeypresent means the native coin can be a source: quote it under that key (never key onuserProxy). Absent means the native coin is a destination only.wrappedKeyis what the escrow holds on the native-coin lane, and what a refund returns — never the native coin itself (Refunds).swapRouterpresent means an undeclared token is accepted as a source through the token-in lane; on any other chain an undeclared source isEIN0002.inputSettlers[]are the escrows. Before sending a refund, verify the settler you were handed is one of them.
Reading an asset row
assets[] is sorted by chain then key. Each row:
sourceAssetanddestAssettake either the asset key (weth) or the asset reference<chainDomain>:<address>. A bare0xaddress is refused. A reference to a declared asset behaves exactly as its key.native: trueis the zero address. It receives fills and cannot fund an escrow directly: offer it as a destination, or as a source only where the chain row has anativeKey.
Families and lanes
- EVM. The Permit2 gasless escrow (
oif-escrow-gasless: the user signs, the solver pays gas), the two proxy lanes (oif-wrap-nativefor the native coin,oif-swap-tokenfor an undeclared token on a chain with aswapRouter: the user sends a transaction) and the external EIP-3009 gasless lane (aggregator-gasless). - Solana. The ed25519 escrow (
oif-escrow-nonevm: the user signs, the solver pays gas). Solana serves as a source and as a destination. Everything Solana-specific: Solana support. - Sui and Aptos. Source chains are EVM and Solana. Sui and Aptos are supported as destination
chains only: a quote whose source is a Sui or Aptos chain is refused. The catalog’s
familytells you which rail a chain is on.
The full table, with the product ids and which route submits each lane:
Step execution — the lanes.
Address formats
recipient is spelled in the destination chain’s family and sourceAccount in the
source chain’s family. A non-EVM recipient or sourceAccount that does not decode is
EIN0001 naming the field; an EVM address is not format-checked at that point.
Contract addresses
Permit2 at0x000000000022D473030F116dDEE9F6B43aC78BA3 is the only fixed address: it is the
verifyingContract of every EVM gasless signPayload. Every other contract — userProxy,
swapRouter and the inputSettlers — is per chain and per deployment: read them from the catalog
rather than copying them from a sample. The catalog sample on the
route page is illustrative.