Skip to content

Liquidity providers ​

26 aggregator classes exist in swap-sdk; 21 are registered in TradeManager's constructor. Registration is the only authority on what is live.

This table is a snapshot

Providers get commented out in-place when their upstream API breaks. Read swap-sdk/src/index.ts for current state; counting files in src/aggregators/ overstates coverage.

Registered providers ​

ProviderEnumSwapBridgeProxiedNotes
1inchone_inchyes—yesExcluded from the default swap fan-out. ONE_INCH_KEY, referrer 0x5222…1D35
KyberSwapkyber_swapyes—no
OpenOceanopen_oceanyes—yesExcluded from both default lists. Also supplies gas prices via Base.getGasPrice
UnizenunizenyesyesyesUNIZEN_API_KEY. Own supported-chain subset (ChainIdUnizen)
SushiSwapsushiswapyes—no
Odosodosyes—yesTransaction-data endpoint 500s intermittently
OKXokxyes—yes
Uniswapuniswapyes—yesUNISWAP_API_KEY
LiFilifiyesyesnoA meta-aggregator itself
Symbiosissymbiosis—yesnoExcluded from the default swap list
Squid Routersquid_routeryesyesyesAxelar-based. Integrator id blazpay-db534a27-…
Acrossacross—yesnoUsually fastest for supported pairs
RelayrelayyesyesyesIntent solver — see the caveat below
Butter Networkbutter_networkyesyesnoExcluded from the default bridge list
NordsternnordsternyesyesnoIntent solver — calldata selector 0x57f96440…
Near 1Clicknear_1click—yesyesNEAR intents
GasZipgas_zip—yesyesSmall native top-ups to a fresh chain
RhinoFirhino_fi—yesyesMulti-step: quote → commit → calldata
RangorangoyesyesnoMeta-aggregator
deBridgedebridge—yesno
XY Financexy_financeyesyesno
Houdinihoudini—yesnoPrivacy-oriented

Not registered ​

ProviderEnumWhy
Router Protocol / NitronitroMainnet pathfinder hostnames retired — api-beta.pathfinder.routerprotocol.com is NXDOMAIN
IceCreamSwapicecream_swapaggregator.icecreamswap.com returns 404; endpoint appears removed
Kimakimakima.blazpay.com origin down (Cloudflare 520)
ChangeNowchange_nowCommented out

Kima is the template for self-broadcasting providers

Its aggregator returns tx: null because Kima submits server-side. The frontend records the returned id and polls getTxStatus. Any future provider that broadcasts itself should follow this shape — tx: null plus a metaData payload, and a dedicated sendTransaction<Provider> branch rather than the relayer path.

Default exclusions ​

Set in bz-backend/services/swap.service.js. The frontend can override.

ListMembersRationale
excludeSwapsymbiosis, one_inch, open_ocean (+ icecream_swap on Polygon)Bridge-oriented or poor same-chain pricing
excludeBridgeicecream_swap, one_inch, butter_network, open_oceanSame-chain only, or excluded by choice

Backend proxy endpoints ​

Providers needing a secret key or a registered referrer go through bz-backend, so nothing key-bearing ships in a browser bundle.

ProviderEndpointsController
1inchPOST /defi/1inch, POST /defi/1inch/getspenderoneinch.js
OpenOceanPOST /defi/openoceanopenocean.js
UnizenPOST /defi/unizen/{quotes,swap,spender}unizen.controller.js
SquidPOST /defi/squidrouter, GET /defi/squidrouter/statussquidRouter.js
OdosPOST /defi/odos/{quote,assemble}odos.js
AcrossGET /defi/across/{quote,status}across.js
Near 1ClickGET /defi/near-1click/tokens, POST /quote, GET /statusnear1click.js
RelayPOST /defi/relay/quote, GET /defi/relay/statusrelay.js
GasZipGET /defi/gas-zip/{quote,status}gaszip.js
RhinoFiPOST /defi/rhino/quote, POST /commit/:quoteId, GET /calldata/:commitmentId, POST /deposit-addresses, GET /deposit-addresses/:addr/:chainrhino.js
OKXGET /defi/okx/{quote,swap,approve-transaction}okx.js
UniswapPOST /defi/uniswap/{quote,swap}uniswap.js
ChangeNowPOST /defi/change-now/{quotes,swap}changeNow.js
ChangellyPOST /defi/changelly, POST /defi/changelly/transactionchangelly.js

Full request/response detail: provider proxies.

Direct-call providers ​

Called straight from the SDK with no proxy: LiFi, Butter, KyberSwap, Symbiosis, Nordstern, SushiSwap, Rango, deBridge, XY Finance, Houdini — plus the disabled Nitro and IceCream.

Intent solvers — read before using in automation ​

Relay and Nordstern deliver zero output in-transaction

Both are intent/solver based: they take the input and a solver fills the order moments later, outside the transaction.

That is fine for an interactive bridge, where the user watches a status poll. It is unusable for automation — the DCA and Autopilot vaults measure the balance delta inside the transaction, see zero, and revert with OutputBelowMinimum.

The execution engine's route probe filters them out by simulating each candidate with estimateGas before selection. Nordstern's giveaway is a 0x57f96440… selector; Relay's is token-transfer calldata.

Status endpoints ​

routers in swap-sdk/src/utils/constants.ts maps each aggregator to its status API URL. getTxStatus(chainId, hash) on each aggregator returns:

ts
{ status: 'pending' | 'success' | 'failed', hash }

Consumed by GET /defi/txn/:walletAddress and bridgeStatusCron.js.

Fiat ramps ​

A separate category — not in the AGGREGATORS enum, quoted through services/buy.js.

ProviderStrengthController
OnRamp.moneyIndia — INR via UPI, IMPS, bankonRampController.js
ChangellyBroad fiat + instant crypto-to-cryptochangelly.js, changellyFiat.js
AlchemyPayGlobal cards, strong APACalchemyController.js
TransakGlobal cards and banktransak.js
MoonPayGlobal cardsmoonPay.js

See buy / sell and fiat API.

Other external venues ​

VenueProductIntegration
Orderly NetworkPerpetualsorderlyController.js, ed25519 request signing
iZiSwapSpot limit orders — unshippediziswap-sdk in defi-dex
HyperliquidCopy trading — not builtExternal copytrade-agent repo
Qube / QubeticsChain-specific bridgequbeBridge.controller.js, POST /defi/bridge/qube
ZeroDevdApp builder smart accounts@zerodev/*, permissionless

Counting honestly ​

ClaimDefensible?
"26 providers integrated"Yes — 26 aggregator classes exist
"21 live liquidity providers"Yes at time of writing — count the registrations
"20+ providers"Yes, and drift-proof
"25 providers live"No

Marketing materials have said "14", which is badly understated, and other numbers that are overstated. The PROOF_POINTS block in chainSeo.mjs uses 21.

Adding a provider ​

Checklist: add a liquidity provider. There is also a self-contained integration guide in the SDK repo at swap-sdk/INTEGRATION_GUIDE.md.

Internal + developer documentation. Usage figures are point-in-time snapshots — re-verify before publishing them.