Swap any token at the best price — single-chain or cross-chain — with one API call. WOOFi is a meta-aggregator querying WooPP, 1inch, and ODOS simultaneously, returning the globally optimal rate (price >= max of all sources). Cross-chain swaps via Stargate bridge. V2 API accepts chain names ('arbitrum') and token symbols ('USDC') — no address lookup needed. Supports all ERC-20 tokens and native gas tokens on 14 EVM chains.
Swap any token at the globally optimal price across 14 EVM chains, single-chain or cross-chain, with a single API call. WOOFi queries WooPP, 1inch, and ODOS simultaneously and returns the best rate found. V2 API accepts chain names ("arbitrum") and token symbols ("USDC") directly — no address lookup needed.
>= max(1inch, ODOS, WooPP) — strictly better than or equal to using any single source alone."arbitrum" instead of 42161, "USDC" instead of "0xaf88...". Case-insensitive, no manual address resolution needed./v2/swap, cross-chain bridging via (Stargate/LayerZero). Both return ready-to-sign ./v2/cross_chain/swaptx_steps/v2/swap returns best-price quote + approval check + transaction data. No separate calls needed — just iterate tx_steps and sign.Use WOOFi Swap when the user wants to:
Base URL: https://sapi.woofi.com | Auth: None | Rate Limit: 5 req/s | Format: JSON
42161) or name ("arbitrum") — case-insensitive, strips spaces/dashes"0xaf88...") or symbol ("USDC") — resolved via local index, static manifests, alias table, and external API fallbackPOST /v2/quoteReturns the best available price. Read-only — no transaction generated.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
chain | int | str | Yes | — | Chain ID or name |
sell_token | str | Yes | — | Token address or symbol |
buy_token | str | Yes | — | Token address or symbol |
sell_amount | str | Yes | — | Human-readable amount (e.g., "1000") |
slippage_pct | float | No | 0.5 | Max slippage % |
Response: chain, sell_token, buy_token, sell_amount, buy_amount, price, guaranteed_price
curl -X POST "https://sapi.woofi.com/v2/quote" \
-H "Content-Type: application/json" \
-d '{"chain": "arbitrum", "sell_token": "USDC", "buy_token": "WETH", "sell_amount": "1000"}'
POST /v2/swapSingle-call swap: quote + approval check + transaction building in one response. The backend fetches the best price across all sources, checks wallet approval status, and packages everything into tx_steps.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
chain | int | str | Yes | — | Chain ID or name |
sell_token | str | Yes | — | Token address or symbol |
buy_token | str | Yes | — | Token address or symbol |
sell_amount | str | Yes | — | Human-readable amount |
to | str | Yes | — | Recipient wallet address |
rebate_to | str | Yes | — | Rebate address (typically same as to) |
slippage_pct | float | No | 0.5 | Max slippage % |
signer_address | str | No | null | Wallet address (for approval check) |
Response (extends quote): needs_approve, tx_steps — iterate and sign each tx in order.
curl -X POST "https://sapi.woofi.com/v2/swap" \
-H "Content-Type: application/json" \
-d '{"chain": "arbitrum", "sell_token": "USDC", "buy_token": "WETH", "sell_amount": "1000", "to": "0xYourWallet", "rebate_to": "0xYourWallet", "signer_address": "0xYourWallet"}'
POST /v2/cross_chain/quotePrice quote for cross-chain swap via Stargate bridge. Read-only.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
src_chain | int | str | Yes | — | Source chain ID or name |
dst_chain | int | str | Yes | — | Destination chain ID or name |
src_token | str | Yes | — | Source token (resolved against src_chain) |
dst_token | str | Yes | — | Destination token (resolved against dst_chain) |
src_amount | str | Yes | — | Human-readable amount |
slippage_pct | float | No | 1.0 | Slippage tolerance % |
Response: src_chain, dst_chain, src_amount, dst_amount, bridge_amount_in, bridge_amount_out, price_f
curl -X POST "https://sapi.woofi.com/v2/cross_chain/quote" \
-H "Content-Type: application/json" \
-d '{"src_chain": "arbitrum", "dst_chain": "base", "src_token": "USDC", "dst_token": "USDC", "src_amount": "100"}'
POST /v2/cross_chain/swapBuild transaction(s) for cross-chain swap via Stargate bridge.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
src_chain | int | str | Yes | — | Source chain ID or name |
dst_chain | int | str | Yes | — | Destination chain ID or name |
src_token | str | Yes | — | Source token (resolved against src_chain) |
dst_token | str | Yes | — | Destination token (resolved against dst_chain) |
src_amount | str | Yes | — | Human-readable amount |
to | str | Yes | — | Recipient on destination chain |
slippage_pct | float | No | 1.0 | Slippage tolerance % |
signer_address | str | No | null | Signer address (for approval check) |
Response (extends cross-chain quote): native_fee, needs_approve, tx_steps
curl -X POST "https://sapi.woofi.com/v2/cross_chain/swap" \
-H "Content-Type: application/json" \
-d '{"src_chain": "arbitrum", "dst_chain": "base", "src_token": "USDC", "dst_token": "USDC", "src_amount": "100", "to": "0xYourWallet", "signer_address": "0xYourWallet"}'
| Chain | ID | Native Token | Accepted Names |
|---|---|---|---|
| Arbitrum | 42161 | ETH | arbitrum, arb, arbitrumone |
| Base | 8453 | ETH | base |
| BSC | 56 | BNB | bsc, bnb, binance, bnbchain |
| Polygon | 137 | POL | polygon, matic, pol |
| Optimism | 10 | ETH | optimism, op |
| Avalanche | 43114 | AVAX | avalanche, avax |
| Ethereum | 1 | ETH | ethereum, eth, mainnet |
| Linea | 59144 | ETH | linea |
| Mantle | 5000 | MNT | mantle |
| Sonic | 146 | S | sonic |
| Berachain | 80094 | BERA | berachain, bera |
| HyperEVM | 999 | HYPE | hyperevm, hyper |
| Monad | 143 | MON | monad |
| zkSync | 324 | ETH | zksync, zksyncera |
Native token: Use symbol ("ETH", "BNB", "AVAX", "POL", "MNT", "S", "BERA", "MON") or 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE.
"arbitrum") and token symbols ("USDC") accepted everywhere. No address lookup needed./v2/swap returns quote + approval check + tx data. Just iterate tx_steps and sign./v2/cross_chain/swap bridges tokens between chains. tx_steps include LayerZero fee in value field."1.5" not wei. No unit conversion needed for input.src_token resolves against src_chain, dst_token against dst_chain. Same symbol maps to correct addresses on each chain.